mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-02-12 14:45:41 +00:00
sdlayer.cpp: fix software renderer crash affecting Mapster32 due to improper handling of lockcount in videoBeginDrawing()/videoEndDrawing() when using glsurface
git-svn-id: https://svn.eduke32.com/eduke32@6933 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
9e90b0633b
commit
29c2863750
1 changed files with 10 additions and 11 deletions
|
@ -1733,10 +1733,15 @@ void videoBeginDrawing(void)
|
||||||
modechange = 0;
|
modechange = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (!nogl)
|
|
||||||
{
|
|
||||||
if (offscreenrendering) return;
|
|
||||||
|
|
||||||
|
// lock the frame
|
||||||
|
if (lockcount++ > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (offscreenrendering) return;
|
||||||
|
|
||||||
|
if (!nogl)
|
||||||
|
{
|
||||||
frameplace = (intptr_t)glsurface_getBuffer();
|
frameplace = (intptr_t)glsurface_getBuffer();
|
||||||
if (modechange)
|
if (modechange)
|
||||||
{
|
{
|
||||||
|
@ -1747,12 +1752,6 @@ void videoBeginDrawing(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// lock the frame
|
|
||||||
if (lockcount++ > 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (offscreenrendering) return;
|
|
||||||
|
|
||||||
if (SDL_MUSTLOCK(sdl_buffersurface)) SDL_LockSurface(sdl_buffersurface);
|
if (SDL_MUSTLOCK(sdl_buffersurface)) SDL_LockSurface(sdl_buffersurface);
|
||||||
frameplace = (intptr_t)sdl_buffersurface->pixels;
|
frameplace = (intptr_t)sdl_buffersurface->pixels;
|
||||||
|
|
||||||
|
@ -1772,7 +1771,7 @@ void videoBeginDrawing(void)
|
||||||
//
|
//
|
||||||
void videoEndDrawing(void)
|
void videoEndDrawing(void)
|
||||||
{
|
{
|
||||||
if (bpp > 8 || !nogl)
|
if (bpp > 8)
|
||||||
{
|
{
|
||||||
if (!offscreenrendering) frameplace = 0;
|
if (!offscreenrendering) frameplace = 0;
|
||||||
return;
|
return;
|
||||||
|
@ -1784,7 +1783,7 @@ void videoEndDrawing(void)
|
||||||
if (lockcount == 0) return;
|
if (lockcount == 0) return;
|
||||||
lockcount = 0;
|
lockcount = 0;
|
||||||
|
|
||||||
if (offscreenrendering) return;
|
if (offscreenrendering || !nogl) return;
|
||||||
|
|
||||||
if (SDL_MUSTLOCK(sdl_buffersurface)) SDL_UnlockSurface(sdl_buffersurface);
|
if (SDL_MUSTLOCK(sdl_buffersurface)) SDL_UnlockSurface(sdl_buffersurface);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue