changeset 1812:d2d6a26ddb02

majd fix play&stop&pause&redraw
author pontscho
date Fri, 31 Aug 2001 21:19:52 +0000
parents 0483b88482f5
children c68e82514f56
files Gui/mplayer/mw.h Gui/mplayer/play.c Gui/mplayer/sw.h
diffstat 3 files changed, 65 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/Gui/mplayer/mw.h	Fri Aug 31 21:18:22 2001 +0000
+++ b/Gui/mplayer/mw.h	Fri Aug 31 21:19:52 2001 +0000
@@ -130,7 +130,6 @@
  wItem    * item;
  txSample * image = NULL;
  int        i;
- char     * tmp;
 
  if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible ||
       !mainVisible ) return;
--- a/Gui/mplayer/play.c	Fri Aug 31 21:18:22 2001 +0000
+++ b/Gui/mplayer/play.c	Fri Aug 31 21:19:52 2001 +0000
@@ -34,12 +34,6 @@
 extern float rel_seek_secs;
 extern int abs_seek_pos;
 
-
-void mplPlayerThread( void )
-{
-// mplayer( 0,NULL,NULL );
-}
-
 void mplFullScreen( void )
 {
 // if ( appMPlayer.subWindow.isFullScreen )
@@ -55,9 +49,10 @@
 {
  if ( !mplShMem->Playing ) return;
 // ---
-//printf("%%%%%% STOP  \n");
+printf("%%%%%% STOP  \n");
 // ---
  mplShMem->Playing=0;
+ mplShMem->TimeSec=0;
  if ( !appMPlayer.subWindow.isFullScreen )
   {
    wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y );
@@ -69,13 +64,14 @@
 
 void mplPlay( void )
 {
- if ( ( mplShMem->Filename[0] == 0 )&&
+ if ( ( mplShMem->Filename[0] == 0 )||
       ( mplShMem->Playing == 1 ) ) return;
  if ( mplShMem->Playing == 2 ) { mplPause(); return; }
 // ---
 //printf("%%%%%% PLAY  \n");
 // ---
  mplShMem->Playing=1;
+// wsPostRedisplay( &appMPlayer.subWindow );
  mplSubRender=0;
 }
 
@@ -103,6 +99,7 @@
 
 void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height )
 {
+ printf( "----resize---> %dx%d --- \n",width,height );
  vo_setwindowsize( width,height );
  vo_resize=1;
 }
@@ -115,20 +112,9 @@
  mplShMem=calloc( 1,ShMemSize );
 #endif
  signal( SIGTYPE,mplMainSigHandler );
-// signal( SIGCHLD,SIG_IGN );
 
- mplShMem->Playing=0;
- mplShMem->Volume=0.0f;
- mplShMem->Position=0.0f;
+ memset( mplShMem,0,ShMemSize );
  mplShMem->Balance=50.0f;
- mplShMem->Track=0;
- mplShMem->AudioType=0;
- mplShMem->StreamType=0;
- mplShMem->TimeSec=0;
- mplShMem->LengthInSec=0;
-
-// ---
-// ---
 }
 
 float mplGetPosition( void )
--- a/Gui/mplayer/sw.h	Fri Aug 31 21:18:22 2001 +0000
+++ b/Gui/mplayer/sw.h	Fri Aug 31 21:19:52 2001 +0000
@@ -2,24 +2,64 @@
 // sub window
 
 int             mplSubRender = 1;
-int             mplSubMoved = 0;
+
+int VisibleMainWindow( void )
+{
+ Window   root,parent,me,subw,mainw;
+ Window * childs;
+ int      nchilds;
+ int      i;
+ int      visible = 0;
+
+ me=appMPlayer.mainWindow.WindowID;
+ for (;;) 
+  {
+   XQueryTree( wsDisplay,me,&root,&parent,&childs,&nchilds);
+   XFree((char *) childs);
+   if (root == parent) break;
+   me=parent;
+  }
+ XQueryTree( wsDisplay,root,&root,&parent,&childs,&nchilds );
+ mainw=me;
+
+ me=appMPlayer.subWindow.WindowID;
+ for (;;) 
+  {
+   XQueryTree( wsDisplay,me,&root,&parent,&childs,&nchilds);
+   XFree((char *) childs);
+   if (root == parent) break;
+   me=parent;
+  }
+ XQueryTree( wsDisplay,root,&root,&parent,&childs,&nchilds );
+ subw=me;
+
+ for (i=0; i < nchilds; i++) if ( childs[i]==me ) break;
+ for ( ;i<nchilds;i++ ) if ( childs[i] == mainw ) visible=1; 
+// printf( "-----------> visible main vindov: %d ---\n",visible );
+ return visible;
+}
+
+int mainisvisible1;
+int mainisvisible2;
+int count = 0;
 
 void mplSubDraw( wsParamDisplay )
 {
- if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )||
-      ( appMPlayer.subWindow.State != wsWindowExpose ) ) return;
+// if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )||
+//      ( appMPlayer.subWindow.State != wsWindowExpose ) ) return;
 
- if ( ( mplShMem->Playing )&&( appMPlayer.subWindow.State == wsWindowExpose ) )
+ if ( ( mplShMem->Playing ) )//&&( appMPlayer.subWindow.State == wsWindowExpose ) )
   { 
+printf( "------> redraw volib.\n" );   
    wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
    wsClearWindow( appMPlayer.subWindow );
-   appMPlayer.subWindow.State=0; 
    vo_expose=1; 
-   return; 
+   mplSubRender=0;
   }
 
  if ( mplSubRender )
   {
+printf( "------> redraw video.\n" );   
    wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
    wsClearWindow( appMPlayer.subWindow );
    if ( appMPlayer.sub.Bitmap.Image ) 
@@ -29,10 +69,14 @@
     } 
    XFlush( wsDisplay );
   }
+ appMPlayer.subWindow.State=0; 
 }
 
 void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
 {
+ static int mplSubMoved = 0;
+ static int oldmainisvisible = 0;
+
  mplMouseTimer=mplMouseTimerConst;
  wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor );
 
@@ -46,7 +90,11 @@
           mplHideMenu( RX,RY );
           msButton=0;
           break;
+// ---	  
    case wsPLMouseButton:
+          oldmainisvisible=VisibleMainWindow();
+	  printf( "----> %d %d\n",mainisvisible1,mainisvisible2 );
+	  //=mainisvisible;
           sx=X; sy=Y;
           msButton=wsPLMouseButton;
           mplSubMoved=0;
@@ -65,15 +113,15 @@
            }
           break;
    case wsRLMouseButton:
-          if ( !mplSubMoved )
+          if ( ( !mplSubMoved )&&
+	       ( appMPlayer.subWindow.isFullScreen )&&
+	       ( !VisibleMainWindow() ) )
 	   {
-	    wsMoveTopWindow( &appMPlayer.mainWindow );
+wsMoveTopWindow( &appMPlayer.mainWindow );
+//	     else wsMoveTopWindow( &appMPlayer.mainWindow );
 	   }
           msButton=0;
           mplSubMoved=0;
           break;
   }
 }
-
-//void mplSubResizeHandle( unsigned int X,unsigned int Y,unsigned int width,unsigned int height )
-//{ mplResize( X,Y,width,height ); }