From 92b6a44481d43254055576a02ce4e335eeab12e9 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Tue, 11 Mar 2014 22:33:06 +0100 Subject: [PATCH] rnd-20140311-1-src --- src/config.c | 25 +++++++++++++++++++++++++ src/conftime.h | 2 +- src/events.c | 6 ++++++ src/init.c | 2 +- src/libgame/sdl.c | 9 +++++++++ src/libgame/sdl.h | 1 + src/libgame/system.c | 24 +++++++++++++++++++++++- src/libgame/system.h | 9 +++++++++ src/main.c | 11 ++++++++++- src/screens.c | 16 ++++++++++++++++ 10 files changed, 101 insertions(+), 4 deletions(-) diff --git a/src/config.c b/src/config.c index bb1c6ee4..0fec462c 100644 --- a/src/config.c +++ b/src/config.c @@ -98,6 +98,29 @@ char *getProgramInitString() char *getWindowTitleString() { +#if 1 + static char *window_title_string = NULL; + + checked_free(window_title_string); + +#ifdef DEBUG + window_title_string = checked_malloc(strlen(getProgramInitString()) + 20 + + strlen(getCompileDateString()) + 2 + 1); + + sprintf(window_title_string, "%s (%d %%) [%s]", + getProgramInitString(), setup.window_scaling_percent, + getCompileDateString()); +#else + window_title_string = checked_malloc(strlen(getProgramInitString()) + 20); + + sprintf(window_title_string, "%s (%d %%)", + getProgramInitString(), setup.window_scaling_percent); +#endif + + return window_title_string; + +#else + #ifdef DEBUG static char *window_title_string = NULL; @@ -114,4 +137,6 @@ char *getWindowTitleString() #else return getProgramInitString(); #endif + +#endif } diff --git a/src/conftime.h b/src/conftime.h index 5e5f42be..ea64b46d 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "2014-03-07 21:52" +#define COMPILE_DATE_STRING "2014-03-11 22:29" diff --git a/src/events.c b/src/events.c index d261a4db..f1d9ad11 100644 --- a/src/events.c +++ b/src/events.c @@ -465,9 +465,11 @@ void HandleWindowEvent(WindowEvent *event) int new_xpercent = (100 * new_window_width / video.width); int new_ypercent = (100 * new_window_height / video.height); +#if 0 printf("::: RESIZED from %d, %d to %d, %d\n", video.window_width, video.window_height, new_window_width, new_window_height); +#endif setup.window_scaling_percent = video.window_scaling_percent = MIN(MAX(MIN_WINDOW_SCALING_PERCENT, MIN(new_xpercent, new_ypercent)), @@ -476,11 +478,15 @@ void HandleWindowEvent(WindowEvent *event) video.window_width = new_window_width; video.window_height = new_window_height; +#if 0 printf("::: setup.window_scaling_percent set to %d\n", setup.window_scaling_percent); +#endif if (game_status == GAME_MODE_SETUP) RedrawSetupScreenAfterFullscreenToggle(); + + SetWindowTitle(); } #else // prevent slightly wrong scaling factor due to rounding differences diff --git a/src/init.c b/src/init.c index ec2f8b2e..d6df6a85 100644 --- a/src/init.c +++ b/src/init.c @@ -5644,7 +5644,7 @@ void InitGfx() font_height = getFontHeight(FC_RED); -#if 1 +#if 0 DrawInitTextAlways(getWindowTitleString(), 20, FC_YELLOW); #else DrawInitTextAlways(getProgramInitString(), 20, FC_YELLOW); diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index 120fe30c..bfcd7ead 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -610,6 +610,8 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) #endif SDL_Surface *new_surface = NULL; + SetWindowTitle(); + if (*backbuffer == NULL) *backbuffer = CreateBitmapStruct(); @@ -829,6 +831,11 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen) } #if defined(TARGET_SDL2) +void SDLSetWindowTitle() +{ + SDL_SetWindowTitle(sdl_window, program.window_title); +} + void SDLSetWindowScaling(int window_scaling_percent) { if (sdl_window == NULL) @@ -847,6 +854,8 @@ void SDLSetWindowScaling(int window_scaling_percent) video.window_scaling_percent = window_scaling_percent; video.window_width = new_window_width; video.window_height = new_window_height; + + SetWindowTitle(); } void SDLSetWindowScalingQuality(char *window_scaling_quality) diff --git a/src/libgame/sdl.h b/src/libgame/sdl.h index 8f64ef18..a69e2350 100644 --- a/src/libgame/sdl.h +++ b/src/libgame/sdl.h @@ -437,6 +437,7 @@ struct MouseCursorInfo #if defined(TARGET_SDL2) SDL_Surface *SDL_DisplayFormat(SDL_Surface *); +void SDLSetWindowTitle(void); void SDLSetWindowScaling(int); void SDLSetWindowScalingQuality(char *); void SDLSetWindowFullscreen(boolean); diff --git a/src/libgame/system.c b/src/libgame/system.c index 7902f42b..fee0b17c 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -75,7 +75,11 @@ int FrameCounter = 0; void InitProgramInfo(char *argv0, char *userdata_subdir, char *userdata_subdir_unix, - char *program_title, char *window_title, char *icon_title, + char *program_title, +#if 0 + char *window_title, +#endif + char *icon_title, char *x11_icon_filename, char *x11_iconmask_filename, char *sdl_icon_filename, char *msdos_cursor_filename, char *cookie_prefix, char *filename_prefix, @@ -89,7 +93,11 @@ void InitProgramInfo(char *argv0, program.userdata_path = getUserGameDataDir(); program.program_title = program_title; +#if 1 + program.window_title = "(undefined)"; +#else program.window_title = window_title; +#endif program.icon_title = icon_title; program.x11_icon_filename = x11_icon_filename; @@ -108,6 +116,20 @@ void InitProgramInfo(char *argv0, program.error_file = stderr; } +void SetWindowTitle() +{ + program.window_title = program.window_title_function(); + +#if defined(TARGET_SDL) + SDLSetWindowTitle(); +#endif +} + +void InitWindowTitleFunction(char *(*window_title_function)(void)) +{ + program.window_title_function = window_title_function; +} + void InitExitMessageFunction(void (*exit_message_function)(char *, va_list)) { program.exit_message_function = exit_message_function; diff --git a/src/libgame/system.h b/src/libgame/system.h index 1475ab69..b9c74003 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -711,6 +711,7 @@ struct ProgramInfo int version_minor; int version_patch; + char *(*window_title_function)(void); void (*exit_message_function)(char *, va_list); void (*exit_function)(int); }; @@ -1288,9 +1289,17 @@ extern int FrameCounter; /* function definitions */ +#if 1 +void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, + char *, char *, char *, char *, int); +#else void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, int); +#endif + +void SetWindowTitle(); +void InitWindowTitleFunction(char *(*window_title_function)(void)); void InitExitMessageFunction(void (*exit_message_function)(char *, va_list)); void InitExitFunction(void (*exit_function)(int)); void InitPlatformDependentStuff(void); diff --git a/src/main.c b/src/main.c index c1982ccf..53ead02d 100644 --- a/src/main.c +++ b/src/main.c @@ -5602,14 +5602,23 @@ static void print_usage() int main(int argc, char *argv[]) { - char * window_title_string = getWindowTitleString(); +#if 1 + InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX, + PROGRAM_TITLE_STRING, ICON_TITLE_STRING, + X11_ICON_FILENAME, X11_ICONMASK_FILENAME, SDL_ICON_FILENAME, + MSDOS_POINTER_FILENAME, + COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL); +#else + char *window_title_string = getWindowTitleString(); InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX, PROGRAM_TITLE_STRING, window_title_string, ICON_TITLE_STRING, X11_ICON_FILENAME, X11_ICONMASK_FILENAME, SDL_ICON_FILENAME, MSDOS_POINTER_FILENAME, COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL); +#endif + InitWindowTitleFunction(getWindowTitleString); InitExitMessageFunction(DisplayExitMessage); InitExitFunction(CloseAllAndExit); InitPlatformDependentStuff(); diff --git a/src/screens.c b/src/screens.c index aeef4fec..c15d68b6 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1880,6 +1880,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) { game_status = GAME_MODE_LEVELNR; +#if 1 + ChangeViewportPropertiesIfNeeded(); +#endif + DrawChooseLevelNr(); } else if (pos >= MAIN_CONTROL_NAME && pos <= MAIN_CONTROL_QUIT) @@ -1919,6 +1923,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) gotoTopLevelDir(); #endif +#if 1 + ChangeViewportPropertiesIfNeeded(); +#endif + DrawChooseLevelSet(); } } @@ -1926,6 +1934,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) { game_status = GAME_MODE_SCORES; +#if 1 + ChangeViewportPropertiesIfNeeded(); +#endif + DrawHallOfFame(-1); } else if (pos == MAIN_CONTROL_EDITOR) @@ -1952,6 +1964,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) game_status = GAME_MODE_INFO; info_mode = INFO_MODE_MAIN; +#if 1 + ChangeViewportPropertiesIfNeeded(); +#endif + DrawInfoScreen(); } else if (pos == MAIN_CONTROL_GAME) -- 2.34.1