Mercurial > mplayer.hg
changeset 8669:fd398a0b4b3b
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@pld.org.pl>
author | arpi |
---|---|
date | Mon, 30 Dec 2002 23:59:53 +0000 |
parents | 7e14d06ab255 |
children | c5a28d4445cd |
files | libvo/x11_common.c |
diffstat | 1 files changed, 31 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/x11_common.c Mon Dec 30 23:31:40 2002 +0000 +++ b/libvo/x11_common.c Mon Dec 30 23:59:53 2002 +0000 @@ -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; }