summaryrefslogtreecommitdiffstats
path: root/libvo/x11_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvo/x11_common.c')
-rw-r--r--libvo/x11_common.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index 2afbb3d638..0052bf3eba 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -670,6 +670,29 @@ void vo_x11_setlayer( int layer )
{
XClientMessageEvent xev;
mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] NET style stay on top ( layer %d ).\n",layer );
+
+ 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_FULLSCREEN",False );
+ XSendEvent( mDisplay,mRootWin,False,SubstructureRedirectMask,(XEvent*)&xev );
+ XFree( args );
+
+ type=XInternAtom( mDisplay,"_NET_WM_STATE",False );
+ arg1=XInternAtom( mDisplay,"_NET_WM_STATE_FULLSCREEN",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)) {
+ XFree( args );
+ return;
+ }
+ }
+ }
+
memset( &xev,0,sizeof( xev ) );
xev.type=ClientMessage;
xev.message_type=XInternAtom( mDisplay,"_NET_WM_STATE",False );