From 0feb72f00052bc8ad59afb8bb191635f495edb21 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 20 Dec 2011 21:42:12 +0100 Subject: [PATCH] wined3d: Handle client storage in surface_remove_pbo(). --- dlls/wined3d/surface.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 48d271f5615..b658832cf84 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -1766,9 +1766,14 @@ static void surface_remove_pbo(struct wined3d_surface *surface, const struct win { surface->resource.allocatedMemory = surface->dib.bitmap_data; } - else if (!surface->resource.heapMemory) + else { - surface->resource.heapMemory = HeapAlloc(GetProcessHeap(), 0, surface->resource.size + RESOURCE_ALIGNMENT); + if (!surface->resource.heapMemory) + surface->resource.heapMemory = HeapAlloc(GetProcessHeap(), 0, surface->resource.size + RESOURCE_ALIGNMENT); + else if (!(surface->flags & SFLAG_CLIENT)) + ERR("Surface %p has heapMemory %p and flags %#x.\n", + surface, surface->resource.heapMemory, surface->flags); + surface->resource.allocatedMemory = (BYTE *)(((ULONG_PTR)surface->resource.heapMemory + (RESOURCE_ALIGNMENT - 1)) & ~(RESOURCE_ALIGNMENT - 1)); } -- 2.11.4.GIT