# HG changeset patch # User Sam Lantinga # Date 1146805750 0 # Node ID ae9f6be818107f506675a829b5c52a52594790e8 # Parent 410b1ed7fe28c4cacce778bd1a1fc67086cb593c Fixed bug #196 Use the title and icon stored in the SDL video info, when creating X11 windows. diff -r 410b1ed7fe28 -r ae9f6be81810 src/video/x11/SDL_x11video.c --- a/src/video/x11/SDL_x11video.c Thu May 04 16:52:53 2006 +0000 +++ b/src/video/x11/SDL_x11video.c Fri May 05 05:09:10 2006 +0000 @@ -311,18 +311,13 @@ static void create_aux_windows(_THIS) { int x = 0, y = 0; - Atom _NET_WM_NAME; - Atom _NET_WM_ICON_NAME; char classname[1024]; XSetWindowAttributes xattr; XWMHints *hints; - XTextProperty titleprop, titlepropUTF8, iconprop, iconpropUTF8; int def_vis = (SDL_Visual == DefaultVisual(SDL_Display, SDL_Screen)); /* Look up some useful Atoms */ WM_DELETE_WINDOW = XInternAtom(SDL_Display, "WM_DELETE_WINDOW", False); - _NET_WM_NAME = XInternAtom(SDL_Display, "_NET_WM_NAME", False); - _NET_WM_ICON_NAME = XInternAtom(SDL_Display, "_NET_WM_ICON_NAME", False); /* Don't create any extra windows if we are being managed */ if ( SDL_windowid ) { @@ -372,15 +367,9 @@ } hints = NULL; - titleprop.value = titlepropUTF8.value = NULL; - iconprop.value = iconpropUTF8.value = NULL; if(WMwindow) { /* All window attributes must survive the recreation */ hints = XGetWMHints(SDL_Display, WMwindow); - XGetTextProperty(SDL_Display, WMwindow, &titleprop, XA_WM_NAME); - XGetTextProperty(SDL_Display, WMwindow, &titlepropUTF8, _NET_WM_NAME); - XGetTextProperty(SDL_Display, WMwindow, &iconprop, XA_WM_ICON_NAME); - XGetTextProperty(SDL_Display, WMwindow, &iconpropUTF8, _NET_WM_ICON_NAME); XDestroyWindow(SDL_Display, WMwindow); } @@ -400,22 +389,7 @@ } XSetWMHints(SDL_Display, WMwindow, hints); XFree(hints); - if(titleprop.value) { - XSetTextProperty(SDL_Display, WMwindow, &titleprop, XA_WM_NAME); - XFree(titleprop.value); - } - if(titlepropUTF8.value) { - XSetTextProperty(SDL_Display, WMwindow, &titlepropUTF8, _NET_WM_NAME); - XFree(titlepropUTF8.value); - } - if(iconprop.value) { - XSetTextProperty(SDL_Display, WMwindow, &iconprop, XA_WM_ICON_NAME); - XFree(iconprop.value); - } - if(iconpropUTF8.value) { - XSetTextProperty(SDL_Display, WMwindow, &iconpropUTF8, _NET_WM_ICON_NAME); - XFree(iconpropUTF8.value); - } + X11_SetCaptionNoLock(this, this->wm_title, this->wm_icon); XSelectInput(SDL_Display, WMwindow, FocusChangeMask | KeyPressMask | KeyReleaseMask diff -r 410b1ed7fe28 -r ae9f6be81810 src/video/x11/SDL_x11wm.c --- a/src/video/x11/SDL_x11wm.c Thu May 04 16:52:53 2006 +0000 +++ b/src/video/x11/SDL_x11wm.c Fri May 05 05:09:10 2006 +0000 @@ -240,7 +240,7 @@ SDL_FreeSurface(sicon); } -void X11_SetCaption(_THIS, const char *title, const char *icon) +void X11_SetCaptionNoLock(_THIS, const char *title, const char *icon) { XTextProperty titleprop, iconprop; Status status; @@ -256,9 +256,6 @@ } #endif - /* Lock the event thread, in multi-threading environments */ - SDL_Lock_EventThread(); - if ( title != NULL ) { char *title_latin1 = SDL_iconv_utf8_latin1((char *)title); if ( !title_latin1 ) { @@ -306,7 +303,12 @@ #endif } XSync(SDL_Display, False); +} +void X11_SetCaption(_THIS, const char *title, const char *icon) +{ + SDL_Lock_EventThread(); + X11_SetCaptionNoLock(this, title, icon); SDL_Unlock_EventThread(); } @@ -332,13 +334,6 @@ if ( ! SDL_Window ) { return(mode); /* Will be set later on mode switch */ } -#if SDL_VIDEO_DRIVER_X11_XINERAMA - /* FIXME: Is this okay? - if ( use_xinerama ) { - mode &= ~SDL_GRAB_FULLSCREEN; - } - */ -#endif if ( mode == SDL_GRAB_OFF ) { XUngrabPointer(SDL_Display, CurrentTime); XUngrabKeyboard(SDL_Display, CurrentTime); @@ -351,7 +346,7 @@ #if 0 /* We'll wait here until we actually grab, otherwise behavior undefined */ for ( numtries = 0; numtries < 10; ++numtries ) { #else - while ( 1 ) { + for ( ; ; ) { #endif result = XGrabPointer(SDL_Display, SDL_Window, True, 0, GrabModeAsync, GrabModeAsync, diff -r 410b1ed7fe28 -r ae9f6be81810 src/video/x11/SDL_x11wm_c.h --- a/src/video/x11/SDL_x11wm_c.h Thu May 04 16:52:53 2006 +0000 +++ b/src/video/x11/SDL_x11wm_c.h Fri May 05 05:09:10 2006 +0000 @@ -24,6 +24,7 @@ #include "SDL_x11video.h" /* Functions to be exported */ +extern void X11_SetCaptionNoLock(_THIS, const char *title, const char *icon); extern void X11_SetCaption(_THIS, const char *title, const char *icon); extern void X11_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask); extern int X11_IconifyWindow(_THIS);