summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-31 21:19:52 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-31 21:19:52 +0000
commit061bda6e2dda0ba221cfe5bc3c436a0f63262672 (patch)
tree076db9291afc1d38e4d4e2108b28782961b2783a /Gui
parent9bb04197707907bfb8802fcce16eec96ac969eb7 (diff)
downloadmpv-061bda6e2dda0ba221cfe5bc3c436a0f63262672.tar.bz2
mpv-061bda6e2dda0ba221cfe5bc3c436a0f63262672.tar.xz
majd fix play&stop&pause&redraw
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1813 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/mplayer/mw.h1
-rw-r--r--Gui/mplayer/play.c26
-rw-r--r--Gui/mplayer/sw.h70
3 files changed, 65 insertions, 32 deletions
diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h
index 2814e23365..0af876e20a 100644
--- a/Gui/mplayer/mw.h
+++ b/Gui/mplayer/mw.h
@@ -130,7 +130,6 @@ void mplMainDraw( wsParamDisplay )
wItem * item;
txSample * image = NULL;
int i;
- char * tmp;
if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible ||
!mainVisible ) return;
diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c
index fdfefd3fa4..0730ef825d 100644
--- a/Gui/mplayer/play.c
+++ b/Gui/mplayer/play.c
@@ -34,12 +34,6 @@ char * Filename = NULL;
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 @@ void mplStop()
{
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 mplStop()
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 mplPause( void )
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 @@ void mplMPlayerInit( int argc,char* argv[], char *envp[] )
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 )
diff --git a/Gui/mplayer/sw.h b/Gui/mplayer/sw.h
index a07035a634..ed39c0e1de 100644
--- a/Gui/mplayer/sw.h
+++ b/Gui/mplayer/sw.h
@@ -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 @@ void mplSubDraw( wsParamDisplay )
}
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 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
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 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
}
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 ); }