Mercurial > mplayer.hg
changeset 12796:24075685789b
This fixes the problems that originated from my ewmh
fs patch, caused by a different handling of the wm's
ewmh fs implementations.
Patch by Alexander Strasser
author | rtognimp |
---|---|
date | Sun, 11 Jul 2004 22:16:52 +0000 |
parents | ab369fe35121 |
children | b2419eef04da |
files | Gui/wm/ws.c libvo/x11_common.c |
diffstat | 2 files changed, 34 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/Gui/wm/ws.c Sun Jul 11 13:43:43 2004 +0000 +++ b/Gui/wm/ws.c Sun Jul 11 22:16:52 2004 +0000 @@ -770,24 +770,32 @@ if ( win->isFullScreen ) { + vo_x11_ewmh_fullscreen( _NET_WM_STATE_REMOVE ); // removes fullscreen state if wm supports EWMH + if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // shouldn't be needed with EWMH fs + { win->X=win->OldX; win->Y=win->OldY; win->Width=win->OldWidth; win->Height=win->OldHeight; - win->isFullScreen=False; decoration=win->Decorations; + } + #ifdef ENABLE_DPMS wsScreenSaverOn( wsDisplay ); #endif - vo_x11_ewmh_fullscreen( _NET_WM_STATE_REMOVE ); // removes fullscreen state if wm supports EWMH + win->isFullScreen=False; } else { + if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // shouldn't be needed with EWMH fs + { win->OldX=win->X; win->OldY=win->Y; win->OldWidth=win->Width; win->OldHeight=win->Height; win->X=wsOrgX; win->Y=wsOrgY; win->Width=wsMaxX; win->Height=wsMaxY; + } + win->isFullScreen=True; #ifdef ENABLE_DPMS wsScreenSaverOff( wsDisplay ); @@ -796,15 +804,23 @@ vo_x11_ewmh_fullscreen( _NET_WM_STATE_ADD ); // adds fullscreen state if wm supports EWMH } + if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // shouldn't be needed with EWMH fs + { vo_x11_decoration( wsDisplay,win->WindowID,decoration ); vo_x11_sizehint( win->X,win->Y,win->Width,win->Height,0 ); vo_x11_setlayer( wsDisplay,win->WindowID,win->isFullScreen ); if ((!(win->isFullScreen)) & vo_ontop) vo_x11_setlayer(wsDisplay, win->WindowID,1); + XMoveResizeWindow( wsDisplay,win->WindowID,win->X,win->Y,win->Width,win->Height ); + } + if ( vo_wm_type == 0 && !(vo_fsmode&16) ) + { XWithdrawWindow( wsDisplay,win->WindowID,wsScreen ); - XMoveResizeWindow( wsDisplay,win->WindowID,win->X,win->Y,win->Width,win->Height ); + } + + XMapRaised( wsDisplay,win->WindowID ); XRaiseWindow( wsDisplay,win->WindowID ); XFlush( wsDisplay );
--- a/libvo/x11_common.c Sun Jul 11 13:43:43 2004 +0000 +++ b/libvo/x11_common.c Sun Jul 11 22:16:52 2004 +0000 @@ -78,7 +78,7 @@ int WinID = -1; int vo_mouse_autohide = 0; int vo_wm_type = 0; -static int vo_fs_type = 0; +int vo_fs_type = 0; // needs to be accessible for GUI X11 code static int vo_fs_flip = 0; char **vo_fstype_list; @@ -1403,25 +1403,30 @@ if (vo_fs) { // fs->win - vo_x11_ewmh_fullscreen(_NET_WM_STATE_REMOVE); // removes fullscreen state if wm supports EWMH - + if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs + { if (vo_dwidth != vo_screenwidth && vo_dheight != vo_screenheight) return; - vo_fs = VO_FALSE; x = vo_old_x; y = vo_old_y; w = vo_old_width; h = vo_old_height; + } + + vo_x11_ewmh_fullscreen(_NET_WM_STATE_REMOVE); // removes fullscreen state if wm supports EWMH + vo_fs = VO_FALSE; } else { // win->fs vo_x11_ewmh_fullscreen(_NET_WM_STATE_ADD); // sends fullscreen state to be added if wm supports EWMH + vo_fs = VO_TRUE; + if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs + { if (vo_old_width && (vo_dwidth == vo_screenwidth && vo_dwidth != vo_old_width) && (vo_dheight == vo_screenheight && vo_dheight != vo_old_height)) return; - vo_fs = VO_TRUE; vo_old_x = vo_dx; vo_old_y = vo_dy; vo_old_width = vo_dwidth; @@ -1430,7 +1435,7 @@ y = 0; w = vo_screenwidth; h = vo_screenheight; - + } } { long dummy; @@ -1448,6 +1453,8 @@ vo_fs_flip = 1; } + if ( ! (vo_fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs + { vo_x11_decoration(mDisplay, vo_window, (vo_fs) ? 0 : 1); vo_x11_sizehint(x, y, w, h, 0); vo_x11_setlayer(mDisplay, vo_window, vo_fs); @@ -1456,9 +1463,11 @@ vo_x11_setlayer(mDisplay, vo_window, vo_ontop); XMoveResizeWindow(mDisplay, vo_window, x, y, w, h); + } #ifdef HAVE_XINERAMA vo_x11_xinerama_move(mDisplay, vo_window); #endif + XMapRaised(mDisplay, vo_window); XRaiseWindow(mDisplay, vo_window); XFlush(mDisplay);