Module: wine Branch: master Commit: 82666af87aaf51d2b8cf648b6d6c85154d45e346 URL: http://source.winehq.org/git/wine.git/?a=commit;h=82666af87aaf51d2b8cf648b6d...
Author: Stefan Dösinger stefan@codeweavers.com Date: Tue Jan 7 22:12:14 2014 +0100
wined3d: Simplify wined3d_surface_set_mem.
---
dlls/wined3d/surface.c | 61 ++++++++++++++---------------------------------- 1 file changed, 18 insertions(+), 43 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 7b96a21..9b9e245 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -2619,54 +2619,29 @@ HRESULT CDECL wined3d_surface_set_mem(struct wined3d_surface *surface, void *mem return WINED3DERR_INVALIDCALL; }
- if (mem && mem != surface->user_memory) + if (surface->flags & SFLAG_DIBSECTION) { - /* Do I have to copy the old surface content? */ - if (surface->flags & SFLAG_DIBSECTION) - { - DeleteDC(surface->hDC); - DeleteObject(surface->dib.DIBsection); - surface->dib.bitmap_data = NULL; - surface->resource.allocatedMemory = NULL; - surface->hDC = NULL; - surface->flags &= ~SFLAG_DIBSECTION; - } - else if (!(surface->flags & SFLAG_USERPTR)) - { - wined3d_resource_free_sysmem(&surface->resource); - surface->resource.allocatedMemory = NULL; - } - surface->user_memory = mem; - surface->flags |= SFLAG_USERPTR; - - /* Now the surface memory is most up do date. Invalidate drawable and texture. */ - surface_validate_location(surface, SFLAG_INSYSMEM); - surface_invalidate_location(surface, ~SFLAG_INSYSMEM); - - /* For client textures OpenGL has to be notified. */ - if (surface->flags & SFLAG_CLIENT) - surface_release_client_storage(surface); + DeleteDC(surface->hDC); + DeleteObject(surface->dib.DIBsection); + surface->dib.bitmap_data = NULL; + surface->resource.allocatedMemory = NULL; + surface->hDC = NULL; + surface->flags &= ~SFLAG_DIBSECTION; } - else if (surface->flags & SFLAG_USERPTR) + else if (!(surface->flags & SFLAG_USERPTR)) { - /* heap_memory should be NULL already. */ - if (surface->resource.heap_memory) - ERR("User pointer surface has heap memory allocated.\n"); - - if (!mem) - { - surface->user_memory = NULL; - surface->flags &= ~(SFLAG_USERPTR | SFLAG_INSYSMEM); - - if (surface->flags & SFLAG_CLIENT) - surface_release_client_storage(surface); + wined3d_resource_free_sysmem(&surface->resource); + surface->resource.allocatedMemory = NULL; + }
- surface_prepare_system_memory(surface); - } + surface->user_memory = mem; + surface->flags |= SFLAG_USERPTR; + surface_validate_location(surface, SFLAG_INSYSMEM); + surface_invalidate_location(surface, ~SFLAG_INSYSMEM);
- surface_validate_location(surface, SFLAG_INSYSMEM); - surface_invalidate_location(surface, ~SFLAG_INSYSMEM); - } + /* For client textures OpenGL has to be notified. */ + if (surface->flags & SFLAG_CLIENT) + surface_release_client_storage(surface);
surface->pitch = pitch;