wined3d: Prevent unneeded context switches.

oldstable
Roderick Colenbrander 2007-11-09 16:38:50 +01:00 committed by Alexandre Julliard
parent 9b0d661e43
commit 817b520c3d
1 changed files with 11 additions and 4 deletions

View File

@ -860,10 +860,17 @@ void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextU
/* Activate the opengl context */
if(context != This->activeContext) {
BOOL ret;
TRACE("Switching gl ctx to %p, hdc=%p ctx=%p\n", context, context->hdc, context->glCtx);
ret = pwglMakeCurrent(context->hdc, context->glCtx);
if(ret == FALSE) {
ERR("Failed to activate the new context\n");
/* Prevent an unneeded context switch as those are expensive */
if(context->glCtx && (context->glCtx == pwglGetCurrentContext())) {
TRACE("Already using gl context %p\n", context->glCtx);
}
else {
TRACE("Switching gl ctx to %p, hdc=%p ctx=%p\n", context, context->hdc, context->glCtx);
ret = pwglMakeCurrent(context->hdc, context->glCtx);
if(ret == FALSE) {
ERR("Failed to activate the new context\n");
}
}
This->activeContext = context;
}