wined3d: Avoid destroying the currently active context for non-implicit swapchains.
This commit is contained in:
parent
7089128d2a
commit
6d8e1e52c8
|
@ -64,7 +64,24 @@ static void WINAPI IWineD3DSwapChainImpl_Destroy(IWineD3DSwapChain *iface, D3DCB
|
||||||
HeapFree(GetProcessHeap(), 0, This->backBuffer);
|
HeapFree(GetProcessHeap(), 0, This->backBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < This->num_contexts; i++) {
|
for (i = 0; i < This->num_contexts; ++i)
|
||||||
|
{
|
||||||
|
if (This->context[i] == This->wineD3DDevice->activeContext)
|
||||||
|
{
|
||||||
|
IWineD3DSwapChainImpl *swapchain = (IWineD3DSwapChainImpl *)This->wineD3DDevice->swapchains[0];
|
||||||
|
|
||||||
|
/* Avoid destroying the currently active context for non-implicit swapchains. */
|
||||||
|
if (This != swapchain)
|
||||||
|
{
|
||||||
|
TRACE("Would destroy currently active context %p on a non-implicit swapchain.\n", This->context[i]);
|
||||||
|
|
||||||
|
if (swapchain->backBuffer)
|
||||||
|
ActivateContext(This->wineD3DDevice, swapchain->backBuffer[0], CTXUSAGE_RESOURCELOAD);
|
||||||
|
else
|
||||||
|
ActivateContext(This->wineD3DDevice, swapchain->frontBuffer, CTXUSAGE_RESOURCELOAD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DestroyContext(This->wineD3DDevice, This->context[i]);
|
DestroyContext(This->wineD3DDevice, This->context[i]);
|
||||||
}
|
}
|
||||||
/* Restore the screen resolution if we rendered in fullscreen
|
/* Restore the screen resolution if we rendered in fullscreen
|
||||||
|
|
Loading…
Reference in New Issue