summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gui/interface.c7
-rw-r--r--Gui/interface.h4
-rw-r--r--Gui/mplayer/mw.h16
-rw-r--r--Gui/mplayer/play.c9
-rw-r--r--mplayer.c67
5 files changed, 53 insertions, 50 deletions
diff --git a/Gui/interface.c b/Gui/interface.c
index d0f368573e..a365f1b0b5 100644
--- a/Gui/interface.c
+++ b/Gui/interface.c
@@ -53,6 +53,12 @@ void guiGetEvent( int type,char * arg )
gtkEventHandling();
break;
case guiCEvent:
+ switch ( (int)arg )
+ {
+ case guiSetPlay: guiIntfStruct.Playing=1; mplState(); break;
+ case guiSetStop: guiIntfStruct.Playing=0; mplState(); break;
+ case guiSetPause: guiIntfStruct.Playing=2; mplState(); break;
+ }
break;
case guiIEvent:
printf( "cmd: %d\n",(int)arg );
@@ -76,4 +82,5 @@ void guiEventHandling( void )
if ( use_gui && !guiIntfStruct.Playing ) wsHandleEvents();
gtkEventHandling();
mplTimerHandler(); // handle GUI timer events
+ mplState();
}
diff --git a/Gui/interface.h b/Gui/interface.h
index cdf7a8df4c..f1e24b29a2 100644
--- a/Gui/interface.h
+++ b/Gui/interface.h
@@ -97,6 +97,10 @@ extern guiInterface_t guiIntfStruct;
#define guiCEvent 1
#define guiIEvent 2
+#define guiSetStop 0
+#define guiSetPlay 1
+#define guiSetPause 2
+
extern void guiInit( int argc,char* argv[], char *envp[] );
extern void guiGetEvent( int type,char * arg );
extern void guiEventHandling( void );
diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h
index cdb34d61c2..745349d573 100644
--- a/Gui/mplayer/mw.h
+++ b/Gui/mplayer/mw.h
@@ -222,11 +222,8 @@ play_dvd_2:
#endif
case evPlay:
case evPlaySwitchToPause:
-// btnModify( evPlaySwitchToPause,btnDisabled );
-// btnModify( evPauseSwitchToPlay,btnReleased );
mplMainAutoPlay=0;
if ( ( msg == evPlaySwitchToPause )&( guiIntfStruct.Playing == 1 ) ) goto NoPause;
- mplMainRender=1;
switch ( guiIntfStruct.StreamType )
{
@@ -242,7 +239,7 @@ play_dvd_2:
#endif
}
mplPlay();
- mplState();
+ mplMainRender=1;
break;
#ifdef USE_DVDREAD
case evSetDVDSubtitle:
@@ -279,19 +276,14 @@ play_dvd_2:
case evPause:
case evPauseSwitchToPlay:
-// btnModify( evPlaySwitchToPause,btnReleased );
-// btnModify( evPauseSwitchToPlay,btnDisabled );
NoPause:
- mplMainRender=1;
mplPause();
+ mplMainRender=1;
break;
case evStop:
-// btnModify( evPlaySwitchToPause,btnReleased );
-// btnModify( evPauseSwitchToPlay,btnDisabled );
- mplMainRender=1;
mplStop();
- mplState();
+ mplMainRender=1;
break;
case evLoadPlay:
@@ -563,6 +555,7 @@ void mplMainKeyHandle( int State,int Type,int Key )
if ( Type != wsKeyPressed ) return;
switch ( Key )
{
+ case wsEnter: msg=evPlay; break;
#ifndef HAVE_NEW_INPUT
case '.':
case '>': msg=evNext; break;
@@ -571,7 +564,6 @@ void mplMainKeyHandle( int State,int Type,int Key )
case wsEscape: msg=evExit; break;
- case wsEnter: msg=evPlay; break;
case wsSpace: msg=evPause; break;
case wsa:
case wsA: msg=evAbout; break;
diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c
index 5122c8849d..2cd24611f5 100644
--- a/Gui/mplayer/play.c
+++ b/Gui/mplayer/play.c
@@ -66,6 +66,7 @@ void mplStop()
wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height );
wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
}
+ guiGetEvent( guiCEvent,guiSetStop );
mplSubRender=1;
wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
wsClearWindow( appMPlayer.subWindow );
@@ -78,11 +79,11 @@ void mplPlay( void )
( guiIntfStruct.Filename[0] == 0 )||
( guiIntfStruct.Playing == 1 ) ) return;
if ( guiIntfStruct.Playing == 2 ) { mplPause(); return; }
- guiIntfStruct.Playing=1;
+ guiGetEvent( guiCEvent,guiSetPlay );
mplSubRender=0;
wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
wsClearWindow( appMPlayer.subWindow );
- wsPostRedisplay( &appMPlayer.subWindow );
+// wsPostRedisplay( &appMPlayer.subWindow );
}
void mplPause( void )
@@ -91,13 +92,9 @@ void mplPause( void )
{
case 1: // playing
guiIntfStruct.Playing=2;
-// btnModify( evPlaySwitchToPause,btnReleased );
-// btnModify( evPauseSwitchToPlay,btnDisabled );
break;
case 2: // paused
guiIntfStruct.Playing=1;
-// btnModify( evPlaySwitchToPause,btnDisabled );
-// btnModify( evPauseSwitchToPlay,btnReleased );
break;
}
mplState();
diff --git a/mplayer.c b/mplayer.c
index ec58cb7c2b..d6b3b5d53c 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -713,17 +713,6 @@ if(!parse_codec_cfg(get_path("codecs.conf"))){
// ========== Init keyboard FIFO (connection to libvo) ============
make_pipe(&keyb_fifo_get,&keyb_fifo_put);
- // It's time to init the GUI code: (and fork() the GTK process)
-#ifdef HAVE_NEW_GUI
- if(use_gui){
- guiInit( argc,argv,envp );
- inited_flags|=INITED_GUI;
- guiIntfStruct.Playing= (gui_no_filename) ? 0 : 1;
- mplState();
- }
-#endif
-
-
// Init input system
#ifdef HAVE_NEW_INPUT
current_module = "init_input";
@@ -756,6 +745,14 @@ current_module = NULL;
// ******************* Now, let's see the per-file stuff ********************
+#ifdef HAVE_NEW_GUI
+ if(use_gui){
+ guiInit( argc,argv,envp );
+ inited_flags|=INITED_GUI;
+ guiGetEvent( guiCEvent,(gui_no_filename) ? 0 : 1 );
+ }
+#endif
+
play_next_file:
// We must enable getch2 here to be able to interrupt network connection
@@ -772,14 +769,12 @@ if(!use_stdin && !slave_mode){
if ( guiIntfStruct.DVDChanged )
{
guiIntfStruct.DVDChanged=0;
- guiIntfStruct.Playing=1;
+ guiGetEvent( guiCEvent,guiSetPlay );
filename="/dev/dvd";
goto play_dvd;
}
#endif
-// if(filename && !guiIntfStruct.FilenameChanged) guiSetFilename( guiIntfStruct.Filename,filename );
-// guiIntfStruct.Playing= (gui_no_filename) ? 0 : 1;
while(guiIntfStruct.Playing!=1){
mp_cmd_t* cmd;
usleep(20000);
@@ -1243,15 +1238,9 @@ if(sh_audio){
if(!init_audio(sh_audio)){
mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CouldntInitAudioCodec);
sh_audio=d_audio->sh=NULL;
-#ifdef HAVE_NEW_GUI
- if ( use_gui ) guiIntfStruct.AudioType=0;
-#endif
} else {
mp_msg(MSGT_CPLAYER,MSGL_INFO,"AUDIO: srate=%d chans=%d bps=%d sfmt=0x%X ratio: %d->%d\n",sh_audio->samplerate,sh_audio->channels,sh_audio->samplesize,
sh_audio->sample_format,sh_audio->i_bps,sh_audio->o_bps);
-#ifdef HAVE_NEW_GUI
- if ( use_gui ) guiIntfStruct.AudioType=sh_audio->channels;
-#endif
}
}
@@ -1427,7 +1416,26 @@ current_module="init_libvo";
guiIntfStruct.MovieWidth=sh_video->disp_w;
guiIntfStruct.MovieHeight=sh_video->disp_h;
guiIntfStruct.StreamType=stream->type;
-// guiSetFilename( guiIntfStruct.Filename,filename );
+ guiSetFilename( guiIntfStruct.Filename,filename );
+ if ( sh_audio ) guiIntfStruct.AudioType=sh_audio->channels;
+ else guiIntfStruct.AudioType=0;
+#ifdef USE_DVDREAD
+ if ( stream->type == STREAMTYPE_DVD )
+ {
+ dvd_priv_t * dvdp = stream->priv;
+ guiIntfStruct.DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts;
+ guiIntfStruct.DVD.chapters=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
+ guiIntfStruct.DVD.angles=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
+ guiIntfStruct.DVD.nr_of_audio_channels=dvdp->nr_of_channels;
+ memcpy( guiIntfStruct.DVD.audio_streams,dvdp->audio_streams,sizeof( dvdp->audio_streams ) );
+ guiIntfStruct.DVD.nr_of_subtitles=dvdp->nr_of_subtitles;
+ memcpy( guiIntfStruct.DVD.subtitles,dvdp->subtitles,sizeof( dvdp->subtitles ) );
+ guiIntfStruct.DVD.current_title=dvd_title + 1;
+ guiIntfStruct.DVD.current_chapter=dvd_chapter + 1;
+ guiIntfStruct.DVD.current_angle=dvd_angle + 1;
+ guiIntfStruct.Track=dvd_title + 1;
+ }
+#endif
}
#endif
@@ -1820,9 +1828,7 @@ if(!dapsync){
aq_sleep_time+=time_frame;
#ifdef HAVE_NEW_GUI
- if(use_gui){
- guiEventHandling();
- }
+ if(use_gui) guiEventHandling();
#endif
if(!(vo_flags&256)){ // flag 256 means: libvo driver does its timing (dvb card)
@@ -2043,15 +2049,12 @@ read_input:
#ifdef HAVE_NEW_INPUT
mp_cmd_t* cmd;
#endif
-#ifdef HAVE_NEW_GUI
- int gui_pause_flag=0; // gany!
-#endif
if(!quiet) {
mp_msg(MSGT_CPLAYER,MSGL_STATUS,"\n------ PAUSED -------\r");
fflush(stdout);
}
#ifdef HAVE_NEW_GUI
- if(use_gui) guiIntfStruct.Playing=2;
+ if(use_gui) guiGetEvent( guiCEvent,guiSetPause );
#endif
if (video_out && sh_video)
video_out->control(VOCTRL_PAUSE, NULL);
@@ -2089,13 +2092,13 @@ read_input:
#ifdef HAVE_NEW_GUI
if(use_gui){
guiEventHandling();
- if(guiIntfStruct.Playing!=2 || (rel_seek_secs || abs_seek_pos))
- { gui_pause_flag=1; break; } // end of pause or seek
+ if(guiIntfStruct.Playing!=2 || (rel_seek_secs || abs_seek_pos)) break;
}
#endif
+ usleep(20000);
#ifdef HAVE_NEW_INPUT
}
- mp_cmd_free(cmd);
+ if ( cmd ) mp_cmd_free(cmd);
#else
if(use_stdin) usec_sleep(1000); // do not eat the CPU
}
@@ -2108,7 +2111,7 @@ read_input:
video_out->control(VOCTRL_RESUME, NULL); // resume video
(void)GetRelativeTime(); // keep TF around FT in next cycle
#ifdef HAVE_NEW_GUI
- if(use_gui && !gui_pause_flag) guiIntfStruct.Playing=1; // play from keyboard
+ if (use_gui) guiGetEvent( guiCEvent,guiSetPlay );
#endif
}