fixed using SDL_DisplayFormat() even if video is not initialized yet
[rocksndiamonds.git] / src / libgame / system.c
index 25edb0effd65a959df172d43fa84f9c03d77ddcb..c04c77e5b40ea57947be26754ec3f2c088f683ac 100644 (file)
@@ -170,6 +170,8 @@ void InitGfxFieldInfo(int sx, int sy, int sxsize, int sysize,
 
   gfx.field_save_buffer = field_save_buffer;
 
+  gfx.drawing_area_changed = FALSE;
+
   SetDrawDeactivationMask(REDRAW_NONE);                /* do not deactivate drawing */
   SetDrawBackgroundMask(REDRAW_NONE);          /* deactivate masked drawing */
 }
@@ -245,6 +247,11 @@ void InitGfxCustomArtworkInfo()
   gfx.draw_init_text = TRUE;
 }
 
+void InitGfxOtherSettings()
+{
+  gfx.cursor_mode = CURSOR_DEFAULT;
+}
+
 void SetDrawDeactivationMask(int draw_deactivation_mask)
 {
   gfx.draw_deactivation_mask = draw_deactivation_mask;
@@ -354,6 +361,8 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen)
 
   SDLInitVideoBuffer(&backbuffer, &window, fullscreen);
 
+  video.initialized = TRUE;
+
   drawto = backbuffer;
 }
 
@@ -463,6 +472,16 @@ boolean DrawingOnBackground(int x, int y)
          CheckDrawingArea(x, y, 1, 1, gfx.draw_background_mask));
 }
 
+boolean DrawingAreaChanged()
+{
+  int drawing_area_changed = gfx.drawing_area_changed;
+
+  // reset flag for change of drawing area after querying it
+  gfx.drawing_area_changed = FALSE;
+
+  return drawing_area_changed;
+}
+
 static boolean InClippedRectangle(Bitmap *bitmap, int *x, int *y,
                                  int *width, int *height, boolean is_dest)
 {
@@ -1250,6 +1269,8 @@ void SetMouseCursor(int mode)
                mode == CURSOR_PLAYFIELD ? cursor_playfield : NULL);
 
   SDLSetMouseCursor(cursor_new);
+
+  gfx.cursor_mode = mode;
 }