summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-11 01:21:12 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-11 01:21:12 +0000
commit15dc6ef3f76c8a8060ad9cfc36fe34a33f241aba (patch)
tree3b93cb826c911fe5cff2f9bb98b6369c275119ce /Gui
parentd9b33edbba28e29aeb94b7f4acae099175302a16 (diff)
downloadmpv-15dc6ef3f76c8a8060ad9cfc36fe34a33f241aba.tar.bz2
mpv-15dc6ef3f76c8a8060ad9cfc36fe34a33f241aba.tar.xz
- fix three submenu bug
- audio/video track hiding - normal/double/fullscreen handling - dvd audio channel setting bug - fix file/url/vcd/dvd playing - fix variables initialization - some small bug fix - applied some patch from RĂ¼diger Kuhlmann git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8424 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/app.h2
-rw-r--r--Gui/interface.c74
-rw-r--r--Gui/interface.h5
-rw-r--r--Gui/mplayer/gtk/menu.c7
-rw-r--r--Gui/mplayer/mw.c63
-rw-r--r--Gui/mplayer/play.c9
-rw-r--r--Gui/skin/skin.c2
7 files changed, 99 insertions, 63 deletions
diff --git a/Gui/app.h b/Gui/app.h
index c12258091b..1055bbfb56 100644
--- a/Gui/app.h
+++ b/Gui/app.h
@@ -58,7 +58,7 @@
#define evLoadAudioFile 42
#define evSetAspect 44
#define evSetAudio 45
-#define evSetVideo 46
+#define evSetVideo 46
// 47 ...
#define evExit 1000
diff --git a/Gui/interface.c b/Gui/interface.c
index a12fcbd383..b06f94faa8 100644
--- a/Gui/interface.c
+++ b/Gui/interface.c
@@ -13,6 +13,7 @@
#include "mplayer/gtk/eq.h"
#include "mplayer/widgets.h"
#include "mplayer/mplayer.h"
+#include "mplayer/play.h"
#include "../mplayer.h"
#include "app.h"
@@ -264,6 +265,7 @@ void guiInit( void )
mplSubRender=1;
// ---
+ if ( filename ) mplSetFileName( NULL,filename,STREAMTYPE_FILE );
if ( plCurrent && !filename ) mplSetFileName( plCurrent->path,plCurrent->name,STREAMTYPE_FILE );
if ( sub_name ) guiSetFilename( guiIntfStruct.Subtitlename,sub_name );
#if defined( USE_OSD ) || defined( USE_SUB )
@@ -435,10 +437,11 @@ int guiGetEvent( int type,char * arg )
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;
+ case guiSetPlay: guiIntfStruct.Playing=1; break;
+ case guiSetStop: guiIntfStruct.Playing=0; break;
+ case guiSetPause: guiIntfStruct.Playing=2; break;
}
+ mplState();
break;
case guiSetState:
mplState();
@@ -451,9 +454,6 @@ int guiGetEvent( int type,char * arg )
if ( (int)arg ) { guiIntfStruct.NoWindow=True; wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); }
else wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
break;
- case guiReDrawSubWindow:
- wsPostRedisplay( &appMPlayer.subWindow );
- break;
case guiSetDemuxer:
guiIntfStruct.demuxer=(void *)arg;
break;
@@ -500,8 +500,6 @@ int guiGetEvent( int type,char * arg )
if ( vcd_seek_to_track( stream->fd,i ) < 0 ) break;
vcd_seek_to_track( stream->fd,vcd_track );
guiIntfStruct.VCDTracks=--i;
- mp_msg( MSGT_GPLAYER,MSGL_INFO,"[gui] vcd tracks: %d\n",guiIntfStruct.VCDTracks );
- guiIntfStruct.Track=vcd_track;
break;
}
#endif
@@ -554,12 +552,6 @@ int guiGetEvent( int type,char * arg )
if ( guiIntfStruct.StreamType == STREAMTYPE_STREAM ) btnSet( evSetMoviePosition,btnDisabled );
else btnSet( evSetMoviePosition,btnReleased );
- if ( gtkCacheOn ) stream_cache_size=gtkCacheSize;
- else stream_cache_size=-1;
-
- if ( gtkAutoSyncOn ) autosync=gtkAutoSync;
- else autosync=0;
-
// -- audio
if ( audio_out )
{
@@ -604,14 +596,42 @@ int guiGetEvent( int type,char * arg )
#endif
break;
case guiSetDefaults:
- if ( filename && !guiIntfStruct.Filename )
- {
- gtkSet( gtkDelPl,0,NULL ); guiIntfStruct.StreamType=STREAMTYPE_FILE;
- guiSetFilename( guiIntfStruct.Filename,filename );
+ if ( guiIntfStruct.Playing == 1 && guiIntfStruct.FilenameChanged )
+ {
+ audio_id=-1;
+ video_id=-1;
+ dvdsub_id=-1;
+ vobsub_id=-1;
+ stream_cache_size=-1;
+ autosync=0;
+ vcd_track=0;
+ dvd_title=0;
+ }
+ wsPostRedisplay( &appMPlayer.subWindow );
+ break;
+ case guiSetParameters:
+ switch ( guiIntfStruct.StreamType )
+ {
+ case STREAMTYPE_PLAYLIST:
+ break;
+#ifdef HAVE_VCD
+ case STREAMTYPE_VCD:
+ vcd_track=guiIntfStruct.Track;
+ break;
+#endif
+#ifdef USE_DVDREAD
+ case STREAMTYPE_DVD:
+ dvd_title=guiIntfStruct.Title;
+ dvd_chapter=guiIntfStruct.Chapter;
+ dvd_angle=guiIntfStruct.Angle;
+ break;
+#endif
+ }
+ if ( guiIntfStruct.StreamType != STREAMTYPE_PLAYLIST )
+ {
+ if ( guiIntfStruct.Filename ) filename=gstrdup( guiIntfStruct.Filename );
+ else if ( filename ) guiSetFilename( guiIntfStruct.Filename,filename );
}
-
- guiIntfStruct.DiskChanged=0;
-
// --- video opts
if ( !video_driver_list )
@@ -674,7 +694,7 @@ int guiGetEvent( int type,char * arg )
mixer_device=gtkAOOSSMixer;
if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"oss",3 ) && gtkAOOSSDevice )
{
- char * tmp = calloc( 1,strlen( gtkAOOSSDevice ) + 5 );
+ char * tmp = calloc( 1,strlen( gtkAOOSSDevice ) + 7 );
sprintf( tmp,"oss:%s",gtkAOOSSDevice );
gaddlist( &audio_driver_list,tmp );
}
@@ -692,9 +712,19 @@ int guiGetEvent( int type,char * arg )
#endif
// --- misc
+ if ( gtkCacheOn ) stream_cache_size=gtkCacheSize;
+ else stream_cache_size=-1;
+
+ if ( gtkAutoSyncOn ) autosync=gtkAutoSync;
+ else autosync=0;
+
if ( guiIntfStruct.AudioFile ) audio_stream=guiIntfStruct.AudioFile;
else if ( guiIntfStruct.FilenameChanged ) audio_stream=NULL;
+ guiIntfStruct.DiskChanged=0;
+ guiIntfStruct.FilenameChanged=0;
+ guiIntfStruct.NewPlay=0;
+
break;
}
return False;
diff --git a/Gui/interface.h b/Gui/interface.h
index 83318e1566..ad4c1cb2e5 100644
--- a/Gui/interface.h
+++ b/Gui/interface.h
@@ -63,9 +63,13 @@ typedef struct
void * event_struct;
int DiskChanged;
+ int NewPlay;
#ifdef USE_DVDREAD
guiDVDStruct DVD;
+ int Title;
+ int Angle;
+ int Chapter;
#endif
#ifdef HAVE_VCD
@@ -125,6 +129,7 @@ extern guiInterface_t guiIntfStruct;
#define guiSetValues 13
#define guiSetFileFormat 14
#define guiSetDemuxer 15
+#define guiSetParameters 16
#define guiSetStop 0
#define guiSetPlay 1
diff --git a/Gui/mplayer/gtk/menu.c b/Gui/mplayer/gtk/menu.c
index 2f34076e14..002b75ed0f 100644
--- a/Gui/mplayer/gtk/menu.c
+++ b/Gui/mplayer/gtk/menu.c
@@ -379,14 +379,15 @@ GtkWidget * create_PopUpMenu( void )
DVDAudioLanguageMenu=AddSubMenu( DVDSubMenu,MSGTR_MENU_AudioLanguages );
if ( guiIntfStruct.DVD.nr_of_audio_channels )
{
- char tmp[64]; int i;
+ char tmp[64]; int i, id = audio_id;
for ( i=0;i < guiIntfStruct.DVD.nr_of_audio_channels;i++ )
{
snprintf( tmp,64,"%s - %s %s",GetLanguage( guiIntfStruct.DVD.audio_streams[i].language ),
ChannelTypes[ guiIntfStruct.DVD.audio_streams[i].type ],
ChannelNumbers[ guiIntfStruct.DVD.audio_streams[i].channels ] );
+ if ( id == -1 ) id=guiIntfStruct.DVD.audio_streams[i].id;
AddMenuCheckItem( DVDAudioLanguageMenu,tmp,
- audio_id == guiIntfStruct.DVD.audio_streams[i].id,
+ id == guiIntfStruct.DVD.audio_streams[i].id,
( guiIntfStruct.DVD.audio_streams[i].id << 16 ) + evSetDVDAudio );
}
}
@@ -424,7 +425,7 @@ GtkWidget * create_PopUpMenu( void )
AddMenuItem( AspectMenu,"2.35",( 4 << 16 ) + evSetAspect );
}
- if ( guiIntfStruct.demuxer && guiIntfStruct.StreamType != STREAMTYPE_DVD )
+ if ( guiIntfStruct.Playing && guiIntfStruct.demuxer && guiIntfStruct.StreamType != STREAMTYPE_DVD )
{
int i,c = 0;
diff --git a/Gui/mplayer/mw.c b/Gui/mplayer/mw.c
index 473c1a46d7..d59fd9f8e5 100644
--- a/Gui/mplayer/mw.c
+++ b/Gui/mplayer/mw.c
@@ -252,6 +252,7 @@ extern int osd_visible;
void mplEventHandling( int msg,float param )
{
int j;
+ int iparam = (int)param;
switch( msg )
{
@@ -270,22 +271,20 @@ void mplEventHandling( int msg,float param )
break;
case evSetAudio:
- if ( !guiIntfStruct.demuxer ) break;
- audio_id=(int)param;
- if ( guiIntfStruct.StreamType == STREAMTYPE_DVD ) goto play;
- guiIntfStruct.FilenameChanged=1;
+ if ( !guiIntfStruct.demuxer || audio_id == iparam ) break;
+ audio_id=iparam;
+ guiIntfStruct.NewPlay=1;
break;
case evSetVideo:
- if ( !guiIntfStruct.demuxer ) break;
- video_id=(int)param;
- if ( guiIntfStruct.StreamType == STREAMTYPE_DVD ) goto play;
- guiIntfStruct.FilenameChanged=1;
- break;
+ if ( !guiIntfStruct.demuxer || video_id == iparam ) break;
+ video_id=iparam;
+ guiIntfStruct.NewPlay=1;
+ break;
#ifdef HAVE_VCD
case evSetVCDTrack:
- guiIntfStruct.Track=(int)param;
+ guiIntfStruct.Track=iparam;
case evPlayVCD:
gtkSet( gtkClearStruct,0,(void *)guiALL );
guiIntfStruct.StreamType=STREAMTYPE_VCD;
@@ -299,6 +298,7 @@ void mplEventHandling( int msg,float param )
play_dvd_2:
gtkSet( gtkClearStruct,0,(void *)(guiALL - guiDVD) );
guiIntfStruct.StreamType=STREAMTYPE_DVD;
+ goto play;
#endif
case evPlay:
case evPlaySwitchToPause:
@@ -306,18 +306,11 @@ play:
if ( ( msg == evPlaySwitchToPause )&&( guiIntfStruct.Playing == 2 ) ) goto NoPause;
- vcd_track=0;
- dvd_title=0;
-
if ( gtkSet( gtkGetCurrPlItem,0,NULL ) &&( guiIntfStruct.StreamType == STREAMTYPE_FILE ) )
{
plItem * next = gtkSet( gtkGetCurrPlItem,0,NULL );
plLastPlayed=next;
- guiSetDF( guiIntfStruct.Filename,next->path,next->name );
- guiIntfStruct.StreamType=STREAMTYPE_FILE;
- guiIntfStruct.FilenameChanged=1;
- gfree( (void **)&guiIntfStruct.AudioFile );
- gfree( (void **)&guiIntfStruct.Subtitlename );
+ mplSetFileName( next->path,next->name,STREAMTYPE_FILE );
}
switch ( guiIntfStruct.StreamType )
@@ -335,10 +328,9 @@ play:
{
if ( !guiIntfStruct.Track )
{
- if ( guiIntfStruct.VCDTracks == 1 ) guiIntfStruct.Track=1;
- else guiIntfStruct.Track=2;
+ if ( guiIntfStruct.VCDTracks > 1 ) guiIntfStruct.Track=2;
+ else guiIntfStruct.Track=1;
}
- vcd_track=guiIntfStruct.Track;
guiIntfStruct.DiskChanged=1;
}
break;
@@ -350,31 +342,32 @@ play:
mplSetFileName( NULL,dvd_device,STREAMTYPE_DVD );
if ( guiIntfStruct.Playing != 2 )
{
- dvd_title=guiIntfStruct.DVD.current_title;
- dvd_angle=guiIntfStruct.DVD.current_angle;
- dvd_chapter=guiIntfStruct.DVD.current_chapter;
+ guiIntfStruct.Title=guiIntfStruct.DVD.current_title;
+ guiIntfStruct.Chapter=guiIntfStruct.DVD.current_chapter;
+ guiIntfStruct.Angle=guiIntfStruct.DVD.current_angle;
guiIntfStruct.DiskChanged=1;
}
break;
#endif
}
+ guiIntfStruct.NewPlay=1;
mplPlay();
break;
#ifdef USE_DVDREAD
case evSetDVDSubtitle:
- dvdsub_id=(int)param;
+ dvdsub_id=iparam;
goto play_dvd_2;
break;
case evSetDVDAudio:
- audio_id=(int)param;
+ audio_id=iparam;
goto play_dvd_2;
break;
case evSetDVDChapter:
- guiIntfStruct.DVD.current_chapter=(int)param;
+ guiIntfStruct.DVD.current_chapter=iparam;
goto play_dvd_2;
break;
case evSetDVDTitle:
- guiIntfStruct.DVD.current_title=(int)param;
+ guiIntfStruct.DVD.current_title=iparam;
guiIntfStruct.DVD.current_chapter=1;
guiIntfStruct.DVD.current_angle=1;
goto play_dvd_2;
@@ -387,7 +380,11 @@ NoPause:
mplPause();
break;
- case evStop: guiIntfStruct.Playing=guiSetStop; mplState(); break;
+ case evStop:
+ guiIntfStruct.Playing=guiSetStop;
+ mplState();
+ guiIntfStruct.NoWindow=False;
+ break;
case evLoadPlay:
mplMainAutoPlay=1;
@@ -448,7 +445,7 @@ set_volume:
case evIconify:
- switch ( (int)param )
+ switch ( iparam )
{
case 0: wsIconify( appMPlayer.mainWindow ); break;
case 1: wsIconify( appMPlayer.subWindow ); break;
@@ -489,7 +486,7 @@ set_volume:
break;
case evSetAspect:
- switch ( (int)param )
+ switch ( iparam )
{
case 2: movie_aspect=16.0f / 9.0f; break;
case 3: movie_aspect=4.0f / 3.0f; break;
@@ -499,10 +496,10 @@ set_volume:
}
wsClearWindow( appMPlayer.subWindow );
#ifdef USE_DVDREAD
- if ( guiIntfStruct.StreamType == STREAMTYPE_DVD ) goto play_dvd_2;
+ if ( guiIntfStruct.StreamType == STREAMTYPE_DVD || guiIntfStruct.StreamType == STREAMTYPE_VCD ) goto play_dvd_2;
else
#endif
- guiIntfStruct.FilenameChanged=1;
+ guiIntfStruct.NewPlay=1;
break;
// --- timer events
diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c
index e79282fe5e..62ad3e2e90 100644
--- a/Gui/mplayer/play.c
+++ b/Gui/mplayer/play.c
@@ -10,6 +10,7 @@
#include "../wm/ws.h"
#include "../../config.h"
#include "../../help_mp.h"
+#include "../../mplayer.h"
#include "../../libvo/x11_common.h"
#include "../../input/input.h"
@@ -99,7 +100,7 @@ void mplEnd( void )
plLastPlayed=next;
guiSetDF( guiIntfStruct.Filename,next->path,next->name );
guiIntfStruct.StreamType=STREAMTYPE_FILE;
- guiIntfStruct.FilenameChanged=1;
+ guiIntfStruct.FilenameChanged=guiIntfStruct.NewPlay=1;
gfree( (void **)&guiIntfStruct.AudioFile );
gfree( (void **)&guiIntfStruct.Subtitlename );
}
@@ -110,6 +111,8 @@ void mplEnd( void )
guiIntfStruct.TimeSec=0;
guiIntfStruct.Position=0;
guiIntfStruct.AudioType=0;
+ guiIntfStruct.NoWindow=False;
+
#ifdef USE_DVDREAD
guiIntfStruct.DVD.current_title=1;
guiIntfStruct.DVD.current_chapter=1;
@@ -255,10 +258,10 @@ void mplSetFileName( char * dir,char * name,int type )
if ( !name ) return;
if ( !dir ) guiSetFilename( guiIntfStruct.Filename,name )
- else guiSetDF( guiIntfStruct.Filename,dir,name )
+ else guiSetDF( guiIntfStruct.Filename,dir,name );
+// filename=guiIntfStruct.Filename;
guiIntfStruct.StreamType=type;
- guiIntfStruct.FilenameChanged=1;
gfree( (void **)&guiIntfStruct.AudioFile );
gfree( (void **)&guiIntfStruct.Subtitlename );
}
diff --git a/Gui/skin/skin.c b/Gui/skin/skin.c
index 9951d9ed23..30c9cd2f6b 100644
--- a/Gui/skin/skin.c
+++ b/Gui/skin/skin.c
@@ -234,7 +234,7 @@ int cmd_button( char * in )
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy );
if ( ( defList->Items[ defList->NumberOfItems ].msg=appFindMessage( msg ) ) == -1 )
- { ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,msg ); return 1; }
+ { ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,msg ); return 0; }
defList->Items[ defList->NumberOfItems ].pressed=btnReleased;
if ( defList->Items[ defList->NumberOfItems ].msg == evPauseSwitchToPlay ) defList->Items[ defList->NumberOfItems ].pressed=btnDisabled;
defList->Items[ defList->NumberOfItems ].tmp=1;