diff -Naur /home/attila/src/mplayer/main/cfg-mplayer.h main/cfg-mplayer.h --- /home/attila/src/mplayer/main/cfg-mplayer.h Wed May 15 20:02:02 2002 +++ main/cfg-mplayer.h Sun May 26 12:50:41 2002 @@ -68,6 +68,7 @@ #ifdef HAVE_X11 extern char *mDisplayName; extern int WinID; +extern int ice_layer; #endif #ifdef HAVE_AA @@ -241,6 +242,7 @@ // x11,xv,xmga,xvidix {"wid", &WinID, CONF_TYPE_INT, 0, 0, 0, NULL}, {"rootwin", &WinID, CONF_TYPE_FLAG, 0, -1, 0, NULL}, + {"icelayer", &ice_layer, CONF_TYPE_INT, CONF_RANGE, 0, 15, NULL}, #endif #ifdef HAVE_XINERAMA diff -Naur /home/attila/src/mplayer/main/libvo/x11_common.c main/libvo/x11_common.c --- /home/attila/src/mplayer/main/libvo/x11_common.c Sat May 25 15:38:05 2002 +++ main/libvo/x11_common.c Sun May 26 13:14:22 2002 @@ -54,6 +54,8 @@ #define vo_wm_IceWM 3 #define vo_wm_WMakerStyle 4 +int ice_layer; + extern int verbose; static int dpms_disabled=0; @@ -691,15 +693,30 @@ if ( vo_wm_type == vo_wm_IceWM ) { - mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] IceWM style stay on top ( layer %d ).\n",layer ); - switch ( layer ) + XClientMessageEvent xev; + Atom ATOM_WIN_LAYER; + + memset(&xev, 0, sizeof(xev)); + ATOM_WIN_LAYER = XInternAtom(mDisplay, "_WIN_LAYER", False); + + xev.type = ClientMessage; + xev.window = vo_window; + xev.message_type = ATOM_WIN_LAYER; + xev.format = 32; + xev.data.l[0] = layer?ice_layer:4; // if not fullscreen, stay on layer "Normal" + xev.data.l[1] = CurrentTime; + + mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] IceWM style stay on top ( layer %d ).\n",xev.data.l[0] ); +/* switch ( layer ) { case -1: layer=2; break; // WinLayerBelow case 0: layer=4; break; // WinLayerNormal case 1: layer=8; break; // WinLayerOnTop - } + }/ XChangeProperty( mDisplay,vo_window, - XInternAtom( mDisplay,"_WIN_LAYER",False ),XA_CARDINAL,32,PropModeReplace,(unsigned char *)&layer,1 ); + XInternAtom( mDisplay,"_WIN_LAYER",False ),XA_CARDINAL,32,PropModeReplace,(unsigned char *)&ice_layer,1 );*/ + XSendEvent(mDisplay, mRootWin, False, SubstructureNotifyMask, (XEvent *) & + xev); return; }