wined3d: Restore recording mode later in ActiveRender().
This commit is contained in:
parent
b77b72c91b
commit
0c6c9f04a7
|
@ -7225,6 +7225,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_FindGLContext(IWineD3DDevice *iface, IW
|
|||
static HRESULT WINAPI IWineD3DDeviceImpl_ActiveRender(IWineD3DDevice* iface,
|
||||
IWineD3DSurface *RenderSurface) {
|
||||
HRESULT ret = WINED3DERR_INVALIDCALL;
|
||||
BOOL oldRecording;
|
||||
IWineD3DStateBlockImpl *oldUpdateStateBlock;
|
||||
|
||||
/**
|
||||
* Currently only active for GLX >= 1.3
|
||||
|
@ -7444,23 +7446,14 @@ static HRESULT WINAPI IWineD3DDeviceImpl_ActiveRender(IWineD3DDevice* iface,
|
|||
}
|
||||
}
|
||||
|
||||
#if 1 /* Apply the stateblock to the new context
|
||||
FIXME: This is a bit of a hack, each context should know it's own state,
|
||||
the directX current directX state should then be applied to the context */
|
||||
{
|
||||
BOOL oldRecording;
|
||||
IWineD3DStateBlockImpl *oldUpdateStateBlock;
|
||||
oldUpdateStateBlock = This->updateStateBlock;
|
||||
oldRecording= This->isRecordingState;
|
||||
This->isRecordingState = FALSE;
|
||||
This->updateStateBlock = This->stateBlock;
|
||||
IWineD3DStateBlock_Apply((IWineD3DStateBlock *)This->stateBlock);
|
||||
|
||||
This->isRecordingState = oldRecording;
|
||||
This->updateStateBlock = oldUpdateStateBlock;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Disable recording, and apply the stateblock to the new context
|
||||
* FIXME: This is a bit of a hack, each context should know it's own state,
|
||||
* the directX current directX state should then be applied to the context */
|
||||
oldUpdateStateBlock = This->updateStateBlock;
|
||||
oldRecording= This->isRecordingState;
|
||||
This->isRecordingState = FALSE;
|
||||
This->updateStateBlock = This->stateBlock;
|
||||
IWineD3DStateBlock_Apply((IWineD3DStateBlock *)This->stateBlock);
|
||||
|
||||
/* clean up the current rendertargets swapchain (if it belonged to one) */
|
||||
if (currentSwapchain != NULL) {
|
||||
|
@ -7474,10 +7467,9 @@ the directX current directX state should then be applied to the context */
|
|||
IWineD3DSurface_AddRef(This->renderTarget);
|
||||
IWineD3DSurface_Release(tmp);
|
||||
|
||||
|
||||
|
||||
{
|
||||
DWORD value;
|
||||
|
||||
/* The surface must be rendered upside down to cancel the flip produce by glCopyTexImage */
|
||||
/* Check that the container is not a swapchain member */
|
||||
|
||||
|
@ -7498,6 +7490,10 @@ the directX current directX state should then be applied to the context */
|
|||
This->proj_valid = FALSE;
|
||||
}
|
||||
|
||||
/* Restore recording state */
|
||||
This->isRecordingState = oldRecording;
|
||||
This->updateStateBlock = oldUpdateStateBlock;
|
||||
|
||||
ret = WINED3D_OK;
|
||||
|
||||
if (cfgs != NULL) {
|
||||
|
|
Loading…
Reference in New Issue