renamed function 'NextEvent' to 'WaitEvent'
[rocksndiamonds.git] / src / libgame / system.c
index 4f27d60a614cd0fb0649814fe7538391d6168d3f..a87ecc837f15206351dd228e89bedcf25512a925 100644 (file)
@@ -68,7 +68,7 @@ int                   FrameCounter = 0;
 void InitProgramInfo(char *argv0, char *config_filename, char *userdata_subdir,
                     char *program_title, char *icon_title,
                     char *icon_filename, char *cookie_prefix,
-                    int program_version)
+                    char *program_version_string, int program_version)
 {
   program.command_basepath = getBasePath(argv0);
   program.command_basename = getBaseName(argv0);
@@ -92,6 +92,8 @@ void InitProgramInfo(char *argv0, char *config_filename, char *userdata_subdir,
   program.version_build = VERSION_BUILD(program_version);
   program.version_ident = program_version;
 
+  program.version_string = program_version_string;
+
   program.log_filename[LOG_OUT_ID] = getLogFilename(LOG_OUT_BASENAME);
   program.log_filename[LOG_ERR_ID] = getLogFilename(LOG_ERR_BASENAME);
   program.log_file[LOG_OUT_ID] = program.log_file_default[LOG_OUT_ID] = stdout;
@@ -523,6 +525,18 @@ Bitmap *CreateBitmap(int width, int height, int depth)
 
 void ReCreateBitmap(Bitmap **bitmap, int width, int height)
 {
+  if (*bitmap != NULL)
+  {
+    /* if new bitmap size fits into old one, no need to re-create it */
+    if (width  <= (*bitmap)->width &&
+        height <= (*bitmap)->height)
+      return;
+
+    /* else adjust size so that old and new bitmap size fit into it */
+    width  = MAX(width,  (*bitmap)->width);
+    height = MAX(height, (*bitmap)->height);
+  }
+
   Bitmap *new_bitmap = CreateBitmap(width, height, DEFAULT_DEPTH);
 
   if (*bitmap == NULL)
@@ -1479,9 +1493,9 @@ boolean PendingEvent(void)
   return (SDL_PollEvent(NULL) ? TRUE : FALSE);
 }
 
-void NextEvent(Event *event)
+void WaitEvent(Event *event)
 {
-  SDLNextEvent(event);
+  SDLWaitEvent(event);
 }
 
 void PeekEvent(Event *event)
@@ -1493,6 +1507,12 @@ void PeekEvent(Event *event)
 #endif
 }
 
+void CheckQuitEvent(void)
+{
+  if (SDL_QuitRequested())
+    program.exit_function(0);
+}
+
 Key GetEventKey(KeyEvent *event, boolean with_modifiers)
 {
 #if defined(TARGET_SDL2)