summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Howard2005-09-14 21:55:47 +0000
committerSimon Howard2005-09-14 21:55:47 +0000
commit5edba96d934e627ad61d0298b9223cccd299d741 (patch)
tree3721332475acb0e7338c278500599b0d1b888c42 /src
parent2076aabf66dc3d14ff8e5ad5b110bc3eae461874 (diff)
downloadchocolate-doom-5edba96d934e627ad61d0298b9223cccd299d741.tar.gz
chocolate-doom-5edba96d934e627ad61d0298b9223cccd299d741.tar.bz2
chocolate-doom-5edba96d934e627ad61d0298b9223cccd299d741.zip
Lock surfaces properly when we have to (fixes crash under Windows 98)
Subversion-branch: /trunk/chocolate-doom Subversion-revision: 105
Diffstat (limited to 'src')
-rw-r--r--src/i_video.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/i_video.c b/src/i_video.c
index 155731b5..f3b38d7c 100644
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -1,7 +1,7 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
-// $Id: i_video.c 98 2005-09-11 20:25:56Z fraggle $
+// $Id: i_video.c 105 2005-09-14 21:55:47Z fraggle $
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005 Simon Howard
@@ -22,6 +22,9 @@
// 02111-1307, USA.
//
// $Log$
+// Revision 1.26 2005/09/14 21:55:47 fraggle
+// Lock surfaces properly when we have to (fixes crash under Windows 98)
+//
// Revision 1.25 2005/09/11 20:25:56 fraggle
// Second configuration file to allow chocolate doom-specific settings.
// Adjust some existing command line logic (for graphics settings and
@@ -115,7 +118,7 @@
//-----------------------------------------------------------------------------
static const char
-rcsid[] = "$Id: i_video.c 98 2005-09-11 20:25:56Z fraggle $";
+rcsid[] = "$Id: i_video.c 105 2005-09-14 21:55:47Z fraggle $";
#include <ctype.h>
#include <SDL.h>
@@ -618,9 +621,6 @@ void I_FinishUpdate (void)
SDL_UnlockSurface(screen);
}
- if (native_surface)
- SDL_UnlockSurface(screen);
-
// draw to screen
if (palette_to_set)
@@ -632,9 +632,6 @@ void I_FinishUpdate (void)
{
SDL_Flip(screen);
}
-
- if (native_surface)
- SDL_LockSurface(screen);
}
@@ -746,8 +743,13 @@ void I_InitGraphics(void)
UpdateGrab();
// Check if we have a native surface we can use
+ // If we have to lock the screen, draw to a buffer and copy
+ // Likewise if the screen pitch is not the same as the width
+ // If we have to multiply, drawing is done to a separate 320x200 buf
- native_surface = screenmultiply == 1 && screen->pitch == SCREENWIDTH;
+ native_surface = !SDL_MUSTLOCK(screen)
+ && screenmultiply == 1
+ && screen->pitch == SCREENWIDTH;
// If not, allocate a buffer and copy from that buffer to the
// screen when we do an update
@@ -757,9 +759,6 @@ void I_InitGraphics(void)
else
screens[0] = (unsigned char *) Z_Malloc (SCREENWIDTH * SCREENHEIGHT, PU_STATIC, NULL);
- if (native_surface)
- SDL_LockSurface(screen);
-
LoadDiskImage();
SDL_EnableUNICODE(1);