[Mplayer-cvslog] CVS: main/libvo x11_common.c,1.122,1.123

Arpi of Ize arpi at mplayerhq.hu
Tue Dec 31 01:00:12 CET 2002


Update of /cvsroot/mplayer/main/libvo
In directory mail:/var/tmp.root/cvs-serv26182

Modified Files:
	x11_common.c 
Log Message:
This time the patch is fixing much more that breaking :-)
It includes ugly hack for OpenBox, swaps checking for netwm
with layers (and makes fvwm work -> they have also broken
_NET_WM_STATE_FULLSCREEN but also supports layers) and changes
back fullscreen layer to 10, afterstep doesn't like 12 :-)

Tested with: sawfish, metacity, kwin, blackbox, openbox, waimea,
windowmaker, afterstep, icewm, mwm, fvwm

Filip Kalinski <filon at pld.org.pl>


Index: x11_common.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/x11_common.c,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -r1.122 -r1.123
--- x11_common.c	30 Dec 2002 20:57:01 -0000	1.122
+++ x11_common.c	30 Dec 2002 23:59:53 -0000	1.123
@@ -48,7 +48,7 @@
 #define WIN_LAYER_ONBOTTOM               2
 #define WIN_LAYER_NORMAL                 4
 #define WIN_LAYER_ONTOP                  6
-#define WIN_LAYER_ABOVE_DOCK             12
+#define WIN_LAYER_ABOVE_DOCK             10
  
 int ice_layer=WIN_LAYER_ABOVE_DOCK;
 int stop_xscreensaver=0;
@@ -158,6 +158,20 @@
  
  if ( WinID >= 0 ) return vo_wm_Unknown;
  
+// -- supports layers
+ type=XInternAtom( mDisplay,"_WIN_PROTOCOLS",False );
+ if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char **) &args ) && nitems > 0 )
+  {
+   mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm supports layers.\n" );
+   for (i = 0; i < nitems; i++)
+     if (!strcmp( XGetAtomName (mDisplay, args[i]), "_WIN_LAYER"))
+     {
+       XFree( args );
+       return vo_wm_Layered;
+     }
+   XFree( args );
+  }
+
 // --- netwm 
  type=XInternAtom( mDisplay,"_NET_SUPPORTED",False );
  if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char **) &args ) && nitems > 0 )
@@ -167,20 +181,25 @@
      net_wm_support |= net_wm_support_state_test (XGetAtomName (mDisplay, args[i]));
    XFree( args );
    if (net_wm_support)
+   {
+     // ugly hack for broken OpenBox _NET_WM_STATE_FULLSCREEN support
+     // (in their implementation it only changes internal state of window, nothing more!!!)
+     if (vo_wm_NetWM == SUPPORT_FULLSCREEN)
+     {
+        type=XInternAtom( mDisplay,"_BLACKBOX_PID",False );
+	if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char **) &args ) && nitems > 0 )
+	{
+           mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is a broken OpenBox.\n" );
+	   net_wm_support=0;
+	   XFree( args );
+           return vo_wm_Unknown;
+	}
+	XFree (args);
+     }
      return vo_wm_NetWM;
+   }
   }
 
-// -- supports layers
- type=XInternAtom( mDisplay,"_WIN_PROTOCOLS",False );
- if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char **) &args ) && nitems > 0 )
-  {
-   mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm supports layers.\n" );
-   for (i = 0; i < nitems; i++)
-     if (!strcmp( XGetAtomName (mDisplay, args[i]), "_WIN_LAYER"));
-       return vo_wm_Layered;
-   XFree( args );
-  }
- 
  if ( wm == vo_wm_Unknown ) mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Unknown wm type...\n" );
  return wm;
 }    




More information about the MPlayer-cvslog mailing list