Reset stream IDs on DVD title change.
authorib <ib@b3059339-0415-0410-9bf9-f77b7e298cf2>
Tue, 1 May 2018 12:44:49 +0000 (12:44 +0000)
committerib <ib@b3059339-0415-0410-9bf9-f77b7e298cf2>
Tue, 1 May 2018 12:44:49 +0000 (12:44 +0000)
An audio, video or subtitle track selected by the user
must be reset when the title of a DVD changes.

git-svn-id: svn://git.mplayerhq.hu/mplayer/trunk@38105 b3059339-0415-0410-9bf9-f77b7e298cf2

gui/interface.c
gui/interface.h
gui/ui/actions.c

index 16b0f6b..4928c40 100644 (file)
@@ -201,6 +201,17 @@ static void remove_vf(char *vf)
     }
 }
 
+/**
+ * @brief Reset the audio, video and subtitles stream IDs.
+ */
+void reset_stream_ids(void)
+{
+    audio_id  = -1;
+    video_id  = -1;
+    dvdsub_id = -1;
+    vobsub_id = -1;
+}
+
 /* MPlayer -> GUI */
 
 /**
@@ -504,11 +515,7 @@ int gui(int what, void *data)
         wsEvents();
 
         if (guiInfo.MediumChanged == GUI_MEDIUM_NEW) {
-            audio_id  = -1;
-            video_id  = -1;
-            dvdsub_id = -1;
-            vobsub_id = -1;
-
+            reset_stream_ids();
             stream_cache_size = -1;
             autosync  = 0;
             force_fps = 0;
index 17024ae..f217dfd 100644 (file)
@@ -151,6 +151,8 @@ typedef struct {
 
 extern guiInterface_t guiInfo;
 
+void reset_stream_ids(void);
+
 /// @name MPlayer -> GUI
 //@{
 int gui(int what, void *data);
index b9a3262..f3bc0f2 100644 (file)
@@ -169,12 +169,14 @@ void uiEvent(int ev, float param)
         guiInfo.Track   = iparam;
         guiInfo.Chapter = 1;
         guiInfo.Angle   = 1;
+        reset_stream_ids();
         uiEvent(ivPlayDVD, 0);
         break;
 
     case evPlayDVD:
         guiInfo.Chapter = 1;
         guiInfo.Angle   = 1;
+        reset_stream_ids();
         if (guiInfo.StreamType != STREAMTYPE_DVD)
             guiInfo.Track = 0;
 
@@ -872,6 +874,7 @@ void uiPrev(void)
 
         if (--guiInfo.Chapter == 0) {
             guiInfo.Chapter = 1;
+            reset_stream_ids();
 
             if (--guiInfo.Track == 0) {
                 guiInfo.Track = 1;
@@ -948,6 +951,7 @@ void uiNext(void)
 
         if (guiInfo.Chapter++ >= guiInfo.Chapters) {
             guiInfo.Chapter = 1;
+            reset_stream_ids();
 
             if (++guiInfo.Track > guiInfo.Tracks) {
                 guiInfo.Track   = guiInfo.Tracks;