[PATCH 3/5] wined3d: Handle client storage in surface_remove_pbo().
Henri Verbeet
hverbeet at codeweavers.com
Tue Dec 20 14:42:12 CST 2011
---
dlls/wined3d/surface.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 48d271f..b658832 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));
}
--
1.7.3.4
More information about the wine-patches
mailing list