rnd-20030719-1-src
[rocksndiamonds.git] / src / libgame / sdl.c
index 18e384c5e13530a60fb75db743059714e5f902b6..95ef6eef6e9d97dcf3f724c45a1febc7af3d2022 100644 (file)
@@ -26,9 +26,9 @@
 /* functions from SGE library */
 inline void sge_Line(SDL_Surface *, Sint16, Sint16, Sint16, Sint16, Uint32);
 
-#ifdef PLATFORM_WIN32
+/* #ifdef PLATFORM_WIN32 */
 #define FULLSCREEN_BUG
-#endif
+/* #endif */
 
 /* stuff needed to work around SDL/Windows fullscreen drawing bug */
 static int fullscreen_width;
@@ -866,6 +866,14 @@ void sge_LineRGB(SDL_Surface *Surface, Sint16 x1, Sint16 y1, Sint16 x2,
 
 inline void SDLPutPixel(Bitmap *dst_bitmap, int x, int y, Pixel pixel)
 {
+#ifdef FULLSCREEN_BUG
+  if (dst_bitmap == backbuffer || dst_bitmap == window)
+  {
+    x += video_xoffset;
+    y += video_yoffset;
+  }
+#endif
+
   sge_PutPixel(dst_bitmap->surface, x, y, pixel);
 }
 
@@ -1354,14 +1362,14 @@ inline void SDLNextEvent(Event *event)
   }
   else if (event->type == EVENT_MOTIONNOTIFY)
   {
-    if (((ButtonEvent *)event)->x > video_xoffset)
-      ((ButtonEvent *)event)->x -= video_xoffset;
+    if (((MotionEvent *)event)->x > video_xoffset)
+      ((MotionEvent *)event)->x -= video_xoffset;
     else
-      ((ButtonEvent *)event)->x = 0;
-    if (((ButtonEvent *)event)->y > video_yoffset)
-      ((ButtonEvent *)event)->y -= video_yoffset;
+      ((MotionEvent *)event)->x = 0;
+    if (((MotionEvent *)event)->y > video_yoffset)
+      ((MotionEvent *)event)->y -= video_yoffset;
     else
-      ((ButtonEvent *)event)->y = 0;
+      ((MotionEvent *)event)->y = 0;
   }
 #endif
 }