mirror of
https://github.com/mpv-player/mpv
synced 2025-02-27 02:40:53 +00:00
majd fix play&stop&pause&redraw
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1813 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
9bb0419770
commit
061bda6e2d
@ -130,7 +130,6 @@ void mplMainDraw( wsParamDisplay )
|
|||||||
wItem * item;
|
wItem * item;
|
||||||
txSample * image = NULL;
|
txSample * image = NULL;
|
||||||
int i;
|
int i;
|
||||||
char * tmp;
|
|
||||||
|
|
||||||
if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible ||
|
if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible ||
|
||||||
!mainVisible ) return;
|
!mainVisible ) return;
|
||||||
|
@ -34,12 +34,6 @@ char * Filename = NULL;
|
|||||||
extern float rel_seek_secs;
|
extern float rel_seek_secs;
|
||||||
extern int abs_seek_pos;
|
extern int abs_seek_pos;
|
||||||
|
|
||||||
|
|
||||||
void mplPlayerThread( void )
|
|
||||||
{
|
|
||||||
// mplayer( 0,NULL,NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
void mplFullScreen( void )
|
void mplFullScreen( void )
|
||||||
{
|
{
|
||||||
// if ( appMPlayer.subWindow.isFullScreen )
|
// if ( appMPlayer.subWindow.isFullScreen )
|
||||||
@ -55,9 +49,10 @@ void mplStop()
|
|||||||
{
|
{
|
||||||
if ( !mplShMem->Playing ) return;
|
if ( !mplShMem->Playing ) return;
|
||||||
// ---
|
// ---
|
||||||
//printf("%%%%%% STOP \n");
|
printf("%%%%%% STOP \n");
|
||||||
// ---
|
// ---
|
||||||
mplShMem->Playing=0;
|
mplShMem->Playing=0;
|
||||||
|
mplShMem->TimeSec=0;
|
||||||
if ( !appMPlayer.subWindow.isFullScreen )
|
if ( !appMPlayer.subWindow.isFullScreen )
|
||||||
{
|
{
|
||||||
wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y );
|
wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y );
|
||||||
@ -69,13 +64,14 @@ void mplStop()
|
|||||||
|
|
||||||
void mplPlay( void )
|
void mplPlay( void )
|
||||||
{
|
{
|
||||||
if ( ( mplShMem->Filename[0] == 0 )&&
|
if ( ( mplShMem->Filename[0] == 0 )||
|
||||||
( mplShMem->Playing == 1 ) ) return;
|
( mplShMem->Playing == 1 ) ) return;
|
||||||
if ( mplShMem->Playing == 2 ) { mplPause(); return; }
|
if ( mplShMem->Playing == 2 ) { mplPause(); return; }
|
||||||
// ---
|
// ---
|
||||||
//printf("%%%%%% PLAY \n");
|
//printf("%%%%%% PLAY \n");
|
||||||
// ---
|
// ---
|
||||||
mplShMem->Playing=1;
|
mplShMem->Playing=1;
|
||||||
|
// wsPostRedisplay( &appMPlayer.subWindow );
|
||||||
mplSubRender=0;
|
mplSubRender=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,6 +99,7 @@ void mplPause( void )
|
|||||||
|
|
||||||
void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height )
|
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_setwindowsize( width,height );
|
||||||
vo_resize=1;
|
vo_resize=1;
|
||||||
}
|
}
|
||||||
@ -115,20 +112,9 @@ void mplMPlayerInit( int argc,char* argv[], char *envp[] )
|
|||||||
mplShMem=calloc( 1,ShMemSize );
|
mplShMem=calloc( 1,ShMemSize );
|
||||||
#endif
|
#endif
|
||||||
signal( SIGTYPE,mplMainSigHandler );
|
signal( SIGTYPE,mplMainSigHandler );
|
||||||
// signal( SIGCHLD,SIG_IGN );
|
|
||||||
|
|
||||||
mplShMem->Playing=0;
|
memset( mplShMem,0,ShMemSize );
|
||||||
mplShMem->Volume=0.0f;
|
|
||||||
mplShMem->Position=0.0f;
|
|
||||||
mplShMem->Balance=50.0f;
|
mplShMem->Balance=50.0f;
|
||||||
mplShMem->Track=0;
|
|
||||||
mplShMem->AudioType=0;
|
|
||||||
mplShMem->StreamType=0;
|
|
||||||
mplShMem->TimeSec=0;
|
|
||||||
mplShMem->LengthInSec=0;
|
|
||||||
|
|
||||||
// ---
|
|
||||||
// ---
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float mplGetPosition( void )
|
float mplGetPosition( void )
|
||||||
|
@ -2,24 +2,64 @@
|
|||||||
// sub window
|
// sub window
|
||||||
|
|
||||||
int mplSubRender = 1;
|
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 )
|
void mplSubDraw( wsParamDisplay )
|
||||||
{
|
{
|
||||||
if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )||
|
// if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )||
|
||||||
( appMPlayer.subWindow.State != wsWindowExpose ) ) return;
|
// ( 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 );
|
wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
|
||||||
wsClearWindow( appMPlayer.subWindow );
|
wsClearWindow( appMPlayer.subWindow );
|
||||||
appMPlayer.subWindow.State=0;
|
|
||||||
vo_expose=1;
|
vo_expose=1;
|
||||||
return;
|
mplSubRender=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( mplSubRender )
|
if ( mplSubRender )
|
||||||
{
|
{
|
||||||
|
printf( "------> redraw video.\n" );
|
||||||
wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
|
wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
|
||||||
wsClearWindow( appMPlayer.subWindow );
|
wsClearWindow( appMPlayer.subWindow );
|
||||||
if ( appMPlayer.sub.Bitmap.Image )
|
if ( appMPlayer.sub.Bitmap.Image )
|
||||||
@ -29,10 +69,14 @@ void mplSubDraw( wsParamDisplay )
|
|||||||
}
|
}
|
||||||
XFlush( wsDisplay );
|
XFlush( wsDisplay );
|
||||||
}
|
}
|
||||||
|
appMPlayer.subWindow.State=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
|
void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
|
||||||
{
|
{
|
||||||
|
static int mplSubMoved = 0;
|
||||||
|
static int oldmainisvisible = 0;
|
||||||
|
|
||||||
mplMouseTimer=mplMouseTimerConst;
|
mplMouseTimer=mplMouseTimerConst;
|
||||||
wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor );
|
wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor );
|
||||||
|
|
||||||
@ -46,7 +90,11 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
|
|||||||
mplHideMenu( RX,RY );
|
mplHideMenu( RX,RY );
|
||||||
msButton=0;
|
msButton=0;
|
||||||
break;
|
break;
|
||||||
|
// ---
|
||||||
case wsPLMouseButton:
|
case wsPLMouseButton:
|
||||||
|
oldmainisvisible=VisibleMainWindow();
|
||||||
|
printf( "----> %d %d\n",mainisvisible1,mainisvisible2 );
|
||||||
|
//=mainisvisible;
|
||||||
sx=X; sy=Y;
|
sx=X; sy=Y;
|
||||||
msButton=wsPLMouseButton;
|
msButton=wsPLMouseButton;
|
||||||
mplSubMoved=0;
|
mplSubMoved=0;
|
||||||
@ -65,15 +113,15 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case wsRLMouseButton:
|
case wsRLMouseButton:
|
||||||
if ( !mplSubMoved )
|
if ( ( !mplSubMoved )&&
|
||||||
|
( appMPlayer.subWindow.isFullScreen )&&
|
||||||
|
( !VisibleMainWindow() ) )
|
||||||
{
|
{
|
||||||
wsMoveTopWindow( &appMPlayer.mainWindow );
|
wsMoveTopWindow( &appMPlayer.mainWindow );
|
||||||
|
// else wsMoveTopWindow( &appMPlayer.mainWindow );
|
||||||
}
|
}
|
||||||
msButton=0;
|
msButton=0;
|
||||||
mplSubMoved=0;
|
mplSubMoved=0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//void mplSubResizeHandle( unsigned int X,unsigned int Y,unsigned int width,unsigned int height )
|
|
||||||
//{ mplResize( X,Y,width,height ); }
|
|
||||||
|
Loading…
Reference in New Issue
Block a user