mirror of
https://github.com/mpv-player/mpv
synced 2025-03-02 20:28:02 +00:00
use more methods to get the fs window on top
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8446 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
e4723bc3eb
commit
6ab9415443
@ -641,10 +641,11 @@ void vo_x11_sizehint( int x, int y, int width, int height, int max )
|
|||||||
|
|
||||||
void vo_x11_setlayer( int layer )
|
void vo_x11_setlayer( int layer )
|
||||||
{
|
{
|
||||||
Atom type;
|
Atom type,arg1,arg2;
|
||||||
int format;
|
int format;
|
||||||
unsigned long nitems, bytesafter;
|
unsigned long nitems, bytesafter;
|
||||||
Atom * args = NULL;
|
Atom * args = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
if ( WinID >= 0 ) return;
|
if ( WinID >= 0 ) return;
|
||||||
|
|
||||||
@ -676,11 +677,29 @@ void vo_x11_setlayer( int layer )
|
|||||||
xev.window=vo_window;
|
xev.window=vo_window;
|
||||||
xev.format=32;
|
xev.format=32;
|
||||||
xev.data.l[0]=layer;
|
xev.data.l[0]=layer;
|
||||||
// xev.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_ABOVE",False );
|
|
||||||
xev.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_STAYS_ON_TOP",False );
|
xev.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_STAYS_ON_TOP",False );
|
||||||
XSendEvent( mDisplay,mRootWin,False,SubstructureRedirectMask,(XEvent*)&xev );
|
XSendEvent( mDisplay,mRootWin,False,SubstructureRedirectMask,(XEvent*)&xev );
|
||||||
|
|
||||||
|
memset( &xev,0,sizeof( xev ) );
|
||||||
|
xev.type=ClientMessage;
|
||||||
|
xev.message_type=XInternAtom( mDisplay,"_NET_WM_STATE",False );
|
||||||
|
xev.display=mDisplay;
|
||||||
|
xev.window=vo_window;
|
||||||
|
xev.format=32;
|
||||||
|
xev.data.l[0]=layer;
|
||||||
|
xev.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_ABOVE",False );
|
||||||
|
XSendEvent( mDisplay,mRootWin,False,SubstructureRedirectMask,(XEvent*)&xev );
|
||||||
XFree( args );
|
XFree( args );
|
||||||
return;
|
|
||||||
|
type=XInternAtom( mDisplay,"_NET_WM_STATE",False );
|
||||||
|
arg1=XInternAtom( mDisplay,"_NET_WM_STATE_STAYS_ON_TOP",False );
|
||||||
|
arg2=XInternAtom( mDisplay,"_NET_WM_STATE_ABOVE",False );
|
||||||
|
if ( Success == XGetWindowProperty( mDisplay,vo_window,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char**)(&args) ) && nitems > 0 && format == 32) {
|
||||||
|
for (i = 0; i < nitems; i++) {
|
||||||
|
if (((Atom)args[i] == arg1) || ((Atom)args[i] == arg2)) return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// State was not set, continue with GNOME hints
|
||||||
}
|
}
|
||||||
|
|
||||||
type=XInternAtom( mDisplay,"_WIN_SUPPORTING_WM_CHECK",False );
|
type=XInternAtom( mDisplay,"_WIN_SUPPORTING_WM_CHECK",False );
|
||||||
|
Loading…
Reference in New Issue
Block a user