Mercurial > mplayer.hg
view Gui/mplayer/play.c @ 1852:58dd326fcc4a
fix xshape, mixer, fullscreen, etc
author | pontscho |
---|---|
date | Tue, 04 Sep 2001 15:21:00 +0000 |
parents | 62b8e85865a2 |
children | 88a88d0a3f94 |
line wrap: on
line source
#include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <signal.h> int mplParent = 1; int moviex,moviey,moviewidth,movieheight; #include "../app.h" #include "../wm/ws.h" #include "../wm/wskeys.h" #include "../wm/widget.h" #include "../../config.h" #include "../../libvo/x11_common.h" #include "widgets.h" #include "./mplayer.h" #include "psignal.h" #include "play.h" #include "../skin/skin.h" #include "../config.h" #include "../error.h" #include "../language.h" mplCommStruct * mplShMem; char * Filename = NULL; extern float rel_seek_secs; extern int abs_seek_pos; void mplFullScreen( void ) { // if ( appMPlayer.subWindow.isFullScreen ) // { // } wsFullScreen( &appMPlayer.subWindow ); mplResize( 0,0,appMPlayer.subWindow.Width,appMPlayer.subWindow.Height ); } extern int mplSubRender; void mplStop() { if ( !mplShMem->Playing ) return; mplShMem->Playing=0; mplShMem->TimeSec=0; mplShMem->Position=0; if ( !appMPlayer.subWindow.isFullScreen ) { wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y ); wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height ); } mplSubRender=1; wsPostRedisplay( &appMPlayer.subWindow ); } void mplPlay( void ) { if ( ( mplShMem->Filename[0] == 0 )|| ( mplShMem->Playing == 1 ) ) return; if ( mplShMem->Playing == 2 ) { mplPause(); return; } mplShMem->Playing=1; mplSubRender=0; wsPostRedisplay( &appMPlayer.subWindow ); } void mplPause( void ) { switch( mplShMem->Playing ) { case 1: // playing mplShMem->Playing=2; btnModify( evPlaySwitchToPause,btnReleased ); btnModify( evPauseSwitchToPlay,btnDisabled ); break; case 2: // paused mplShMem->Playing=1; btnModify( evPlaySwitchToPause,btnDisabled ); btnModify( evPauseSwitchToPlay,btnReleased ); break; } mplSubRender=0; } 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; } void mplMPlayerInit( int argc,char* argv[], char *envp[] ) { struct sigaction sa; mplShMem=calloc( 1,sizeof( mplCommStruct ) ); mplShMem->Balance=50.0f; memset(&sa, 0, sizeof(sa)); sa.sa_handler = mplMainSigHandler; sigaction( SIGTYPE,&sa,NULL ); } float mplGetPosition( void ) { // return 0.0 ... 100.0 return mplShMem->Position; } void mplRelSeek( float s ) { // -+s rel_seek_secs=s; abs_seek_pos=0; } void mplAbsSeek( float s ) { // 0.0 ... 100.0 rel_seek_secs=0.01*s; abs_seek_pos=3; } listItems tmpList; void ChangeSkin( void ) { if ( strcmp( cfgSkin,gtkShMem->sb.name ) ) { int ret; #ifdef DEBUG dbprintf( 1,"[psignal] skin: %s\n",gtkShMem->sb.name ); #endif mainVisible=0; appInitStruct( &tmpList ); skinAppMPlayer=&tmpList; ret=skinRead( gtkShMem->sb.name ); fntFreeFont(); appInitStruct( &tmpList ); skinAppMPlayer=&appMPlayer; appInitStruct( &appMPlayer ); if ( !ret ) strcpy( cfgSkin,gtkShMem->sb.name ); skinRead( cfgSkin ); if ( ret ) { mainVisible=1; return; } // appCopy( &appMPlayer,&tmpList ); // appInitStruct( &tmpList ); // skinAppMPlayer=&appMPlayer; // strcpy( cfgSkin,gtkShMem->sb.name ); if ( mplDrawBuffer ) free( mplDrawBuffer ); if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL ) { message( False,langNEMDB ); return; } wsResizeWindow( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height ); wsMoveWindow( &appMPlayer.mainWindow,appMPlayer.main.x,appMPlayer.main.y ); wsResizeImage( &appMPlayer.mainWindow ); wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image ); mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); btnModify( evSetVolume,mplShMem->Volume ); btnModify( evSetBalance,mplShMem->Balance ); btnModify( evSetMoviePosition,mplShMem->Position ); if ( appMPlayer.menuBase.Bitmap.Image ) { if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer ); if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL ) { message( False,langNEMDB ); return; } wsResizeWindow( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height ); wsResizeImage( &appMPlayer.menuWindow ); } mplSkinChanged=1; if ( !mplShMem->Playing ) { mplSkinChanged=0; if ( appMPlayer.subWindow.isFullScreen ) wsFullScreen( &appMPlayer.subWindow ); wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height ); wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y ); if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow ); mplSubRender=1; wsPostRedisplay( &appMPlayer.subWindow ); } } mplShMem->SkinChange=0; } void EventHandling( void ) { wsHandleEvents();mplTimerHandler(0); // handle GUI timer events if ( mplShMem->SkinChange ) ChangeSkin(); }