mirror of
https://bitbucket.org/CPMADevs/cnq3
synced 2025-01-22 08:21:48 +00:00
fixed "SCR_UpdateScreen: recursively called" false positives (e.g. after being kicked twice)
This commit is contained in:
parent
b4d78a1bc1
commit
8c45c7aa60
2 changed files with 11 additions and 1 deletions
|
@ -1,6 +1,9 @@
|
||||||
|
|
||||||
DD Mmm 17 - 1.49
|
DD Mmm 17 - 1.49
|
||||||
|
|
||||||
|
fix: false positives of the "SCR_UpdateScreen: recursively called" fatal error
|
||||||
|
repro: connect, get kicked, connect, get kicked
|
||||||
|
|
||||||
fix: crash when the number of shader stages was wrong (would happen with the "brandon" player model)
|
fix: crash when the number of shader stages was wrong (would happen with the "brandon" player model)
|
||||||
|
|
||||||
fix: the release of a key bound to "+vstr a b" would execute "b" even though the key press didn't execute "a"
|
fix: the release of a key bound to "+vstr a b" would execute "b" even though the key press didn't execute "a"
|
||||||
|
|
|
@ -391,6 +391,13 @@ void SCR_UpdateScreen()
|
||||||
Com_Error( ERR_FATAL, "SCR_UpdateScreen: recursively called" );
|
Com_Error( ERR_FATAL, "SCR_UpdateScreen: recursively called" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Why set to 1 and 0 explicitly?
|
||||||
|
// Because the increment/decrement approach doesn't work.
|
||||||
|
// One of the calls below might invoke Com_Error, which will in turn
|
||||||
|
// call longjmp and "abort" the current frame, meaning the end of this
|
||||||
|
// function (or any function for that matter) is not always reached.
|
||||||
|
recursive = 1;
|
||||||
|
|
||||||
SCR_DrawScreenField( STEREO_CENTER );
|
SCR_DrawScreenField( STEREO_CENTER );
|
||||||
|
|
||||||
if ( com_speeds->integer ) {
|
if ( com_speeds->integer ) {
|
||||||
|
@ -406,6 +413,6 @@ void SCR_UpdateScreen()
|
||||||
re.EndFrame( NULL, NULL, NULL );
|
re.EndFrame( NULL, NULL, NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
--recursive;
|
recursive = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue