X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=aa30167af3c2eb52e07aa3426de1ff5fc9d34703;hb=7ecf99096c7c23909ada034e05d971464f66552f;hp=a7ad871bdd019d4735d66077a01e15b24fbebabd;hpb=07e47c9cc4c619ab000b1dd8d8b318eaf5bae3b3;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index a7ad871b..aa30167a 100644 --- a/src/init.c +++ b/src/init.c @@ -38,9 +38,6 @@ #define CONFIG_TOKEN_FONT_INITIAL "font.initial" #define CONFIG_TOKEN_GLOBAL_BUSY "global.busy" -#define DEBUG_PRINT_INIT_TIMESTAMPS TRUE -#define DEBUG_PRINT_INIT_TIMESTAMPS_DEPTH 0 - static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS]; static struct GraphicInfo anim_initial; @@ -89,72 +86,6 @@ static int copy_properties[][5] = }; -static void print_timestamp_ext(char *message, char *mode) -{ -#if DEBUG -#if DEBUG_PRINT_INIT_TIMESTAMPS - static char *debug_message = NULL; - static char *last_message = NULL; - static int counter_nr = 0; - int max_depth = DEBUG_PRINT_INIT_TIMESTAMPS_DEPTH; - - checked_free(debug_message); - debug_message = getStringCat3(mode, " ", message); - - if (strEqual(mode, "INIT")) - { - debug_print_timestamp(counter_nr, NULL); - - if (counter_nr + 1 < max_depth) - debug_print_timestamp(counter_nr, debug_message); - - counter_nr++; - - debug_print_timestamp(counter_nr, NULL); - } - else if (strEqual(mode, "DONE")) - { - counter_nr--; - - if (counter_nr + 1 < max_depth || - (counter_nr == 0 && max_depth == 1)) - { - last_message = message; - - if (counter_nr == 0 && max_depth == 1) - { - checked_free(debug_message); - debug_message = getStringCat3("TIME", " ", message); - } - - debug_print_timestamp(counter_nr, debug_message); - } - } - else if (!strEqual(mode, "TIME") || - !strEqual(message, last_message)) - { - if (counter_nr < max_depth) - debug_print_timestamp(counter_nr, debug_message); - } -#endif -#endif -} - -static void print_timestamp_init(char *message) -{ - print_timestamp_ext(message, "INIT"); -} - -static void print_timestamp_time(char *message) -{ - print_timestamp_ext(message, "TIME"); -} - -static void print_timestamp_done(char *message) -{ - print_timestamp_ext(message, "DONE"); -} - void DrawInitAnim() { struct GraphicInfo *graphic_info_last = graphic_info; @@ -1196,7 +1127,6 @@ static int get_graphic_parameter_value(char *value_raw, char *suffix, int type) if (strEqual(value_raw, ARG_UNDEFINED)) return ARG_UNDEFINED_VALUE; -#if 1 if (type == TYPE_ELEMENT) { char *value = getHashEntry(element_token_hash, value_raw); @@ -1210,36 +1140,6 @@ static int get_graphic_parameter_value(char *value_raw, char *suffix, int type) return (value != NULL ? atoi(value) : IMG_UNDEFINED); } -#else - - int i; - int x = 0; - - /* !!! THIS IS BUGGY !!! NOT SURE IF YOU GET ELEMENT ID OR GRAPHIC ID !!! */ - /* !!! (possible reason why ".clone_from" with elements doesn't work) !!! */ - - /* !!! OPTIMIZE THIS BY USING HASH !!! */ - for (i = 0; i < MAX_NUM_ELEMENTS; i++) - if (strEqual(element_info[i].token_name, value_raw)) - return i; - - /* !!! OPTIMIZE THIS BY USING HASH !!! */ - for (i = 0; image_config[i].token != NULL; i++) - { - int len_config_value = strlen(image_config[i].value); - - if (!strEqual(&image_config[i].value[len_config_value - 4], ".pcx") && - !strEqual(&image_config[i].value[len_config_value - 4], ".wav") && - !strEqual(image_config[i].value, UNDEFINED_FILENAME)) - continue; - - if (strEqual(image_config[i].token, value_raw)) - return x; - - x++; - } -#endif - return -1; } @@ -5059,7 +4959,8 @@ static void InitGlobal() /* create hash from graphic token list */ graphic_token_hash = newSetupFileHash(); for (graphic = 0, i = 0; image_config[i].token != NULL; i++) - if (strSuffix(image_config[i].value, ".pcx") || + if (strSuffix(image_config[i].value, ".png") || + strSuffix(image_config[i].value, ".pcx") || strSuffix(image_config[i].value, ".wav") || strEqual(image_config[i].value, UNDEFINED_FILENAME)) setHashEntry(graphic_token_hash, @@ -5313,6 +5214,7 @@ void Execute_Command(char *command) #if DEBUG #if defined(TARGET_SDL) +#if !defined(TARGET_SDL2) else if (strEqual(command, "SDL_ListModes")) { SDL_Rect **modes; @@ -5347,6 +5249,7 @@ void Execute_Command(char *command) exit(0); } #endif +#endif #endif else @@ -6276,6 +6179,10 @@ void KeyboardAutoRepeatOffUnlessAutoplay() void DisplayExitMessage(char *format, va_list ap) { + // check if draw buffer and fonts for exit message are already available + if (drawto == NULL || font_initial[NUM_INITIAL_FONTS - 1].bitmap == NULL) + return; + int font_1 = FC_RED; int font_2 = FC_YELLOW; int font_3 = FC_BLUE; @@ -6389,7 +6296,7 @@ void OpenAll() InitVideoDisplay(); InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen); - InitEventFilter(FilterMouseMotionEvents); + InitEventFilter(FilterEvents); print_timestamp_time("[init video stuff]"); @@ -6485,8 +6392,14 @@ void CloseAllAndExit(int exit_value) FreeAllImages(); #if defined(TARGET_SDL) +#if defined(TARGET_SDL2) + // !!! TODO !!! + // set a flag to tell the network server thread to quit and wait for it + // using SDL_WaitThread() +#else if (network_server) /* terminate network server */ SDL_KillThread(server_thread); +#endif #endif CloseVideoDisplay();