rnd-20050603-1-src
[rocksndiamonds.git] / src / libgame / sdl.c
index 95ef6eef6e9d97dcf3f724c45a1febc7af3d2022..1bc222a958c49c227bfc9fa9a6a23bf853cd8a33 100644 (file)
@@ -71,7 +71,7 @@ inline void SDLInitVideoBuffer(DrawBuffer **backbuffer, DrawWindow **window,
   fullscreen_yoffset = 0;
 
 #ifdef FULLSCREEN_BUG
-  for (i=0; screen_xy[i][0] != -1; i++)
+  for (i = 0; screen_xy[i][0] != -1; i++)
   {
     if (video.width <= screen_xy[i][0] && video.height <= screen_xy[i][1])
     {
@@ -340,11 +340,11 @@ inline void SDLDrawLines(SDL_Surface *surface, struct XY *points,
   int i, x, y;
   int line_width = 4;
 
-  for (i=0; i<num_points - 1; i++)
+  for (i = 0; i < num_points - 1; i++)
   {
-    for (x=0; x<line_width; x++)
+    for (x = 0; x < line_width; x++)
     {
-      for (y=0; y<line_width; y++)
+      for (y = 0; y < line_width; y++)
       {
        int dx = x - line_width / 2;
        int dy = y - line_width / 2;
@@ -889,9 +889,9 @@ inline void SDLInvertArea(Bitmap *bitmap, int src_x, int src_y,
 {
   int x, y;
 
-  for (y=src_y; y < src_y + height; y++)
+  for (y = src_y; y < src_y + height; y++)
   {
-    for (x=src_x; x < src_x + width; x++)
+    for (x = src_x; x < src_x + width; x++)
     {
       Uint32 pixel = SDLGetPixel(bitmap, x, y);
 
@@ -906,9 +906,9 @@ inline void SDLCopyInverseMasked(Bitmap *src_bitmap, Bitmap *dst_bitmap,
 {
   int x, y;
 
-  for (y=0; y < height; y++)
+  for (y = 0; y < height; y++)
   {
-    for (x=0; x < width; x++)
+    for (x = 0; x < width; x++)
     {
       Uint32 pixel = SDLGetPixel(src_bitmap, src_x + x, src_y + y);
 
@@ -1116,9 +1116,8 @@ int zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst)
   -----------------------------------------------------------------------------
   zoomSurface()
 
-  Zoomes a 32bit or 8bit 'src' surface to newly created 'dst' surface.
+  Zooms a 32bit or 8bit 'src' surface to newly created 'dst' surface.
   'zoomx' and 'zoomy' are scaling factors for width and height.
-  If 'smooth' is 1 then the destination 32bit surface is anti-aliased.
   If the surface is not 8bit or 32bit RGBA/ABGR it will be converted
   into a 32bit RGBA format on the fly.
   -----------------------------------------------------------------------------
@@ -1181,7 +1180,7 @@ SDL_Surface *zoomSurface(SDL_Surface *src, int dst_width, int dst_height)
   else
   {
     /* copy palette */
-    for (i=0; i < zoom_src->format->palette->ncolors; i++)
+    for (i = 0; i < zoom_src->format->palette->ncolors; i++)
       zoom_dst->format->palette->colors[i] =
        zoom_src->format->palette->colors[i];
     zoom_dst->format->palette->ncolors = zoom_src->format->palette->ncolors;
@@ -1277,19 +1276,26 @@ static SDL_Cursor *create_cursor(struct MouseCursorInfo *cursor_info)
 void SDLSetMouseCursor(struct MouseCursorInfo *cursor_info)
 {
   static struct MouseCursorInfo *last_cursor_info = NULL;
+  static struct MouseCursorInfo *last_cursor_info2 = NULL;
   static SDL_Cursor *cursor_default = NULL;
   static SDL_Cursor *cursor_current = NULL;
 
+  /* if invoked for the first time, store the SDL default cursor */
   if (cursor_default == NULL)
     cursor_default = SDL_GetCursor();
 
+  /* only create new cursor if cursor info (custom only) has changed */
   if (cursor_info != NULL && cursor_info != last_cursor_info)
   {
     cursor_current = create_cursor(cursor_info);
     last_cursor_info = cursor_info;
   }
 
-  SDL_SetCursor(cursor_info ? cursor_current : cursor_default);
+  /* only set new cursor if cursor info (custom or NULL) has changed */
+  if (cursor_info != last_cursor_info2)
+    SDL_SetCursor(cursor_info ? cursor_current : cursor_default);
+
+  last_cursor_info2 = cursor_info;
 }
 
 
@@ -1447,7 +1453,7 @@ void SDLInitJoysticks()
     }
   }
 
-  for (i=0; i<MAX_PLAYERS; i++)
+  for (i = 0; i < MAX_PLAYERS; i++)
   {
     char *device_name = setup.input[i].joy.device_name;
     int joystick_nr = getJoystickNrFromDeviceName(device_name);