Re: [GnomeMeeting-devel-list] win32 build issues



Hi Julien;

Julien PUYDT schrieb:

....
Well, well, well... I'll have to dig into SDL to find out if there's something special to do on win32...

Thanks for the report :-)

There is quite a bit unpredictable in SDL-Win32. I tried to get ekiga fullscreen running on Windows this weekend. The outcome is not very satisfying. I made the observation that ekiga does not crash but happily continues behind the SDL window when you switch back from fullscreen. But don't dare to switch to fullscreen back again. The fullscreen window can be removed by pressing the disconnect button. So SDL for Windows just did not remove the window.

The rest of the day I spent convincing SDL to do so. In principle
1) SDL-Win32 does not like keys to trigger its quit.
2) Any events or other stuff which happens to SDL-Win32 between polling and SDL_QUIT make the window stay there.
3) As documented SDL_WM_ToggleFullScreen does not work on Windows
So I used the right mouse button for returning, grabbed input and quit SDL as soon as I get notice.

Attached is a patch that makes win32 fullscreen work for me. Not very nice but perhaps a start.
Regards
Michael

P.S.: I will be off for two weeks.

diff -Nru ekiga.orig/src/gui/main.cpp ekiga/src/gui/main.cpp
--- ekiga.orig/src/gui/main.cpp	2006-02-12 00:03:33.000000000 +0100
+++ ekiga/src/gui/main.cpp	2006-02-12 21:05:15.000000000 +0100
@@ -1632,9 +1632,16 @@
     SDL_Init (SDL_INIT_VIDEO);
     mw->screen = SDL_SetVideoMode (gdk_screen_get_width (defaultscreen), gdk_screen_get_height (defaultscreen), 0, 
 				   SDL_SWSURFACE | SDL_HWSURFACE | 
+#if 0	// WIN32
+			           SDL_FULLSCREEN |
+#endif
 				   SDL_ANYFORMAT);
+#ifndef WIN32
     SDL_WM_ToggleFullScreen (mw->screen);
     SDL_ShowCursor (SDL_DISABLE);
+#else
+    SDL_WM_GrabInput(SDL_GRAB_ON);
+#endif
   }
 }
 
@@ -1647,12 +1654,17 @@
   
   while (SDL_PollEvent (&event)) {
 
+#ifndef WIN32
     if (event.type == SDL_KEYDOWN) {
 
       /* Exit Full Screen */
       if ((event.key.keysym.sym == SDLK_ESCAPE) ||
 	  (event.key.keysym.sym == SDLK_f)) {
 
+#else
+    if (event.type == SDL_MOUSEBUTTONDOWN) {
+      if (event.button.button == SDL_BUTTON_RIGHT) {
+#endif
 	return TRUE;
       }
     }
@@ -2631,8 +2643,13 @@
   else if (display_type == FULLSCREEN) {
 
     gm_mw_init_fullscreen_video_window (main_window);
-    if (gm_mw_poll_fullscreen_video_window (main_window)) 
+    if (gm_mw_poll_fullscreen_video_window (main_window)) {
       gm_mw_toggle_fullscreen (main_window);
+#ifdef WIN32
+      gm_mw_destroy_fullscreen_video_window (main_window);
+      return;
+#endif
+    }
   }
 #endif
   else {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]