Alexander Dorofeyev : wined3d: Avoid calling LoadTexture with gl lock held in IWineD3DSurfaceImpl_PreLoad .
Alexandre Julliard
julliard at winehq.org
Thu Apr 3 05:43:53 CDT 2008
Module: wine
Branch: master
Commit: b54553a2537d4b44b7e6d36caa6c893b1862b9e0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b54553a2537d4b44b7e6d36caa6c893b1862b9e0
Author: Alexander Dorofeyev <alexd4 at inbox.lv>
Date: Thu Apr 3 00:12:00 2008 +0300
wined3d: Avoid calling LoadTexture with gl lock held in IWineD3DSurfaceImpl_PreLoad.
Needed to prevent ActivateContext being called while holding gl lock.
---
dlls/wined3d/surface.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 28ffdcb..e7f7391 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -509,19 +509,22 @@ void WINAPI IWineD3DSurfaceImpl_PreLoad(IWineD3DSurface *iface) {
}
glBindTexture(This->glDescription.target, This->glDescription.textureName);
checkGLcall("glBindTexture");
+ LEAVE_GL();
IWineD3DSurface_LoadTexture(iface, FALSE);
/* This is where we should be reducing the amount of GLMemoryUsed */
} else if (This->glDescription.textureName) { /* NOTE: the level 0 surface of a mpmapped texture must be loaded first! */
/* assume this is a coding error not a real error for now */
FIXME("Mipmap surface has a glTexture bound to it!\n");
+ LEAVE_GL();
}
if (This->resource.pool == WINED3DPOOL_DEFAULT) {
/* Tell opengl to try and keep this texture in video ram (well mostly) */
GLclampf tmp;
tmp = 0.9f;
+ ENTER_GL();
glPrioritizeTextures(1, &This->glDescription.textureName, &tmp);
+ LEAVE_GL();
}
- LEAVE_GL();
}
return;
}
More information about the wine-cvs
mailing list