mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
app/internal/windows,app/internal/d3d11: ensure error is returned
d3d11Context.Present would return a nil error if the underlying error d3d11.ErrorCode. While here, use defer for a resource cleanup. Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -258,19 +258,19 @@ func NewBackend(d *Device) (*Backend, error) {
|
||||
caps.MaxTextureSize = 4096
|
||||
}
|
||||
b := &Backend{dev: d, caps: caps}
|
||||
// Enable depth mask to match OpenGL.
|
||||
b.depthState.mask = true
|
||||
// Disable backface culling to match OpenGL.
|
||||
state, err := b.dev.dev.CreateRasterizerState(&_D3D11_RASTERIZER_DESC{
|
||||
CullMode: _D3D11_CULL_NONE,
|
||||
FillMode: _D3D11_FILL_SOLID,
|
||||
DepthClipEnable: 1,
|
||||
})
|
||||
// Enable depth mask to match OpenGL.
|
||||
b.depthState.mask = true
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer _IUnknownRelease(unsafe.Pointer(state), state.vtbl.Release)
|
||||
b.dev.ctx.RSSetState(state)
|
||||
_IUnknownRelease(unsafe.Pointer(state), state.vtbl.Release)
|
||||
return b, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -46,18 +46,20 @@ func (c *d3d11Context) Backend() (backend.Device, error) {
|
||||
}
|
||||
|
||||
func (c *d3d11Context) Present() error {
|
||||
if err := c.swchain.Present(); err != nil {
|
||||
if err, ok := err.(d3d11.ErrorCode); ok {
|
||||
switch err.Code {
|
||||
case d3d11.DXGI_STATUS_OCCLUDED:
|
||||
// Ignore
|
||||
return nil
|
||||
case d3d11.DXGI_ERROR_DEVICE_RESET, d3d11.DXGI_ERROR_DEVICE_REMOVED, d3d11.D3DDDIERR_DEVICEREMOVED:
|
||||
return ErrDeviceLost
|
||||
}
|
||||
err := c.swchain.Present()
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
if err, ok := err.(d3d11.ErrorCode); ok {
|
||||
switch err.Code {
|
||||
case d3d11.DXGI_STATUS_OCCLUDED:
|
||||
// Ignore
|
||||
return nil
|
||||
case d3d11.DXGI_ERROR_DEVICE_RESET, d3d11.DXGI_ERROR_DEVICE_REMOVED, d3d11.D3DDDIERR_DEVICEREMOVED:
|
||||
return ErrDeviceLost
|
||||
}
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *d3d11Context) MakeCurrent() error {
|
||||
|
||||
Reference in New Issue
Block a user