From 5b16ccc998296b12092403bc6abad2c60abcbf65 Mon Sep 17 00:00:00 2001 From: pontscho Date: Mon, 13 Jan 2003 23:38:49 +0000 Subject: correct skin changing (fix one critical bug) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8950 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/mplayer/menu.c | 10 ++++++---- Gui/mplayer/play.c | 29 ++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 7 deletions(-) (limited to 'Gui/mplayer') diff --git a/Gui/mplayer/menu.c b/Gui/mplayer/menu.c index 31cf947963..f0d72176bf 100644 --- a/Gui/mplayer/menu.c +++ b/Gui/mplayer/menu.c @@ -15,6 +15,7 @@ int mplMenuRender = 1; int mplMenuItem = -1; int mplOldMenuItem = -1; int mplMenuX,mplMenuY; +static int mplMenuIsInitialized = 0; void mplHideMenu( int mx,int my,int w ); @@ -24,7 +25,7 @@ void mplMenuDraw( void ) uint32_t * drw = NULL; int x,y,tmp; - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; if ( !mplMenuRender && !appMPlayer.menuWindow.Visible ) return; if ( mplMenuRender || mplMenuItem != mplOldMenuItem ) @@ -78,7 +79,7 @@ void mplShowMenu( int mx,int my ) { int x,y; - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; x=mx; if ( x + appMPlayer.menuWindow.Width > wsMaxX ) x=wsMaxX - appMPlayer.menuWindow.Width - 1; @@ -101,7 +102,7 @@ void mplHideMenu( int mx,int my,int w ) { int x,y,i=mplMenuItem; - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; x=mx-mplMenuX; y=my-mplMenuY; @@ -126,7 +127,7 @@ void mplHideMenu( int mx,int my,int w ) void mplMenuInit( void ) { - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( mplMenuIsInitialized || !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; appMPlayer.menuBase.x=0; appMPlayer.menuBase.y=0; @@ -150,6 +151,7 @@ void mplMenuInit( void ) mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID ); #endif + mplMenuIsInitialized=1; appMPlayer.menuWindow.ReDraw=mplMenuDraw; // appMPlayer.menuWindow.MouseHandler=mplMenuMouseHandle; // appMPlayer.menuWindow.KeyHandler=mplMainKeyHandle; diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c index 92bcdd968a..5058fb19fe 100644 --- a/Gui/mplayer/play.c +++ b/Gui/mplayer/play.c @@ -191,6 +191,7 @@ listItems tmpList; void ChangeSkin( char * name ) { int ret; + int prev = appMPlayer.menuIsPresent; mainVisible=0; @@ -208,7 +209,8 @@ void ChangeSkin( char * name ) mainVisible=1; return; } - if ( appMPlayer.menuBase.Bitmap.Image ) + + if ( prev && appMPlayer.menuIsPresent ) { if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer ); if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL ) @@ -217,7 +219,7 @@ void ChangeSkin( char * name ) wsResizeImage( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height ); wsSetShape( &appMPlayer.menuWindow,appMPlayer.menuBase.Mask.Image ); wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow ); - } + } else { mplMenuInit(); } if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height ); if ( ( !appMPlayer.subWindow.isFullScreen )&&( !guiIntfStruct.Playing ) ) @@ -238,7 +240,9 @@ void ChangeSkin( char * name ) if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL ) { mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; } - if ( vo_wm_type == vo_wm_Unknown ) wsVisibleWindow( &appMPlayer.mainWindow,wsHideWindow ); +#if 0 +// if ( vo_wm_type == vo_wm_Unknown ) + wsVisibleWindow( &appMPlayer.mainWindow,wsHideWindow ); wsResizeWindow( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height ); wsMoveWindow( &appMPlayer.mainWindow,True,appMPlayer.main.x,appMPlayer.main.y ); wsResizeImage( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height ); @@ -246,7 +250,26 @@ void ChangeSkin( char * name ) wsWindowDecoration( &appMPlayer.mainWindow,appMPlayer.mainDecoration ); mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow ); +#else + wsDestroyWindow( &appMPlayer.mainWindow ); + wsCreateWindow( &appMPlayer.mainWindow, + appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height, + wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsShowFrame|wsMaxSize|wsHideWindow,"MPlayer" ); + wsCreateImage( &appMPlayer.mainWindow,appMPlayer.main.Bitmap.Width,appMPlayer.main.Bitmap.Height ); + wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image ); + wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask ); + + appMPlayer.mainWindow.ReDraw=(void *)mplMainDraw; + appMPlayer.mainWindow.MouseHandler=mplMainMouseHandle; + appMPlayer.mainWindow.KeyHandler=mplMainKeyHandle; + appMPlayer.mainWindow.DandDHandler=mplDandDHandler; + + wsXDNDMakeAwareness( &appMPlayer.mainWindow ); + if ( !appMPlayer.mainDecoration ) wsWindowDecoration( &appMPlayer.mainWindow,0 ); + wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow ); + mainVisible=1; +#endif btnModify( evSetVolume,guiIntfStruct.Volume ); btnModify( evSetBalance,guiIntfStruct.Balance ); btnModify( evSetMoviePosition,guiIntfStruct.Position ); -- cgit v1.2.3