changeset 8949:d07ab8e088a9

correct skin changing (fix one critical bug)
author pontscho
date Mon, 13 Jan 2003 23:38:49 +0000
parents 37bd5319cc21
children 8fd72eae8886
files Gui/app.c Gui/app.h Gui/interface.c Gui/mplayer/menu.c Gui/mplayer/play.c Gui/wm/ws.c
diffstat 6 files changed, 55 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/Gui/app.c	Mon Jan 13 19:39:57 2003 +0000
+++ b/Gui/app.c	Mon Jan 13 23:38:49 2003 +0000
@@ -138,6 +138,8 @@
  item->subR=0;
  item->subG=0;
  item->subB=0;
+ item->barIsPresent=0;
+ item->menuIsPresent=0;
 }
 
 int appFindKey( unsigned char * name )
--- a/Gui/app.h	Mon Jan 13 19:39:57 2003 +0000
+++ b/Gui/app.h	Mon Jan 13 23:38:49 2003 +0000
@@ -145,7 +145,11 @@
  wItem           sub;
  wsTWindow       subWindow;
  int             subR,subG,subB;
- int             subPixel;
+
+ wItem           bar;
+ wsTWindow       barWindow;
+ int             barR,barG,barB;
+ int             barIsPresent;
 
  wItem           eq;
  wsTWindow       eqWindow;
@@ -153,6 +157,7 @@
  wItem           menuBase;
  wItem           menuSelected;
  wsTWindow       menuWindow;
+ int		 menuIsPresent;
 
 // ---
  int             NumberOfItems;
--- a/Gui/interface.c	Mon Jan 13 19:39:57 2003 +0000
+++ b/Gui/interface.c	Mon Jan 13 23:38:49 2003 +0000
@@ -210,7 +210,7 @@
  i=wsShowFrame|wsMaxSize|wsHideWindow;
  wsCreateWindow( &appMPlayer.mainWindow,
   appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
-  wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" ); //wsMinSize|
+  wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" );
 
  wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
  wsXDNDMakeAwareness(&appMPlayer.mainWindow);
--- a/Gui/mplayer/menu.c	Mon Jan 13 19:39:57 2003 +0000
+++ b/Gui/mplayer/menu.c	Mon Jan 13 23:38:49 2003 +0000
@@ -15,6 +15,7 @@
 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 @@
  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 @@
 {
  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 @@
 {
  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 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 @@
   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;
--- a/Gui/mplayer/play.c	Mon Jan 13 19:39:57 2003 +0000
+++ b/Gui/mplayer/play.c	Mon Jan 13 23:38:49 2003 +0000
@@ -191,6 +191,7 @@
 void ChangeSkin( char * name )
 {
  int ret;
+ int prev = appMPlayer.menuIsPresent;
 
  mainVisible=0;
 
@@ -208,7 +209,8 @@
    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 @@
    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 @@
  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 @@
  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 );
--- a/Gui/wm/ws.c	Mon Jan 13 19:39:57 2003 +0000
+++ b/Gui/wm/ws.c	Mon Jan 13 23:38:49 2003 +0000
@@ -68,8 +68,8 @@
 
 int                  wsTrue    = True;
 
-wsTWindow          * wsWindowList[5] = { NULL,NULL,NULL,NULL,NULL };
-int                  wsWLCount = 0;
+#define	wsWLCount 5
+wsTWindow          * wsWindowList[wsWLCount] = { NULL,NULL,NULL,NULL,NULL };
 
 unsigned long        wsKeyTable[512];
 
@@ -446,7 +446,14 @@
  wsCreateImage( win,win->Width,win->Height );
 // --- End of creating --------------------------------------------------------------------------
 
- wsWindowList[wsWLCount++]=win;
+ {
+  int i;
+  for ( i=0;i < wsWLCount;i++ )
+   if ( wsWindowList[i] == NULL ) break;
+  if ( i == wsWLCount )
+   { printf( "!!! tul sok nyitott ablak van.\n" ); exit( 1 ); }
+  wsWindowList[i]=win;
+ }
 
  XFlush( wsDisplay );
  XSync( wsDisplay,False );
@@ -469,9 +476,11 @@
     XFreeCursor( wsDisplay,win->wsCursor );
     win->wsCursor=None;
    }
+ XFreeGC( wsDisplay,win->wGC );
  XUnmapWindow( wsDisplay,win->WindowID );
  wsDestroyImage( win );
  XDestroyWindow( wsDisplay,win->WindowID );
+#if 0
  win->ReDraw=NULL;
  win->ReSize=NULL;
  win->Idle=NULL;
@@ -481,6 +490,7 @@
  win->Focused=0;
  win->Mapped=0;
  win->Rolled=0;
+#endif
 }
 
 // ----------------------------------------------------------------------------------------------
@@ -490,7 +500,7 @@
 inline int wsSearch( Window win )
 {
  int i;
- for ( i=0;i<wsWLCount;i++ ) if ( wsWindowList[i]->WindowID == win ) return i;
+ for ( i=0;i<wsWLCount;i++ ) if ( wsWindowList[i] && wsWindowList[i]->WindowID == win ) return i;
  return -1;
 }