mirror of https://github.com/mpv-player/mpv
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> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8670 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
c22eec6052
commit
80bbae8720
|
@ -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 @@ int vo_wm_detect( void )
|
|||
|
||||
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 @@ int vo_wm_detect( void )
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue