[PATCH 3/5] wined3d: Clear the last device in WineD3D_CreateFakeGLContext().
Henri Verbeet
hverbeet at codeweavers.com
Thu Jul 2 03:01:36 CDT 2009
The next patch depends on this.
---
dlls/wined3d/context.c | 11 ++++++++---
dlls/wined3d/directx.c | 1 +
dlls/wined3d/wined3d_private.h | 1 +
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 6be40c7..8fa9786 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -36,6 +36,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d);
*/
static IWineD3DDeviceImpl *last_device;
+void context_set_last_device(IWineD3DDeviceImpl *device)
+{
+ last_device = device;
+}
+
/* FBO helper functions */
/* GL locking is done by the caller */
@@ -1078,7 +1083,7 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar
ERR("Failed to make previous GL context %p current.\n", oldCtx);
}
} else {
- last_device = This;
+ context_set_last_device(This);
}
This->frag_pipe->enable_extension((IWineD3DDevice *) This, TRUE);
@@ -1167,7 +1172,7 @@ void DestroyContext(IWineD3DDeviceImpl *This, WineD3DContext *context) {
/* The correct GL context needs to be active to cleanup the GL resources below */
has_glctx = pwglMakeCurrent(context->hdc, context->glCtx);
- last_device = NULL;
+ context_set_last_device(NULL);
if (!has_glctx) WARN("Failed to activate context. Window already destroyed?\n");
@@ -1750,7 +1755,7 @@ void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextU
sizeof(*This->activeContext->pshader_const_dirty) * GL_LIMITS(pshader_constantsF));
}
This->activeContext = context;
- last_device = This;
+ context_set_last_device(This);
}
switch (usage) {
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 523528f..75f4570 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -308,6 +308,7 @@ static BOOL WineD3D_CreateFakeGLContext(void) {
goto fail;
}
}
+ context_set_last_device(NULL);
ret:
TRACE("incrementing ref from %i\n", wined3d_fake_gl_context_ref);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 7af5719..c5ba435 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1256,6 +1256,7 @@ void context_resource_released(IWineD3DDevice *iface, IWineD3DResource *resource
void context_bind_fbo(IWineD3DDevice *iface, GLenum target, GLuint *fbo);
void context_attach_depth_stencil_fbo(IWineD3DDeviceImpl *This, GLenum fbo_target, IWineD3DSurface *depth_stencil, BOOL use_render_buffer);
void context_attach_surface_fbo(IWineD3DDeviceImpl *This, GLenum fbo_target, DWORD idx, IWineD3DSurface *surface);
+void context_set_last_device(IWineD3DDeviceImpl *device);
void delete_opengl_contexts(IWineD3DDevice *iface, IWineD3DSwapChain *swapchain);
HRESULT create_primary_opengl_context(IWineD3DDevice *iface, IWineD3DSwapChain *swapchain);
--
1.6.0.6
More information about the wine-patches
mailing list