static ULONG STDMETHODCALLTYPE d3d10_pixel_shader_Release(ID3D10PixelShader *iface) { struct d3d10_pixel_shader *This = (struct d3d10_pixel_shader *)iface; ULONG refcount = InterlockedDecrement(&This->refcount); TRACE("%p decreasing refcount to %u\n", This, refcount); if (!refcount) wined3d_shader_decref(This->wined3d_shader); return refcount; }
static ULONG STDMETHODCALLTYPE d3d10_geometry_shader_Release(ID3D10GeometryShader *iface) { struct d3d10_geometry_shader *This = impl_from_ID3D10GeometryShader(iface); ULONG refcount = InterlockedDecrement(&This->refcount); TRACE("%p decreasing refcount to %u\n", This, refcount); if (!refcount) wined3d_shader_decref(This->wined3d_shader); return refcount; }
static ULONG STDMETHODCALLTYPE d3d10_pixel_shader_Release(ID3D10PixelShader *iface) { struct d3d10_pixel_shader *This = impl_from_ID3D10PixelShader(iface); ULONG refcount = InterlockedDecrement(&This->refcount); TRACE("%p decreasing refcount to %u\n", This, refcount); if (!refcount) { ID3D10Device1 *device = This->device; wined3d_shader_decref(This->wined3d_shader); /* Release the device last, it may cause the wined3d device to be * destroyed. */ ID3D10Device1_Release(device); } return refcount; }
static ULONG WINAPI d3d9_vertexshader_Release(IDirect3DVertexShader9 *iface) { IDirect3DVertexShader9Impl *shader = impl_from_IDirect3DVertexShader9(iface); ULONG refcount = InterlockedDecrement(&shader->ref); TRACE("%p decreasing refcount to %u.\n", iface, refcount); if (!refcount) { IDirect3DDevice9Ex *device = shader->parentDevice; wined3d_mutex_lock(); wined3d_shader_decref(shader->wined3d_shader); wined3d_mutex_unlock(); /* Release the device last, as it may cause the device to be destroyed. */ IDirect3DDevice9Ex_Release(device); } return refcount; }
static ULONG STDMETHODCALLTYPE d3d11_pixel_shader_Release(ID3D11PixelShader *iface) { struct d3d_pixel_shader *shader = impl_from_ID3D11PixelShader(iface); ULONG refcount = InterlockedDecrement(&shader->refcount); TRACE("%p decreasing refcount to %u.\n", shader, refcount); if (!refcount) { ID3D11Device *device = shader->device; wined3d_mutex_lock(); wined3d_shader_decref(shader->wined3d_shader); wined3d_mutex_unlock(); /* Release the device last, it may cause the wined3d device to be * destroyed. */ ID3D11Device_Release(device); } return refcount; }