diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 2695a0c260e..38d2d882144 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -31,6 +31,7 @@ static struct ddraw_surface *unsafe_impl_from_IDirectDrawSurface3(IDirectDrawSur static const struct wined3d_parent_ops ddraw_surface_wined3d_parent_ops; static const struct wined3d_parent_ops ddraw_texture_wined3d_parent_ops; +static const struct wined3d_parent_ops ddraw_view_wined3d_parent_ops; static inline struct ddraw_surface *impl_from_IDirectDrawGammaControl(IDirectDrawGammaControl *iface) { @@ -1340,7 +1341,7 @@ static void ddraw_texture_rename_to(struct ddraw_texture *dst_texture, struct wi current_rtv = wined3d_device_context_get_rendertarget_view(dst_surface->ddraw->immediate_context, 0); if (current_rtv == dst_surface->wined3d_rtv) wined3d_device_context_set_rendertarget_views(dst_surface->ddraw->immediate_context, 0, 1, &rtv, FALSE); - wined3d_rendertarget_view_set_parent(rtv, dst_surface); + wined3d_rendertarget_view_set_parent(rtv, dst_surface, &ddraw_view_wined3d_parent_ops); dst_surface->wined3d_rtv = rtv; if (dst_surface->sub_resource_idx) diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index 11f099b7ec5..9d62c4a5089 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -414,11 +414,13 @@ void * CDECL wined3d_rendertarget_view_get_sub_resource_parent(const struct wine return texture->sub_resources[view->sub_resource_idx].parent; } -void CDECL wined3d_rendertarget_view_set_parent(struct wined3d_rendertarget_view *view, void *parent) +void CDECL wined3d_rendertarget_view_set_parent(struct wined3d_rendertarget_view *view, + void *parent, const struct wined3d_parent_ops *parent_ops) { - TRACE("view %p, parent %p.\n", view, parent); + TRACE("view %p, parent %p, parent_ops %p.\n", view, parent, parent_ops); view->parent = parent; + view->parent_ops = parent_ops; } struct wined3d_resource * CDECL wined3d_rendertarget_view_get_resource(const struct wined3d_rendertarget_view *view) diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 300fc2978da..8560c1a1bb6 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -188,7 +188,7 @@ @ cdecl wined3d_rendertarget_view_get_resource(ptr) @ cdecl wined3d_rendertarget_view_get_sub_resource_parent(ptr) @ cdecl wined3d_rendertarget_view_incref(ptr) -@ cdecl wined3d_rendertarget_view_set_parent(ptr ptr) +@ cdecl wined3d_rendertarget_view_set_parent(ptr ptr ptr) @ cdecl wined3d_resource_get_desc(ptr ptr) @ cdecl wined3d_resource_get_parent(ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 9dd6352f599..0e921a9a6ad 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2695,7 +2695,8 @@ void * __cdecl wined3d_rendertarget_view_get_parent(const struct wined3d_rendert struct wined3d_resource * __cdecl wined3d_rendertarget_view_get_resource(const struct wined3d_rendertarget_view *view); void * __cdecl wined3d_rendertarget_view_get_sub_resource_parent(const struct wined3d_rendertarget_view *view); ULONG __cdecl wined3d_rendertarget_view_incref(struct wined3d_rendertarget_view *view); -void __cdecl wined3d_rendertarget_view_set_parent(struct wined3d_rendertarget_view *view, void *parent); +void __cdecl wined3d_rendertarget_view_set_parent(struct wined3d_rendertarget_view *view, + void *parent, const struct wined3d_parent_ops *parent_ops); HRESULT __cdecl wined3d_sampler_create(struct wined3d_device *device, const struct wined3d_sampler_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_sampler **sampler);