diff options
author | Simon Howard | 2008-12-20 20:25:22 +0000 |
---|---|---|
committer | Simon Howard | 2008-12-20 20:25:22 +0000 |
commit | b9b0c2abfbe194baf6d497f1c4a2165769f64ab3 (patch) | |
tree | a82b96f274bd7427b963964f37242607a27c593d | |
parent | 0ec9859ec8cf39ce1223516161fb39ea44ed5c33 (diff) | |
parent | acd1a13a4f70973d7616df3f6de43f8f79b8e392 (diff) | |
download | chocolate-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-- | ChangeLog | 273 | ||||
-rw-r--r-- | NEWS | 42 | ||||
-rw-r--r-- | codeblocks/config.h | 6 | ||||
-rw-r--r-- | codeblocks/game-res.rc | 10 | ||||
-rw-r--r-- | codeblocks/setup-res.rc | 8 | ||||
-rw-r--r-- | configure.in | 24 | ||||
-rw-r--r-- | msvc/config.h | 6 | ||||
-rw-r--r-- | msvc/win32.rc | 10 | ||||
-rw-r--r-- | pcsound/Makefile.am | 2 | ||||
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/doom/d_main.c | 2 | ||||
-rw-r--r-- | src/doom/wi_stuff.c | 34 | ||||
-rw-r--r-- | src/heretic/d_main.c | 2 | ||||
-rw-r--r-- | src/hexen/h2_main.c | 2 | ||||
-rw-r--r-- | src/i_endoom.c | 5 | ||||
-rw-r--r-- | src/i_main.c | 38 | ||||
-rw-r--r-- | src/i_video.c | 37 | ||||
-rw-r--r-- | src/i_video.h | 1 | ||||
-rw-r--r-- | src/m_config.c | 1 | ||||
-rw-r--r-- | src/w_file_win32.c | 372 | ||||
-rw-r--r-- | textscreen/Makefile.am | 2 | ||||
-rw-r--r-- | textscreen/examples/Makefile.am | 2 |
22 files changed, 627 insertions, 256 deletions
@@ -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. @@ -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 |