Alexander Dorofeyev : wined3d: Add device->isInDraw checks in LoadLocation.

Alexandre Julliard julliard at winehq.org
Mon Apr 7 14:46:57 CDT 2008


Module: wine
Branch: master
Commit: 7f2257ca556f607e9e91337e67a0c12d40e73199
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7f2257ca556f607e9e91337e67a0c12d40e73199

Author: Alexander Dorofeyev <alexd4 at inbox.lv>
Date:   Mon Apr  7 00:06:25 2008 +0300

wined3d: Add device->isInDraw checks in LoadLocation.

Prevents calling ActivateContext while holding gl lock, e.g. when preloading 
texture in sampler().

---

 dlls/wined3d/surface.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 8190a15..97f0438 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -4043,7 +4043,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, D
 
         /* Download the surface to system memory */
         if(This->Flags & SFLAG_INTEXTURE) {
-            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            if(!device->isInDraw) ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
             surface_bind_and_dirtify(This);
 
             surface_download_data(This);
@@ -4101,7 +4101,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, D
         } else { /* Upload from system memory */
             d3dfmt_get_conv(This, TRUE /* We need color keying */, TRUE /* We will use textures */, &format, &internal, &type, &convert, &bpp, This->srgb);
 
-            ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
+            if(!device->isInDraw) ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
             surface_bind_and_dirtify(This);
             ENTER_GL();
 




More information about the wine-cvs mailing list