wined3d: Get rid of context_validate.
It should not be needed anymore, now the wined3d context is implicitly validated on GL context activation. The check itself wasn't reliable because of some threading issues and it also brought a small performance hit.
This commit is contained in:
parent
ae58e47ca0
commit
77face22d5
|
@ -800,6 +800,9 @@ static BOOL context_set_pixel_format(const struct wined3d_gl_info *gl_info, HDC
|
|||
|
||||
static void context_update_window(struct wined3d_context *context)
|
||||
{
|
||||
if (context->win_handle == context->swapchain->win_handle)
|
||||
return;
|
||||
|
||||
TRACE("Updating context %p window from %p to %p.\n",
|
||||
context, context->win_handle, context->swapchain->win_handle);
|
||||
|
||||
|
@ -841,22 +844,6 @@ err:
|
|||
context->valid = 0;
|
||||
}
|
||||
|
||||
/* Do not call while under the GL lock. */
|
||||
static void context_validate(struct wined3d_context *context)
|
||||
{
|
||||
HWND wnd = WindowFromDC(context->hdc);
|
||||
|
||||
if (wnd != context->win_handle)
|
||||
{
|
||||
WARN("DC %p belongs to window %p instead of %p.\n",
|
||||
context->hdc, wnd, context->win_handle);
|
||||
context->valid = 0;
|
||||
}
|
||||
|
||||
if (context->win_handle != context->swapchain->win_handle)
|
||||
context_update_window(context);
|
||||
}
|
||||
|
||||
/* Do not call while under the GL lock. */
|
||||
static void context_destroy_gl_resources(struct wined3d_context *context)
|
||||
{
|
||||
|
@ -871,8 +858,9 @@ static void context_destroy_gl_resources(struct wined3d_context *context)
|
|||
restore_ctx = pwglGetCurrentContext();
|
||||
restore_dc = pwglGetCurrentDC();
|
||||
|
||||
context_validate(context);
|
||||
if (context->valid && restore_ctx != context->glCtx) pwglMakeCurrent(context->hdc, context->glCtx);
|
||||
context_update_window(context);
|
||||
if (context->valid && restore_ctx != context->glCtx)
|
||||
context->valid = !!pwglMakeCurrent(context->hdc, context->glCtx);
|
||||
else restore_ctx = NULL;
|
||||
|
||||
ENTER_GL();
|
||||
|
@ -1900,7 +1888,7 @@ static struct wined3d_context *FindContext(IWineD3DDeviceImpl *This, IWineD3DSur
|
|||
|
||||
if (current_context && current_context->current_rt == target)
|
||||
{
|
||||
context_validate(current_context);
|
||||
context_update_window(current_context);
|
||||
return current_context;
|
||||
}
|
||||
|
||||
|
@ -1922,7 +1910,7 @@ static struct wined3d_context *FindContext(IWineD3DDeviceImpl *This, IWineD3DSur
|
|||
context = swapchain_get_context(This->swapchains[0]);
|
||||
}
|
||||
|
||||
context_validate(context);
|
||||
context_update_window(context);
|
||||
|
||||
return context;
|
||||
}
|
||||
|
|
|
@ -2123,6 +2123,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface,
|
|||
|
||||
if(!This->d3d_initialized) return WINED3DERR_INVALIDCALL;
|
||||
|
||||
/* Force making the context current again, to verify it is still valid
|
||||
* (workaround for broken drivers) */
|
||||
context_set_current(NULL);
|
||||
/* I don't think that the interface guarantees that the device is destroyed from the same thread
|
||||
* it was created. Thus make sure a context is active for the glDelete* calls
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue