DX12: dx_end_frame was not called when disconnecting during active game.

This commit is contained in:
Artem Kharytoniuk 2017-12-17 21:38:29 +01:00
parent e918bf846b
commit 79545d341f
2 changed files with 11 additions and 5 deletions

View File

@ -1390,6 +1390,9 @@ void dx_begin_frame() {
}
void dx_end_frame() {
if (!dx.active)
return;
dx.command_list->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(dx.render_targets[dx.frame_index],
D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));

View File

@ -1115,8 +1115,8 @@ void RB_ExecuteRenderCommands( const void *data ) {
backEnd.smpFrame = 1;
}
bool vk_begin_frame_called = false;
bool vk_end_frame_called = false;
bool begin_frame_called = false;
bool end_frame_called = false;
while ( 1 ) {
switch ( *(const int *)data ) {
@ -1131,11 +1131,11 @@ void RB_ExecuteRenderCommands( const void *data ) {
break;
case RC_DRAW_BUFFER:
data = RB_DrawBuffer( data );
vk_begin_frame_called = true;
begin_frame_called = true;
break;
case RC_SWAP_BUFFERS:
data = RB_SwapBuffers( data );
vk_end_frame_called = true;
end_frame_called = true;
break;
case RC_SCREENSHOT:
data = RB_TakeScreenshotCmd( data );
@ -1148,8 +1148,11 @@ void RB_ExecuteRenderCommands( const void *data ) {
backEnd.pc.msec = t2 - t1;
// VULKAN
if (com_errorEntered && (vk_begin_frame_called && !vk_end_frame_called))
// DX12
if (com_errorEntered && (begin_frame_called && !end_frame_called)) {
vk_end_frame();
dx_end_frame();
}
return;
}