[MPlayer-dev-eng] [PATCH] Fullscreen fix for openbox, fvwm and afterstep
Filip Kalinski
filon at pld.org.pl
Tue Dec 31 00:27:07 CET 2002
Hi,
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
P.S
Another reason to change option name "-icelayer" to "-fslayer"
are fvwm and afterstep, they also use layers.
--
Filip Kalinski <filon at pld.org.pl>
-------------- next part --------------
--- main.old/libvo/x11_common.c 2002-12-30 20:53:02.000000000 +0100
+++ main.work/libvo/x11_common.c 2002-12-31 00:16:46.000000000 +0100
@@ -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-dev-eng
mailing list