[PATCH 6/6] wined3d: Only set SFLAG_DYNLOCK when map_binding = sysmem.

Stefan Dösinger stefan at codeweavers.com
Fri Jan 17 06:27:18 CST 2014


All other map bindings are never freed. Setting SFLAG_DYNLOCK if
map_binding != sysmem might only keep a heap memory allocation around
(e.g. after device_reset) that is never used.
---
 dlls/wined3d/surface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 87de9e1..628a4a5 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3068,7 +3068,7 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface,
      * mapped regularly do not throw away the system memory copy. This avoids
      * the need to download the surface from OpenGL all the time. The surface
      * is still downloaded if the OpenGL texture is changed. */
-    if (!(surface->flags & SFLAG_DYNLOCK))
+    if (!(surface->flags & SFLAG_DYNLOCK) && surface->map_binding == WINED3D_LOCATION_SYSMEM)
     {
         if (++surface->lockCount > MAXLOCKCOUNT)
         {
-- 
1.8.3.2




More information about the wine-patches mailing list