static ULONG WINAPI d3d8_surface_AddRef(IDirect3DSurface8 *iface) { struct d3d8_surface *surface = impl_from_IDirect3DSurface8(iface); ULONG refcount; TRACE("iface %p.\n", iface); if (surface->texture) { TRACE("Forwarding to %p.\n", surface->texture); return IDirect3DBaseTexture8_AddRef(&surface->texture->IDirect3DBaseTexture8_iface); } refcount = InterlockedIncrement(&surface->resource.refcount); TRACE("%p increasing refcount to %u.\n", iface, refcount); if (refcount == 1) { if (surface->parent_device) IDirect3DDevice8_AddRef(surface->parent_device); wined3d_mutex_lock(); if (surface->wined3d_rtv) wined3d_rendertarget_view_incref(surface->wined3d_rtv); wined3d_texture_incref(surface->wined3d_texture); wined3d_mutex_unlock(); } return refcount; }
static ULONG volume_resource_incref(struct wined3d_resource *resource) { struct wined3d_volume *volume = volume_from_resource(resource); TRACE("Forwarding to container %p.\n", volume->container); return wined3d_texture_incref(volume->container); }
static ULONG STDMETHODCALLTYPE d3d10_texture2d_AddRef(ID3D10Texture2D *iface) { struct d3d10_texture2d *This = impl_from_ID3D10Texture2D(iface); ULONG refcount = InterlockedIncrement(&This->refcount); TRACE("%p increasing refcount to %u\n", This, refcount); if (refcount == 1) wined3d_texture_incref(This->wined3d_texture); return refcount; }
static ULONG STDMETHODCALLTYPE d3d10_texture3d_AddRef(ID3D10Texture3D *iface) { struct d3d10_texture3d *texture = impl_from_ID3D10Texture3D(iface); ULONG refcount = InterlockedIncrement(&texture->refcount); TRACE("%p increasing refcount to %u.\n", texture, refcount); if (refcount == 1) wined3d_texture_incref(texture->wined3d_texture); return refcount; }
ULONG CDECL wined3d_volume_incref(struct wined3d_volume *volume) { ULONG refcount; if (volume->container) { TRACE("Forwarding to container %p.\n", volume->container); return wined3d_texture_incref(volume->container); } refcount = InterlockedIncrement(&volume->resource.ref); TRACE("%p increasing refcount to %u.\n", volume, refcount); return refcount; }
static ULONG STDMETHODCALLTYPE d3d11_texture2d_AddRef(ID3D11Texture2D *iface) { struct d3d_texture2d *texture = impl_from_ID3D11Texture2D(iface); ULONG refcount = InterlockedIncrement(&texture->refcount); TRACE("%p increasing refcount to %u.\n", texture, refcount); if (refcount == 1) { ID3D11Device_AddRef(texture->device); wined3d_mutex_lock(); wined3d_texture_incref(texture->wined3d_texture); wined3d_mutex_unlock(); } return refcount; }
static ULONG WINAPI IDirect3DVolumeTexture8Impl_AddRef(IDirect3DVolumeTexture8 *iface) { IDirect3DVolumeTexture8Impl *This = impl_from_IDirect3DVolumeTexture8(iface); ULONG ref = InterlockedIncrement(&This->ref); TRACE("%p increasing refcount to %u.\n", iface, ref); if (ref == 1) { IDirect3DDevice8_AddRef(This->parentDevice); wined3d_mutex_lock(); wined3d_texture_incref(This->wined3d_texture); wined3d_mutex_unlock(); } return ref; }
static ULONG WINAPI d3d8_texture_3d_AddRef(IDirect3DVolumeTexture8 *iface) { struct d3d8_texture *texture = impl_from_IDirect3DVolumeTexture8(iface); ULONG ref = InterlockedIncrement(&texture->refcount); TRACE("%p increasing refcount to %u.\n", iface, ref); if (ref == 1) { IDirect3DDevice8_AddRef(texture->parent_device); wined3d_mutex_lock(); wined3d_texture_incref(texture->wined3d_texture); wined3d_mutex_unlock(); } return ref; }
static ULONG WINAPI d3d8_texture_2d_AddRef(IDirect3DTexture8 *iface) { struct d3d8_texture *texture = impl_from_IDirect3DTexture8(iface); ULONG ref = InterlockedIncrement(&texture->resource.refcount); TRACE("%p increasing refcount to %u.\n", iface, ref); if (ref == 1) { struct d3d8_surface *surface; IDirect3DDevice8_AddRef(texture->parent_device); wined3d_mutex_lock(); LIST_FOR_EACH_ENTRY(surface, &texture->rtv_list, struct d3d8_surface, rtv_entry) { wined3d_rendertarget_view_incref(surface->wined3d_rtv); } wined3d_texture_incref(texture->wined3d_texture); wined3d_mutex_unlock(); } return ref; }
ULONG CDECL wined3d_volume_incref(struct wined3d_volume *volume) { TRACE("Forwarding to container %p.\n", volume->container); return wined3d_texture_incref(volume->container); }
static ULONG texture_resource_incref(struct wined3d_resource *resource) { return wined3d_texture_incref(wined3d_texture_from_resource(resource)); }