summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Howard2008-12-20 20:25:22 +0000
committerSimon Howard2008-12-20 20:25:22 +0000
commitb9b0c2abfbe194baf6d497f1c4a2165769f64ab3 (patch)
treea82b96f274bd7427b963964f37242607a27c593d
parent0ec9859ec8cf39ce1223516161fb39ea44ed5c33 (diff)
parentacd1a13a4f70973d7616df3f6de43f8f79b8e392 (diff)
downloadchocolate-doom-b9b0c2abfbe194baf6d497f1c4a2165769f64ab3.tar.gz
chocolate-doom-b9b0c2abfbe194baf6d497f1c4a2165769f64ab3.tar.bz2
chocolate-doom-b9b0c2abfbe194baf6d497f1c4a2165769f64ab3.zip
Merge from trunk.
Subversion-branch: /branches/raven-branch Subversion-revision: 1423
-rw-r--r--ChangeLog273
-rw-r--r--NEWS42
-rw-r--r--codeblocks/config.h6
-rw-r--r--codeblocks/game-res.rc10
-rw-r--r--codeblocks/setup-res.rc8
-rw-r--r--configure.in24
-rw-r--r--msvc/config.h6
-rw-r--r--msvc/win32.rc10
-rw-r--r--pcsound/Makefile.am2
-rw-r--r--src/Makefile.am4
-rw-r--r--src/doom/d_main.c2
-rw-r--r--src/doom/wi_stuff.c34
-rw-r--r--src/heretic/d_main.c2
-rw-r--r--src/hexen/h2_main.c2
-rw-r--r--src/i_endoom.c5
-rw-r--r--src/i_main.c38
-rw-r--r--src/i_video.c37
-rw-r--r--src/i_video.h1
-rw-r--r--src/m_config.c1
-rw-r--r--src/w_file_win32.c372
-rw-r--r--textscreen/Makefile.am2
-rw-r--r--textscreen/examples/Makefile.am2
22 files changed, 627 insertions, 256 deletions
diff --git a/ChangeLog b/ChangeLog
index 37836295..a370d4bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,276 @@
+2008-12-10 20:20:10 fraggle
+
+ Fix crash when playing Doom 1 levels.
+
+2008-12-10 01:06:08 fraggle
+
+ Bump version to 1.2.0, update NEWS and ChangeLog.
+
+2008-12-10 01:01:19 fraggle
+
+ Undo previous change.
+
+2008-12-10 00:42:49 fraggle
+
+ Set icon before calling TXT_Init, for setup and ENDOOM screens.
+
+2008-12-10 00:00:55 fraggle
+
+ Fix window icon/title under Windows XP Luna theme.
+
+2008-12-09 23:32:19 fraggle
+
+ Make intermission screen work on MAP33, to be consistent with Vanilla
+ Doom. Also, make levels after MAP33 trigger a V_DrawPatch error.
+
+2008-12-09 20:35:17 fraggle
+
+ Add check for sched_setaffinity to configure and only use it if it is
+ found. Display a message if we don't have any way to set processor
+ affinity.
+
+2008-12-09 19:56:43 fraggle
+
+ Add SDL_CFLAGS, SDL_LDFLAGS to default compile flags, and check for
+ SDL in configure before checking for libraries and headers, to fix
+ Windows.
+
+2008-12-03 22:09:22 fraggle
+
+ Use FILE_MAP_COPY instead of FILE_MAP_ALL_ACCESS for mapping files
+ (thanks to Christian Chech).
+
+2008-12-01 21:08:23 fraggle
+
+ Don't try to read SDL events until initialised.
+
+2008-10-01 21:22:09 fraggle
+
+ Add .lvimrc local vim project settings.
+
+2008-09-21 19:20:32 fraggle
+
+ Don't play DEMO4 if gameversion is emulating chex.exe - it only plays
+ demos 1-3.
+
+2008-09-20 19:18:06 fraggle
+
+ Set processor affinity under non-Windows platforms using the POSIX
+ API.
+
+2008-09-16 01:17:20 rtc_marine
+
+ - Force use of dwarf-2 debugging information - Fix an age-old problem
+ of not being able to find -lpcsound, the debug target was looking for
+ it rather than -lpcsound-dbg
+
+2008-09-14 19:14:46 fraggle
+
+ Add -nocheat command line parameter to disable applying cheats from
+ dehacked files.
+
+2008-09-07 18:47:08 fraggle
+
+ Strip out NUL characters from dehacked files; this makes the dehacked
+ patch with portal.wad load properly.
+
+2008-08-29 00:31:53 fraggle
+
+ Update TODO.
+
+2008-08-24 03:06:26 fraggle
+
+ Update INSTALL to include some notes about Chex Quest.
+
+2008-08-24 02:58:57 fraggle
+
+ Update missing chex.deh to reference its location in the idgames
+ repository.
+
+2008-08-20 19:27:56 fraggle
+
+ Use / as a path separator, to allow cross-compiling of resource files
+ (thanks Anonymous bug reporter)
+
+2008-08-19 20:51:41 fraggle
+
+ Fix crash related to A_BFGSpray with NULL target when using dehacked
+ patches - discovered with insaned2.deh (thanks CSonicGo)
+
+2008-08-09 18:09:23 fraggle
+
+ Don't modify level lumps when loading levels.
+
+2008-08-08 23:38:25 fraggle
+
+ Use FILE_MAP_ALL_ACCESS rather than FILE_MAP_READ when mmapping files
+ under Windows (thanks entryway)
+
+2008-08-02 14:29:37 fraggle
+
+ Search for chex.deh in WAD path.
+
+2008-07-31 23:01:38 fraggle
+
+ Update netcode to allow chex quest gameversion.
+
+2008-07-31 22:29:20 fraggle
+
+ Update Chocolate Setup to support chex.wad.
+
+2008-07-31 21:21:58 fraggle
+
+ Fix crash on Chex Quest intermission screen (thanks entryway)
+
+2008-07-31 21:06:42 fraggle
+
+ Automatically load chex.deh on startup if playing in chex mode.
+
+2008-07-31 20:43:45 fraggle
+
+ Fix mistake in exit confirmation string that was breaking dehacked
+ patches that replace it.
+
+2008-07-31 12:55:35 rtc_marine
+
+ Update codeblocks project to locate setup manifest
+
+2008-07-29 19:06:04 fraggle
+
+ Don't do the Final Doom teleport quirk with Chex Quest, as chex.exe
+ doesn't do it.
+
+2008-07-29 19:05:16 fraggle
+
+ Monsters don't drop ammo in Chex Quest.
+
+2008-07-29 01:50:56 fraggle
+
+ Add magic dehacked comment to enable long cheat sequences (also for
+ Chex Quest support)
+
+2008-07-27 00:51:25 fraggle
+
+ In chex mode, always warp to an episode 1 level, and display the level
+ title in the automap for the equivalent episode 1 level.
+
+2008-07-26 16:45:52 fraggle
+
+ Allow magic comments in dehacked files that disable the DOS dehacked
+ text replacement limit, so that we can use a dehacked patch to emulate
+ chex.exe.
+
+2008-07-26 16:29:08 fraggle
+
+ Chex Quest's chex.exe is based on the Final Doom exe, not the Ultimate
+ Doom exe.
+
+2008-07-26 16:23:06 fraggle
+
+ Fix "dimensional shambler waiting at the dos prompt" quit message to
+ match the one in doom2.exe precisely.
+
+2008-07-25 20:56:39 fraggle
+
+ Initial chex.exe emulation.
+
+2008-07-10 00:22:34 fraggle
+
+ Fix dehacked replacements for the "press y to quit to dos" string.
+
+2008-07-07 10:10:26 fraggle
+
+ Fix quit screen confirm message to say "quit to dos" rather than just
+ "quit" (thanks MikeRS)
+
+2008-06-14 18:42:06 fraggle
+
+ Add a helpful message for people trying to play with the wrong IWAD.
+
+2008-06-11 01:14:07 fraggle
+
+ Only apply dehacked green armor class to the green armor shirt, not
+ the armor helmets as well.
+
+2008-06-09 19:11:24 fraggle
+
+ Always set armor class to 2 when picking up a megasphere (thanks
+ entryway).
+
+2008-05-05 04:52:08 GhostlyDeath
+
+ Updated Code::Blocks project for new files
+
+2008-05-05 04:48:45 fraggle
+
+ Add setup-manifest.xml to dist.
+
+2008-05-05 04:44:28 GhostlyDeath
+
+ Updated VC++ Project for added files; Manifest should have version
+ 1.1.1.0 not 1.0.0.0; the rc files in the codeblocks folder have been
+ updated
+
+2008-05-05 04:11:29 fraggle
+
+ (Hopefully) fix for Windows Vista asking for security elevation when
+ running chocolate-setup.
+
+2008-05-04 22:43:38 fraggle
+
+ Remove Vanilla Doom reload hack.
+
+2008-05-04 18:09:51 fraggle
+
+ Add command line option to disable mmapped WAD I/O.
+
+2008-05-04 17:45:10 fraggle
+
+ Fix win32 mmap driver and add to build.
+
+2008-05-02 23:52:00 fraggle
+
+ Add Windows memory mapping backend.
+
+2008-05-02 20:19:38 fraggle
+
+ Memory-mapped WAD access.
+
+2008-05-02 20:18:52 fraggle
+
+ Fix up some more code calling Z_Free instead of W_ReleaseLumpNum.
+
+2008-05-02 19:48:43 fraggle
+
+ Add W_CacheLumpNum,Name API to WAD code for releasing a lump back to
+ cache when it is no longer needed. Switch existing code to use the
+ new API instead of Z_ChangeTag.
+
+2008-05-02 18:32:09 fraggle
+
+ Add WAD I/O abstraction layer - first step for mmapped WAD access.
+
+2008-04-26 17:31:47 fraggle
+
+ "Python Image Library" -> "Python Imaging Library" (thanks exp(x)).
+
+2008-04-26 15:33:14 fraggle
+
+ Add new Chocolate Doom icon.
+
+2008-04-26 00:33:00 fraggle
+
+ Generate transparency mask for the application icon from black parts
+ of the image.
+
+2008-04-23 08:44:17 GhostlyDeath
+
+ VC++ Project now builds
+
+2008-04-20 02:00:11 fraggle
+
+ Bump version to 1.1.1, update ChangeLog and NEWS.
+
2008-04-19 17:41:58 fraggle
Fix build problem when libsamplerate support is enabled.
diff --git a/NEWS b/NEWS
index ff1d9b59..abb31290 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,45 @@
+1.2.1 (2008-12-10):
+
+ This version just fixes a crash at the intermission screen when
+ playing Doom 1 levels.
+
+1.2.0 (2008-12-10):
+
+ Happy 15th Birthday, Doom!
+
+ * Chocolate Doom now has an icon that is not based on the proprietary
+ Doom artwork.
+ * There is now memory-mapped WAD I/O support, which should be useful
+ on some embedded systems.
+ * Chex quest emulation support is now included, although an
+ auxiliary dehacked patch is needed (chexdeh.zip in the idgames
+ archive).
+
+ Compatibility:
+ * The armor class is always set to 2 when picking up a megasphere
+ (thanks entryway).
+ * The quit screen prompts to quit "to dos" instead of just to quit
+ (thanks MikeRS)
+ * The "dimensional shambler" quit message was fixed.
+ * Fix crash related to A_BFGSpray with NULL target when using
+ dehacked patches - discovered with insaned2.deh
+ (thanks CSonicGo)
+ * NUL characters are stripped from dehacked files, to ensure correct
+ behavior with some dehacked patches (eg. the one with portal.wad).
+
+ Bugs fixed:
+ * "Python Image Library" should have been "Python Imaging Library"
+ (thanks exp(x)).
+ * The setup tool should no longer ask for elevated permissions
+ on Windows Vista (this fix possibly may not work).
+ * The application icon is set properly when running under Windows
+ XP with the "Luna" theme.
+ * Fix compilation under Cygwin to detect libraries and headers from
+ the correct environment.
+ * The video code does not try to read SDL events before SDL has
+ been properly initialised - this was causing problems with some
+ older versions of SDL.
+
1.1.1 (2008-04-20):
The previous release (v1.1.0) included a bug that broke compilation
diff --git a/codeblocks/config.h b/codeblocks/config.h
index c006d256..fe1bde8f 100644
--- a/codeblocks/config.h
+++ b/codeblocks/config.h
@@ -9,19 +9,19 @@
#define PACKAGE_NAME "Chocolate Doom"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Chocolate Doom 1.1.1"
+#define PACKAGE_STRING "Chocolate Doom 1.2.1"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "chocolate-doom"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.1.1"
+#define PACKAGE_VERSION "1.2.1"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
-#define VERSION "1.1.1"
+#define VERSION "1.2.1"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
diff --git a/codeblocks/game-res.rc b/codeblocks/game-res.rc
index 9219b149..4a9e289b 100644
--- a/codeblocks/game-res.rc
+++ b/codeblocks/game-res.rc
@@ -1,21 +1,21 @@
1 ICON "../data/doom.ico"
1 VERSIONINFO
-PRODUCTVERSION 1,1,1,0
-FILEVERSION 1,1,1,0
+PRODUCTVERSION 1,2,1,0
+FILEVERSION 1,2,1,0
FILETYPE 1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
- VALUE "FileVersion", "1.1.1"
- VALUE "FileDescription", "1.1.1"
+ VALUE "FileVersion", "1.2.1"
+ VALUE "FileDescription", "1.2.1"
VALUE "InternalName", "Chocolate-Doom"
VALUE "CompanyName", "Chocolate-Doom"
VALUE "LegalCopyright", "GNU General Public License"
VALUE "ProductName", "Chocolate-Doom"
- VALUE "ProductVersion", "1.1.1"
+ VALUE "ProductVersion", "1.2.1"
}
}
}
diff --git a/codeblocks/setup-res.rc b/codeblocks/setup-res.rc
index 41a7f1dc..fe791088 100644
--- a/codeblocks/setup-res.rc
+++ b/codeblocks/setup-res.rc
@@ -3,21 +3,21 @@
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup-manifest.xml"
1 VERSIONINFO
-PRODUCTVERSION 1,1,1,0
-FILEVERSION 1,1,1,0
+PRODUCTVERSION 1,2,1,0
+FILEVERSION 1,2,1,0
FILETYPE 1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
- VALUE "FileVersion", "1.1.1"
+ VALUE "FileVersion", "1.2.1"
VALUE "FileDescription", "Chocolate-Doom Setup"
VALUE "InternalName", "chocolate-setup"
VALUE "CompanyName", "fraggle@gmail.com"
VALUE "LegalCopyright", "GNU General Public License"
VALUE "ProductName", "Chocolate-Doom Setup"
- VALUE "ProductVersion", "1.1.1"
+ VALUE "ProductVersion", "1.2.1"
}
}
}
diff --git a/configure.in b/configure.in
index f4b6202a..f4a867f2 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-AC_INIT(Chocolate Doom, 1.1.1, fraggle@gmail.com, chocolate-doom)
+AC_INIT(Chocolate Doom, 1.2.1, fraggle@gmail.com, chocolate-doom)
AC_CONFIG_AUX_DIR(autotools)
@@ -7,7 +7,6 @@ orig_CFLAGS="$CFLAGS"
AC_PROG_CC
AC_PROG_RANLIB
AC_CHECK_PROG(HAVE_PYTHON, python, true, false)
-AC_CHECK_FUNCS(mmap)
OPT_LEVEL=2
@@ -25,24 +24,37 @@ then
CFLAGS="-O$OPT_LEVEL -g -Wall $orig_CFLAGS"
fi
-AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h])
+dnl Search for SDL ...
AM_PATH_SDL(1.1.3)
+# Add the SDL compiler flags to the default compiler flag variables.
+# It is important to do this now, before checking for headers and
+# library functions. The reason being that on Windows, sdl-config
+# sets the -mno-cygwin compiler option in order to generate MinGW
+# executables. If we don't do this now, we might end up discovering
+# header files that are not actually available to us when we come
+# to compile.
+
+CFLAGS="$CFLAGS $SDL_CFLAGS"
+LDFLAGS="$LDFLAGS $SDL_LIBS"
+
AC_CHECK_LIB(SDL_mixer,Mix_LoadMUS,[
-dnl AC_DEFINE(HAVE_LIBSDL_MIXER)
SDLMIXER_LIBS="$SDLMIXER_LIBS -lSDL_mixer"
],[
echo "*** Could not find SDL_mixer. Please install it."
exit -1
-],$SDL_LIBS $SDLMIXER_LIBS)
+])
AC_CHECK_LIB(SDL_net,SDLNet_UDP_Send,[
SDLNET_LIBS="$SDLNET_LIBS -lSDL_net"
],[
echo "*** Could not find SDL_net. Please install it."
exit -1
-] ,$SDL_LIBS $SDLNET_LIBS)
+])
+
+AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h])
+AC_CHECK_FUNCS(mmap sched_setaffinity)
# DWF 2008-02-10: FIXME
AC_CHECK_LIB(samplerate, src_new)
diff --git a/msvc/config.h b/msvc/config.h
index 7a28c0c1..7880c3c1 100644
--- a/msvc/config.h
+++ b/msvc/config.h
@@ -11,16 +11,16 @@
#define PACKAGE_NAME "Chocolate Doom"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Chocolate Doom 1.1.1"
+#define PACKAGE_STRING "Chocolate Doom 1.2.1"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "chocolate-doom"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.1.1"
+#define PACKAGE_VERSION "1.2.1"
/* Version number of package */
-#define VERSION "1.1.1"
+#define VERSION "1.2.1"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
diff --git a/msvc/win32.rc b/msvc/win32.rc
index 668bdb0a..b9bc06a2 100644
--- a/msvc/win32.rc
+++ b/msvc/win32.rc
@@ -32,21 +32,21 @@
#endif
1 VERSIONINFO
-PRODUCTVERSION 1,1,1,0
-FILEVERSION 1,1,1,0
+PRODUCTVERSION 1,2,1,0
+FILEVERSION 1,2,1,0
FILETYPE 1
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
- VALUE "FileVersion", "1.1.1"
- VALUE "FileDescription", "Chocolate Doom 1.1.1"
+ VALUE "FileVersion", "1.2.1"
+ VALUE "FileDescription", "Chocolate Doom 1.2.1"
VALUE "InternalName", "chocolate-doom"
VALUE "CompanyName", "fraggle@gmail.com"
VALUE "LegalCopyright", "GNU General Public License"
VALUE "ProductName", "Chocolate Doom"
- VALUE "ProductVersion", "1.1.1"
+ VALUE "ProductVersion", "1.2.1"
END
END
END
diff --git a/pcsound/Makefile.am b/pcsound/Makefile.am
index 63c76f77..b956a886 100644
--- a/pcsound/Makefile.am
+++ b/pcsound/Makefile.am
@@ -1,5 +1,5 @@
-AM_CFLAGS= @SDL_CFLAGS@ @SDLMIXER_CFLAGS@
+AM_CFLAGS=@SDLMIXER_CFLAGS@
noinst_LIBRARIES=libpcsound.a
diff --git a/src/Makefile.am b/src/Makefile.am
index 5a2267b9..10f9c2c5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -9,7 +9,7 @@ games_PROGRAMS = chocolate-doom \
chocolate-server \
chocolate-setup
-AM_CFLAGS = -Idoom -I../textscreen -I../pcsound @SDL_CFLAGS@ @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@
+AM_CFLAGS = -I../textscreen -I../pcsound @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@
# Common source files used by absolutely everything:
@@ -35,7 +35,7 @@ net_structrw.c net_structrw.h \
z_native.c z_zone.h
chocolate_server_SOURCES=$(COMMON_SOURCE_FILES) $(DEDSERV_FILES)
-chocolate_server_LDADD = @LDFLAGS@ @SDL_LIBS@ @SDLNET_LIBS@
+chocolate_server_LDADD = @LDFLAGS@ @SDLNET_LIBS@
# Source files used by the game binaries (chocolate-doom, etc.)
diff --git a/src/doom/d_main.c b/src/doom/d_main.c
index c8a91e74..70518a75 100644
--- a/src/doom/d_main.c
+++ b/src/doom/d_main.c
@@ -422,10 +422,10 @@ void D_DoomLoop (void)
TryRunTics();
+ I_SetWindowTitle(gamedescription);
I_InitGraphics();
I_EnableLoadingDisk();
I_SetGrabMouseCallback(D_GrabMouseCallback);
- I_SetWindowTitle(gamedescription);
V_RestoreBuffer();
R_ExecuteSetViewSize();
diff --git a/src/doom/wi_stuff.c b/src/doom/wi_stuff.c
index 7cfbdfa9..dea5d71b 100644
--- a/src/doom/wi_stuff.c
+++ b/src/doom/wi_stuff.c
@@ -424,17 +424,31 @@ void WI_drawLF(void)
{
int y = WI_TITLEY;
- // draw <LevelName>
- V_DrawPatch((SCREENWIDTH - SHORT(lnames[wbs->last]->width))/2,
- y,
- lnames[wbs->last]);
+ if (gamemode != commercial || wbs->last < NUMCMAPS)
+ {
+ // draw <LevelName>
+ V_DrawPatch((SCREENWIDTH - SHORT(lnames[wbs->last]->width))/2,
+ y, lnames[wbs->last]);
- // draw "Finished!"
- y += (5*SHORT(lnames[wbs->last]->height))/4;
-
- V_DrawPatch((SCREENWIDTH - SHORT(finished->width))/2,
- y,
- finished);
+ // draw "Finished!"
+ y += (5*SHORT(lnames[wbs->last]->height))/4;
+ }
+ else if (wbs->last == NUMCMAPS)
+ {
+ // MAP33 - nothing is displayed!
+ }
+ else if (wbs->last > NUMCMAPS)
+ {
+ // > MAP33. Doom bombs out here with a Bad V_DrawPatch error.
+ // I'm pretty sure that doom2.exe is just reading into random
+ // bits of memory at this point, but let's try to be accurate
+ // anyway. This deliberately triggers a V_DrawPatch error.
+
+ patch_t tmp = { SCREENWIDTH, SCREENHEIGHT, 1, 1,
+ { 0, 0, 0, 0, 0, 0, 0, 0 } };
+
+ V_DrawPatch(0, y, &tmp);
+ }
}
diff --git a/src/heretic/d_main.c b/src/heretic/d_main.c
index bba09e65..9e4558c1 100644
--- a/src/heretic/d_main.c
+++ b/src/heretic/d_main.c
@@ -237,8 +237,8 @@ void D_DoomLoop(void)
sprintf(filename, "debug%i.txt", consoleplayer);
debugfile = fopen(filename, "w");
}
- I_InitGraphics();
I_SetWindowTitle(gamedescription);
+ I_InitGraphics();
I_SetGrabMouseCallback(D_GrabMouseCallback);
while (1)
diff --git a/src/hexen/h2_main.c b/src/hexen/h2_main.c
index 72e323c5..166c3064 100644
--- a/src/hexen/h2_main.c
+++ b/src/hexen/h2_main.c
@@ -532,9 +532,9 @@ void H2_GameLoop(void)
sprintf(filename, "debug%i.txt", consoleplayer);
debugfile = fopen(filename, "w");
}
+ I_SetWindowTitle("Hexen");
I_InitGraphics();
I_SetGrabMouseCallback(D_GrabMouseCallback);
- I_SetWindowTitle("Hexen");
while (1)
{
diff --git a/src/i_endoom.c b/src/i_endoom.c
index b943e47c..b053b433 100644
--- a/src/i_endoom.c
+++ b/src/i_endoom.c
@@ -40,11 +40,6 @@ void I_Endoom(byte *endoom_data)
TXT_Init();
- // Make sure the new window has the right title and icon
-
- I_SetWindowTitle("Exit screen");
- I_SetWindowIcon();
-
// Write the data to the screen memory
screendata = TXT_GetScreenData();
diff --git a/src/i_main.c b/src/i_main.c
index bab514dd..d7cdcef6 100644
--- a/src/i_main.c
+++ b/src/i_main.c
@@ -25,6 +25,8 @@
//-----------------------------------------------------------------------------
+#include "config.h"
+
#include "SDL.h"
#include <signal.h>
@@ -32,7 +34,9 @@
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
-#else
+#endif
+
+#ifdef HAVE_SCHED_SETAFFINITY
#include <unistd.h>
#include <sched.h>
#endif
@@ -49,25 +53,34 @@
void D_DoomMain (void);
-int main(int argc, char **argv)
-{
+#if !defined(_WIN32) && !defined(HAVE_SCHED_SETAFFINITY)
+#warning No known way to set processor affinity on this platform.
+#warning You may experience crashes due to SDL_mixer.
+#endif
+
+int main(int argc, char **argv)
+{
// save arguments
- myargc = argc;
- myargv = argv;
+ myargc = argc;
+ myargv = argv;
+
+#ifdef _WIN32
// Set the process affinity mask so that all threads
- // run on the same processor. This is a workaround for a bug in
+ // run on the same processor. This is a workaround for a bug in
// SDL_mixer that causes occasional crashes.
-#ifdef _WIN32
if (!SetProcessAffinityMask(GetCurrentProcess(), 1))
{
fprintf(stderr, "Failed to set process affinity mask (%d)\n",
(int) GetLastError());
}
-#elif !defined(__APPLE__)
- // POSIX version:
+#endif
+
+#ifdef HAVE_SCHED_SETAFFINITY
+
+ // Linux version:
{
cpu_set_t set;
@@ -77,12 +90,13 @@ int main(int argc, char **argv)
sched_setaffinity(getpid(), sizeof(set), &set);
}
+
#endif
// start doom
-
- D_DoomMain ();
+
+ D_DoomMain ();
return 0;
-}
+}
diff --git a/src/i_video.c b/src/i_video.c
index 39aedc0c..8360ab9e 100644
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -20,7 +20,7 @@
// 02111-1307, USA.
//
// DESCRIPTION:
-// Low level graphics code using SDL.
+// DOOM graphics stuff for SDL.
//
//-----------------------------------------------------------------------------
@@ -128,8 +128,14 @@ static screen_mode_t *screen_modes_corrected[] = {
char *video_driver = "";
+// SDL surface for the screen.
+
static SDL_Surface *screen;
+// Window title
+
+static char *window_title = "";
+
// palette
static SDL_Color palette[256];
@@ -752,6 +758,11 @@ static void I_ReadMouse(void)
//
void I_StartTic (void)
{
+ if (!initialised)
+ {
+ return;
+ }
+
I_GetEvent();
if (usemouse && !nomouse)
@@ -999,11 +1010,21 @@ void I_SetPalette (byte *doompalette)
void I_SetWindowTitle(char *title)
{
+ window_title = title;
+}
+
+//
+// Call the SDL function to set the window title, based on
+// the title set with I_SetWindowTitle.
+//
+
+static void I_InitWindowTitle(void)
+{
char *buf;
- buf = Z_Malloc(strlen(title) + strlen(PACKAGE_STRING) + 5,
+ buf = Z_Malloc(strlen(window_title) + strlen(PACKAGE_STRING) + 5,
PU_STATIC, NULL);
- sprintf(buf, "%s - %s", title, PACKAGE_STRING);
+ sprintf(buf, "%s - %s", window_title, PACKAGE_STRING);
SDL_WM_SetCaption(buf, NULL);
@@ -1012,7 +1033,7 @@ void I_SetWindowTitle(char *title)
// Set the application icon
-void I_SetWindowIcon(void)
+static void I_InitWindowIcon(void)
{
SDL_Surface *surface;
Uint8 *mask;
@@ -1669,6 +1690,12 @@ void I_InitGraphics(void)
}
}
+ // Set up title and icon. Windows cares about the ordering; this
+ // has to be done before the call to SDL_SetVideoMode.
+
+ I_InitWindowTitle();
+ I_InitWindowIcon();
+
// Set the video mode.
flags |= SDL_SWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF;
@@ -1706,8 +1733,6 @@ void I_InitGraphics(void)
I_SetPalette(doompal);
SDL_SetColors(screen, palette, 0, 256);
- I_SetWindowIcon();
-
CreateCursors();
UpdateFocus();
diff --git a/src/i_video.h b/src/i_video.h
index 1c668474..af865287 100644
--- a/src/i_video.h
+++ b/src/i_video.h
@@ -91,7 +91,6 @@ void I_BeginRead (void);
void I_EndRead (void);
void I_SetWindowTitle(char *title);
-void I_SetWindowIcon(void);
void I_CheckIsScreensaver(void);
void I_SetGrabMouseCallback(grabmouse_callback_t func);
diff --git a/src/m_config.c b/src/m_config.c
index a4db1c98..cfdf12a5 100644
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -34,7 +34,6 @@
#include "config.h"
-#include "d_englsh.h"
#include "doomtype.h"
#include "doomkeys.h"
#include "doomfeatures.h"
diff --git a/src/w_file_win32.c b/src/w_file_win32.c
index 0af7928e..05d3c445 100644
--- a/src/w_file_win32.c
+++ b/src/w_file_win32.c
@@ -1,187 +1,185 @@
-// Emacs style mode select -*- C++ -*-
-//-----------------------------------------------------------------------------
-//
-// Copyright(C) 1993-1996 Id Software, Inc.
-// Copyright(C) 2008 Simon Howard
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-// 02111-1307, USA.
-//
-// DESCRIPTION:
-// WAD I/O functions.
-//
-//-----------------------------------------------------------------------------
-
-#include "config.h"
-
-#ifdef _WIN32
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-#include <stdio.h>
-
-#include "i_system.h"
-#include "w_file.h"
-#include "z_zone.h"
-
-typedef struct
-{
- wad_file_t wad;
- HANDLE handle;
- HANDLE handle_map;
-} win32_wad_file_t;
-
-extern wad_file_class_t win32_wad_file;
-
-static void MapFile(win32_wad_file_t *wad, char *filename)
-{
- wad->handle_map = CreateFileMapping(wad->handle,
- NULL,
- PAGE_WRITECOPY,
- 0,
- 0,
- NULL);
-
- if (wad->handle_map == NULL)
- {
- fprintf(stderr, "W_Win32_OpenFile: Unable to CreateFileMapping() "
- "for %s\n", filename);
- return;
- }
-
- wad->wad.mapped = MapViewOfFile(wad->handle_map,
- FILE_MAP_COPY,
- 0, 0, 0);
-
- if (wad->wad.mapped == NULL)
- {
- fprintf(stderr, "W_Win32_OpenFile: Unable to MapViewOfFile() for %s\n",
- filename);
- }
-}
-
-unsigned int GetFileLength(HANDLE handle)
-{
- DWORD result;
-
- result = SetFilePointer(handle, 0, NULL, FILE_END);
-
- if (result == INVALID_SET_FILE_POINTER)
- {
- I_Error("W_Win32_OpenFile: Failed to read file length");
- }
-
- return result;
-}
-
-static wad_file_t *W_Win32_OpenFile(char *path)
-{
- win32_wad_file_t *result;
- HANDLE handle;
- OFSTRUCT fileinfo;
-
- handle = (HANDLE) OpenFile(path, &fileinfo, OF_READ);
-
- if (handle == (HANDLE) HFILE_ERROR)
- {
- return NULL;
- }
-
- // Create a new win32_wad_file_t to hold the file handle.
-
- result = Z_Malloc(sizeof(win32_wad_file_t), PU_STATIC, 0);
- result->wad.file_class = &win32_wad_file;
- result->wad.length = GetFileLength(handle);
- result->handle = handle;
-
- // Try to map the file into memory with mmap:
-
- MapFile(result, path);
-
- return &result->wad;
-}
-
-static void W_Win32_CloseFile(wad_file_t *wad)
-{
- win32_wad_file_t *win32_wad;
-
- win32_wad = (win32_wad_file_t *) wad;
-
- // If mapped, unmap it.
-
- if (win32_wad->wad.mapped != NULL)
- {
- UnmapViewOfFile(win32_wad->wad.mapped);
- }
-
- if (win32_wad->handle_map != NULL)
- {
- CloseHandle(win32_wad->handle_map);
- }
-
- // Close the file
-
- if (win32_wad->handle != NULL)
- {
- CloseHandle(win32_wad->handle);
- }
-
- Z_Free(win32_wad);
-}
-
-// Read data from the specified position in the file into the
-// provided buffer. Returns the number of bytes read.
-
-size_t W_Win32_Read(wad_file_t *wad, unsigned int offset,
- void *buffer, size_t buffer_len)
-{
- win32_wad_file_t *win32_wad;
- DWORD bytes_read;
- DWORD result;
-
- win32_wad = (win32_wad_file_t *) wad;
-
- // Jump to the specified position in the file.
-
- result = SetFilePointer(win32_wad->handle, offset, NULL, FILE_BEGIN);
-
- if (result == INVALID_SET_FILE_POINTER)
- {
- I_Error("W_Win32_Read: Failed to set file pointer to %i",
- offset);
- }
-
- // Read into the buffer.
-
- if (!ReadFile(win32_wad->handle, buffer, buffer_len, &bytes_read, NULL))
- {
- I_Error("W_Win32_Read: Error reading from file");
- }
-
- return bytes_read;
-}
-
-
-wad_file_class_t win32_wad_file =
-{
- W_Win32_OpenFile,
- W_Win32_CloseFile,
- W_Win32_Read,
-};
-
-
-#endif /* #ifdef _WIN32 */
-
+// Emacs style mode select -*- C++ -*-
+//-----------------------------------------------------------------------------
+//
+// Copyright(C) 1993-1996 Id Software, Inc.
+// Copyright(C) 2008 Simon Howard
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
+//
+// DESCRIPTION:
+// WAD I/O functions.
+//
+//-----------------------------------------------------------------------------
+
+#include "config.h"
+
+#ifdef _WIN32
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+#include "i_system.h"
+#include "w_file.h"
+#include "z_zone.h"
+
+typedef struct
+{
+ wad_file_t wad;
+ HANDLE handle;
+ HANDLE handle_map;
+} win32_wad_file_t;
+
+extern wad_file_class_t win32_wad_file;
+
+static void MapFile(win32_wad_file_t *wad, char *filename)
+{
+ wad->handle_map = CreateFileMapping(wad->handle,
+ NULL,
+ PAGE_WRITECOPY,
+ 0,
+ 0,
+ NULL);
+
+ if (wad->handle_map == NULL)
+ {
+ fprintf(stderr, "W_Win32_OpenFile: Unable to CreateFileMapping() "
+ "for %s\n", filename);
+ return;
+ }
+
+ wad->wad.mapped = MapViewOfFile(wad->handle_map,
+ FILE_MAP_COPY,
+ 0, 0, 0);
+
+ if (wad->wad.mapped == NULL)
+ {
+ fprintf(stderr, "W_Win32_OpenFile: Unable to MapViewOfFile() for %s\n",
+ filename);
+ }
+}
+
+unsigned int GetFileLength(HANDLE handle)
+{
+ DWORD result;
+
+ result = SetFilePointer(handle, 0, NULL, FILE_END);
+
+ if (result == INVALID_SET_FILE_POINTER)
+ {
+ I_Error("W_Win32_OpenFile: Failed to read file length");
+ }
+
+ return result;
+}
+
+static wad_file_t *W_Win32_OpenFile(char *path)
+{
+ win32_wad_file_t *result;
+ HANDLE handle;
+ OFSTRUCT fileinfo;
+
+ handle = (HANDLE) OpenFile(path, &fileinfo, OF_READ);
+
+ if (handle == (HANDLE) HFILE_ERROR)
+ {
+ return NULL;
+ }
+
+ // Create a new win32_wad_file_t to hold the file handle.
+
+ result = Z_Malloc(sizeof(win32_wad_file_t), PU_STATIC, 0);
+ result->wad.file_class = &win32_wad_file;
+ result->wad.length = GetFileLength(handle);
+ result->handle = handle;
+
+ // Try to map the file into memory with mmap:
+
+ MapFile(result, path);
+
+ return &result->wad;
+}
+
+static void W_Win32_CloseFile(wad_file_t *wad)
+{
+ win32_wad_file_t *win32_wad;
+
+ win32_wad = (win32_wad_file_t *) wad;
+
+ // If mapped, unmap it.
+
+ if (win32_wad->wad.mapped != NULL)
+ {
+ UnmapViewOfFile(win32_wad->wad.mapped);
+ }
+
+ if (win32_wad->handle_map != NULL)
+ {
+ CloseHandle(win32_wad->handle_map);
+ }
+
+ // Close the file
+
+ if (win32_wad->handle != NULL)
+ {
+ CloseHandle(win32_wad->handle);
+ }
+
+ Z_Free(win32_wad);
+}
+
+// Read data from the specified position in the file into the
+// provided buffer. Returns the number of bytes read.
+
+size_t W_Win32_Read(wad_file_t *wad, unsigned int offset,
+ void *buffer, size_t buffer_len)
+{
+ win32_wad_file_t *win32_wad;
+ DWORD bytes_read;
+ DWORD result;
+
+ win32_wad = (win32_wad_file_t *) wad;
+
+ // Jump to the specified position in the file.
+
+ result = SetFilePointer(win32_wad->handle, offset, NULL, FILE_BEGIN);
+
+ if (result == INVALID_SET_FILE_POINTER)
+ {
+ I_Error("W_Win32_Read: Failed to set file pointer to %i",
+ offset);
+ }
+
+ // Read into the buffer.
+
+ if (!ReadFile(win32_wad->handle, buffer, buffer_len, &bytes_read, NULL))
+ {
+ I_Error("W_Win32_Read: Error reading from file");
+ }
+
+ return bytes_read;
+}
+
+
+wad_file_class_t win32_wad_file =
+{
+ W_Win32_OpenFile,
+ W_Win32_CloseFile,
+ W_Win32_Read,
+};
+
+
+#endif /* #ifdef _WIN32 */
+
diff --git a/textscreen/Makefile.am b/textscreen/Makefile.am
index 752e6361..76fe8f0f 100644
--- a/textscreen/Makefile.am
+++ b/textscreen/Makefile.am
@@ -1,5 +1,5 @@
-AM_CFLAGS = @SDL_CFLAGS@ -I../src
+AM_CFLAGS = -I../src
# build this directory before the examples directory.
diff --git a/textscreen/examples/Makefile.am b/textscreen/examples/Makefile.am
index f6d247ea..e314e7e8 100644
--- a/textscreen/examples/Makefile.am
+++ b/textscreen/examples/Makefile.am
@@ -1,5 +1,5 @@
-AM_CFLAGS = @SDL_CFLAGS@ -I.. -I../../src
+AM_CFLAGS = -I.. -I../../src
noinst_PROGRAMS=guitest calculator