rnd-20140430-1-src
[rocksndiamonds.git] / src / libgame / sdl.c
index 120fe30c072926736442aa0bd26d3b1f21a4a482..0b27fafbfec3ad71b4840a2b885d3c96282cc297 100644 (file)
@@ -610,6 +610,8 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen)
 #endif
   SDL_Surface *new_surface = NULL;
 
+  SetWindowTitle();
+
   if (*backbuffer == NULL)
     *backbuffer = CreateBitmapStruct();
 
@@ -814,13 +816,26 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen)
   {
     SDL_SysWMinfo wminfo;
     HWND hwnd;
+    boolean wminfo_success = FALSE;
 
     SDL_VERSION(&wminfo.version);
-    SDL_GetWMInfo(&wminfo);
+#if defined(TARGET_SDL2)
+    if (sdl_window)
+      wminfo_success = SDL_GetWindowWMInfo(sdl_window, &wminfo);
+#else
+    wminfo_success = (SDL_GetWMInfo(&wminfo) == 1);
+#endif
 
-    hwnd = wminfo.window;
+    if (wminfo_success)
+    {
+#if defined(TARGET_SDL2)
+      hwnd = wminfo.info.win.window;
+#else
+      hwnd = wminfo.window;
+#endif
 
-    DragAcceptFiles(hwnd, TRUE);
+      DragAcceptFiles(hwnd, TRUE);
+    }
   }
 #endif
 #endif
@@ -828,6 +843,15 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen)
   return success;
 }
 
+void SDLSetWindowTitle()
+{
+#if defined(TARGET_SDL2)
+  SDL_SetWindowTitle(sdl_window, program.window_title);
+#else
+  SDL_WM_SetCaption(program.window_title, program.window_title);
+#endif
+}
+
 #if defined(TARGET_SDL2)
 void SDLSetWindowScaling(int window_scaling_percent)
 {
@@ -847,6 +871,8 @@ void SDLSetWindowScaling(int window_scaling_percent)
   video.window_scaling_percent = window_scaling_percent;
   video.window_width  = new_window_width;
   video.window_height = new_window_height;
+
+  SetWindowTitle();
 }
 
 void SDLSetWindowScalingQuality(char *window_scaling_quality)
@@ -2499,9 +2525,17 @@ void SDLHandleWindowManagerEvent(Event *event)
   SDL_SysWMEvent *syswmevent = (SDL_SysWMEvent *)event;
   SDL_SysWMmsg *syswmmsg = (SDL_SysWMmsg *)(syswmevent->msg);
 
+#if defined(TARGET_SDL2)
+  if (syswmmsg->msg.win.msg == WM_DROPFILES)
+#else
   if (syswmmsg->msg == WM_DROPFILES)
+#endif
   {
+#if defined(TARGET_SDL2)
+    HDROP hdrop = (HDROP)syswmmsg->msg.win.wParam;
+#else
     HDROP hdrop = (HDROP)syswmmsg->wParam;
+#endif
     int i, num_files;
 
     printf("::: SDL_SYSWMEVENT:\n");
@@ -2518,7 +2552,11 @@ void SDLHandleWindowManagerEvent(Event *event)
       printf("::: - '%s'\n", buffer);
     }
 
+#if defined(TARGET_SDL2)
+    DragFinish((HDROP)syswmmsg->msg.win.wParam);
+#else
     DragFinish((HDROP)syswmmsg->wParam);
+#endif
   }
 #endif
 }