[vlc-devel] [PATCH 1/2] [RFC] demux: un/set the info title via inline functions

Steve Lhomme robux4 at videolabs.io
Sat Jun 4 19:00:25 CEST 2016


demuxers can read their local values but when writing they need to go through
the functions.
that will come handy for demux-filters
---
 include/vlc_demux.h                   | 33 +++++++++++++++++++++++++++++----
 modules/access/bd/bd.c                |  9 ++++-----
 modules/access/bluray.c               | 25 ++++++++++++-------------
 modules/access/dvdnav.c               | 24 ++++++++----------------
 modules/access/dvdread.c              | 24 ++++++++----------------
 modules/demux/avformat/demux.c        |  3 +--
 modules/demux/gme.c                   |  6 ++----
 modules/demux/mkv/mkv.cpp             |  8 +++-----
 modules/demux/mkv/virtual_segment.cpp | 10 ++++------
 modules/demux/mp4/mp4.c               |  3 +--
 modules/demux/ogg.c                   |  7 +++----
 modules/demux/sid.cpp                 |  3 +--
 src/input/input.c                     |  8 ++++----
 13 files changed, 80 insertions(+), 83 deletions(-)

diff --git a/include/vlc_demux.h b/include/vlc_demux.h
index f4baeea..1153e1c 100644
--- a/include/vlc_demux.h
+++ b/include/vlc_demux.h
@@ -79,6 +79,17 @@ struct demux_t
     input_thread_t *p_input;
 };
 
+static inline void demux_InfoAddFlags( demux_t *p_demux, int flags )
+{
+    p_demux->info.i_update |= flags;
+}
+
+static inline void demux_InfoDelFlags( demux_t *p_demux, int flags )
+{
+    p_demux->info.i_update &= ~flags;
+}
+
+
 /* pf_demux return values */
 #define VLC_DEMUXER_EOF       0
 #define VLC_DEMUXER_EGENERIC -1
@@ -90,6 +101,22 @@ struct demux_t
 #define INPUT_UPDATE_META       0x0040
 #define INPUT_UPDATE_TITLE_LIST 0x0100
 
+static inline void demux_SetTitle( demux_t *p_demux, int i_title )
+{
+    p_demux->info.i_title = i_title;
+    p_demux->info.i_update |= INPUT_UPDATE_TITLE;
+    if ( p_demux->p_prev )
+        demux_SetTitle( p_demux->p_prev, i_title );
+}
+
+static inline void demux_SetSeekpoint( demux_t *p_demux, int i_seekpoint )
+{
+    p_demux->info.i_seekpoint = i_seekpoint;
+    p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+    if ( p_demux->p_prev )
+        demux_SetSeekpoint( p_demux->p_prev, i_seekpoint );
+}
+
 /* demux_meta_t is returned by "meta reader" module to the demuxer */
 typedef struct demux_meta_t
 {
@@ -329,15 +356,13 @@ static inline void demux_UpdateTitleFromStream( demux_t *demux )
     if( stream_Control( s, STREAM_GET_TITLE, &title ) == VLC_SUCCESS
      && title != (unsigned)demux->info.i_title )
     {
-        demux->info.i_title = title;
-        demux->info.i_update |= INPUT_UPDATE_TITLE;
+        demux_SetTitle( demux, title );
     }
 
     if( stream_Control( s, STREAM_GET_SEEKPOINT, &seekpoint ) == VLC_SUCCESS
      && seekpoint != (unsigned)demux->info.i_seekpoint )
     {
-        demux->info.i_seekpoint = seekpoint;
-        demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+        demux_SetSeekpoint( demux, seekpoint );
     }
 }
 
diff --git a/modules/access/bd/bd.c b/modules/access/bd/bd.c
index 76e4998..89d886f 100644
--- a/modules/access/bd/bd.c
+++ b/modules/access/bd/bd.c
@@ -470,7 +470,7 @@ static int Demux( demux_t *p_demux )
                 const seekpoint_t *p_seekpoint = p_title->seekpoint[p_demux->info.i_seekpoint+1];
                 if( p_seekpoint->i_time_offset >  i_time )
                     break;
-                p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+                demux_InfoAddFlags( p_demux, INPUT_UPDATE_SEEKPOINT );
             }
         }
     }
@@ -564,9 +564,8 @@ static int SetTitle( demux_t *p_demux, int i_title )
         return VLC_EGENERIC;
 
     /* */
-    p_demux->info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-    p_demux->info.i_title = i_title;
-    p_demux->info.i_seekpoint = 0;
+    demux_SetTitle( p_demux, i_title );
+    demux_SetSeekpoint( p_demux, 0 );
 
     return VLC_SUCCESS;
 }
@@ -871,7 +870,7 @@ update:
         if( p_seekpoint->i_time_offset >  i_time )
             break;
     }
-    p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+    demux_InfoAddFlags( p_demux, INPUT_UPDATE_SEEKPOINT );
     return VLC_SUCCESS;
 }
 
diff --git a/modules/access/bluray.c b/modules/access/bluray.c
index 0693451..c8ce735 100644
--- a/modules/access/bluray.c
+++ b/modules/access/bluray.c
@@ -1828,7 +1828,7 @@ static int blurayControl(demux_t *p_demux, int query, va_list args)
         int i_title = (int)va_arg(args, int);
         if (bluraySetTitle(p_demux, i_title) != VLC_SUCCESS) {
             /* make sure GUI restores the old setting in title menu ... */
-            p_demux->info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
+            demux_InfoAddFlags( p_demux, INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT );
             return VLC_EGENERIC;
         }
         break;
@@ -1837,7 +1837,7 @@ static int blurayControl(demux_t *p_demux, int query, va_list args)
     {
         int i_chapter = (int)va_arg(args, int);
         bd_seek_chapter(p_sys->bluray, i_chapter);
-        p_demux->info.i_update = INPUT_UPDATE_SEEKPOINT;
+        demux_InfoAddFlags( p_demux, INPUT_UPDATE_SEEKPOINT );
         break;
     }
 
@@ -1969,7 +1969,7 @@ static int blurayControl(demux_t *p_demux, int query, va_list args)
     case DEMUX_NAV_MENU:
         if (p_sys->b_menu) {
             if (bd_menu_call(p_sys->bluray, -1) == 1) {
-                p_demux->info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
+                demux_InfoAddFlags( p_demux, INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT );
                 return VLC_SUCCESS;
             }
             msg_Err(p_demux, "Can't select Top Menu title");
@@ -2124,15 +2124,15 @@ static void blurayUpdatePlaylist(demux_t *p_demux, unsigned i_playlist)
 
     /* read title info and init some values */
     if (!p_sys->b_menu)
-        p_demux->info.i_title = bd_get_current_title(p_sys->bluray);
-    p_demux->info.i_seekpoint = 0;
-    p_demux->info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
+        demux_SetTitle( p_demux, bd_get_current_title(p_sys->bluray) );
+    demux_SetSeekpoint( p_demux, 0 );
+    demux_InfoAddFlags( p_demux, INPUT_UPDATE_TITLE );
 
     BLURAY_TITLE_INFO *p_title_info = bd_get_playlist_info(p_sys->bluray, i_playlist, 0);
     if (p_title_info) {
         blurayUpdateTitleInfo(p_sys->pp_title[p_demux->info.i_title], p_title_info);
         if (p_sys->b_menu)
-            p_demux->info.i_update |= INPUT_UPDATE_TITLE_LIST;
+            demux_InfoAddFlags( p_demux, INPUT_UPDATE_TITLE_LIST );
     }
     setTitleInfo(p_sys, p_title_info);
 
@@ -2171,13 +2171,13 @@ static void blurayHandleEvent(demux_t *p_demux, const BD_EVENT *e)
     switch (e->event) {
     case BD_EVENT_TITLE:
         if (e->param == BLURAY_TITLE_FIRST_PLAY)
-            p_demux->info.i_title = p_sys->i_title - 1;
+            demux_SetTitle( p_demux, p_sys->i_title - 1 );
         else
-            p_demux->info.i_title = e->param;
+            demux_SetTitle( p_demux, e->param );
         /* this is feature title, we don't know yet which playlist it will play (if any) */
         setTitleInfo(p_sys, NULL);
         /* reset title infos here ? */
-        p_demux->info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT; /* might be BD-J title with no video */
+        demux_InfoAddFlags( p_demux, INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT ); /* might be BD-J title with no video */
         break;
     case BD_EVENT_PLAYLIST:
         /* Start of playlist playback (?????.mpls) */
@@ -2195,10 +2195,9 @@ static void blurayHandleEvent(demux_t *p_demux, const BD_EVENT *e)
         break;
     case BD_EVENT_CHAPTER:
         if (e->param && e->param < 0xffff)
-          p_demux->info.i_seekpoint = e->param - 1;
+          demux_SetSeekpoint( p_demux, e->param - 1 );
         else
-          p_demux->info.i_seekpoint = 0;
-        p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+          demux_SetSeekpoint( p_demux, 0 );
         break;
     case BD_EVENT_PLAYMARK:
     case BD_EVENT_ANGLE:
diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c
index 9b6d266..f7008b8 100644
--- a/modules/access/dvdnav.c
+++ b/modules/access/dvdnav.c
@@ -642,10 +642,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 msg_Warn( p_demux, "cannot set title/chapter" );
                 return VLC_EGENERIC;
             }
-            p_demux->info.i_update |=
-                INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_title = i;
-            p_demux->info.i_seekpoint = 0;
+            demux_SetTitle( p_demux, i);
+            demux_SetSeekpoint( p_demux, 0 );
             return VLC_SUCCESS;
 
         case DEMUX_SET_SEEKPOINT:
@@ -672,8 +670,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 msg_Warn( p_demux, "cannot set title/chapter" );
                 return VLC_EGENERIC;
             }
-            p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_seekpoint = i;
+            demux_SetSeekpoint( p_demux, i );
             return VLC_SUCCESS;
 
         case DEMUX_GET_PTS_DELAY:
@@ -749,10 +746,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                     return VLC_EGENERIC;
                 }
             }
-            p_demux->info.i_update |=
-                INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_title = 0;
-            p_demux->info.i_seekpoint = 2;
+            demux_SetTitle( p_demux, 0 );
+            demux_SetSeekpoint( p_demux, 2 );
             break;
         }
 
@@ -968,8 +963,7 @@ static int Demux( demux_t *p_demux )
             if( i_title >= 0 && i_title < p_sys->i_title &&
                 p_demux->info.i_title != i_title )
             {
-                p_demux->info.i_update |= INPUT_UPDATE_TITLE;
-                p_demux->info.i_title = i_title;
+                demux_SetTitle( p_demux, i_title );
             }
         }
         break;
@@ -1002,13 +996,11 @@ static int Demux( demux_t *p_demux )
         {
             if( i_title >= 0 && i_title < p_sys->i_title )
             {
-                p_demux->info.i_update |= INPUT_UPDATE_TITLE;
-                p_demux->info.i_title = i_title;
+                demux_SetTitle( p_demux, i_title );
 
                 if( i_part >= 1 && i_part <= p_sys->title[i_title]->i_seekpoint )
                 {
-                    p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-                    p_demux->info.i_seekpoint = i_part - 1;
+                    demux_SetSeekpoint( p_demux, i_part - 1 );
                 }
             }
         }
diff --git a/modules/access/dvdread.c b/modules/access/dvdread.c
index 5f1f070..c91277d 100644
--- a/modules/access/dvdread.c
+++ b/modules/access/dvdread.c
@@ -406,10 +406,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 msg_Warn( p_demux, "cannot set title/chapter" );
                 return VLC_EGENERIC;
             }
-            p_demux->info.i_update |=
-                INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_title = i;
-            p_demux->info.i_seekpoint = 0;
+            demux_SetTitle( p_demux, i );
+            demux_SetSeekpoint( p_demux, 0 );
             return VLC_SUCCESS;
 
         case DEMUX_SET_SEEKPOINT:
@@ -419,8 +417,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 msg_Warn( p_demux, "cannot set title/chapter" );
                 return VLC_EGENERIC;
             }
-            p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_seekpoint = i;
+            demux_SetSeekpoint( p_demux, i );
             return VLC_SUCCESS;
 
         case DEMUX_GET_PTS_DELAY:
@@ -854,10 +851,8 @@ static int DvdReadSetArea( demux_t *p_demux, int i_title, int i_chapter,
 
         if( p_demux->info.i_title != i_title )
         {
-            p_demux->info.i_update |=
-                INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_title = i_title;
-            p_demux->info.i_seekpoint = 0;
+            demux_SetTitle( p_demux, i_title );
+            demux_SetSeekpoint( p_demux, 0 );
         }
 
         /* TODO: re-add angles */
@@ -1033,8 +1028,7 @@ static int DvdReadSetArea( demux_t *p_demux, int i_title, int i_chapter,
 
         if( p_demux->info.i_seekpoint != i_chapter )
         {
-            p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_seekpoint = i_chapter;
+            demux_SetSeekpoint( p_demux, i_chapter );
         }
     }
     else if( i_chapter != -1 )
@@ -1105,8 +1099,7 @@ static void DvdReadSeek( demux_t *p_demux, int i_block_offset )
     if( i_chapter < p_sys->i_chapters &&
         p_demux->info.i_seekpoint != i_chapter )
     {
-        p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-        p_demux->info.i_seekpoint = i_chapter;
+        demux_SetSeekpoint( p_demux, i_chapter );
     }
 
     /* Find vobu */
@@ -1306,8 +1299,7 @@ static void DvdReadFindCell( demux_t *p_demux )
         if( p_sys->i_chapter < p_sys->i_chapters &&
             p_demux->info.i_seekpoint != p_sys->i_chapter )
         {
-            p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-            p_demux->info.i_seekpoint = p_sys->i_chapter;
+            demux_SetSeekpoint( p_demux, p_sys->i_chapter );
         }
     }
 }
diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
index a56be31..3671ac1 100644
--- a/modules/demux/avformat/demux.c
+++ b/modules/demux/avformat/demux.c
@@ -855,8 +855,7 @@ static void UpdateSeekPoint( demux_t *p_demux, int64_t i_time )
 
     if( i != p_demux->info.i_seekpoint && i >= 0 )
     {
-        p_demux->info.i_seekpoint = i;
-        p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+        demux_SetSeekpoint( p_demux, i );
     }
 }
 
diff --git a/modules/demux/gme.c b/modules/demux/gme.c
index 48d535e..3011c20 100644
--- a/modules/demux/gme.c
+++ b/modules/demux/gme.c
@@ -208,8 +208,7 @@ static int Demux (demux_t *demux)
         if (++sys->track_id >= (unsigned)gme_track_count (sys->emu))
             return 0;
 
-        demux->info.i_update |= INPUT_UPDATE_TITLE;
-        demux->info.i_title = sys->track_id;
+        demux_SetTitle( demux, sys->track_id );
         gme_start_track (sys->emu, sys->track_id);
     }
 
@@ -324,8 +323,7 @@ static int Control (demux_t *demux, int query, va_list args)
             if (track_id >= gme_track_count (sys->emu))
                 break;
             gme_start_track (sys->emu, track_id);
-            demux->info.i_update |= INPUT_UPDATE_TITLE;
-            demux->info.i_title = track_id;
+            demux_SetTitle( demux, track_id );
             sys->track_id = track_id;
             return VLC_SUCCESS;
         }
diff --git a/modules/demux/mkv/mkv.cpp b/modules/demux/mkv/mkv.cpp
index 76c8983..bdac91a 100644
--- a/modules/demux/mkv/mkv.cpp
+++ b/modules/demux/mkv/mkv.cpp
@@ -394,9 +394,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 p_sys->p_current_vsegment->p_current_vchapter = p_sys->p_current_vsegment->veditions[p_sys->p_current_vsegment->i_current_edition]->getChapterbyTimecode(0);
 
                 Seek( p_demux, static_cast<int64_t>( p_sys->titles[i_idx]->seekpoint[0]->i_time_offset ), -1, NULL);
-                p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT|INPUT_UPDATE_TITLE;
-                p_demux->info.i_seekpoint = 0;
-                p_demux->info.i_title = i_idx;
+                demux_SetSeekpoint( p_demux, 0 );
+                demux_SetTitle( p_demux, i_idx );
                 p_sys->f_duration = (float) p_sys->titles[i_idx]->i_length / 1000.f;
                 return VLC_SUCCESS;
             }
@@ -409,8 +408,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
             if( p_sys->titles.size() && i_skp < p_sys->titles[p_sys->i_current_title]->i_seekpoint)
             {
                 Seek( p_demux, static_cast<int64_t>( p_sys->titles[p_sys->i_current_title]->seekpoint[i_skp]->i_time_offset ), -1, NULL);
-                p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-                p_demux->info.i_seekpoint = i_skp;
+                demux_SetSeekpoint( p_demux, i_skp );
                 return VLC_SUCCESS;
             }
             return VLC_EGENERIC;
diff --git a/modules/demux/mkv/virtual_segment.cpp b/modules/demux/mkv/virtual_segment.cpp
index 5d30d7e..0e0635f 100644
--- a/modules/demux/mkv/virtual_segment.cpp
+++ b/modules/demux/mkv/virtual_segment.cpp
@@ -462,9 +462,8 @@ bool virtual_segment_c::UpdateCurrentToChapter( demux_t & demux )
             p_current_vchapter = p_cur_vchapter;
             if ( p_cur_vchapter->i_seekpoint_num > 0 )
             {
-                demux.info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-                demux.info.i_title = sys.i_current_title = i_sys_title;
-                demux.info.i_seekpoint = p_cur_vchapter->i_seekpoint_num - 1;
+                demux_SetTitle( &demux, sys.i_current_title = i_sys_title );
+                demux_SetSeekpoint( &demux, p_cur_vchapter->i_seekpoint_num - 1 );
             }
 
             return b_has_seeked;
@@ -519,9 +518,8 @@ void virtual_segment_c::Seek( demux_t & demuxer, mtime_t i_mk_date,
         p_sys->i_mk_chapter_time = i_mk_time_offset - p_vchapter->segment.i_mk_start_time /* + VLC_TS_0 */;
         if ( p_vchapter->p_chapter && p_vchapter->i_seekpoint_num > 0 )
         {
-            demuxer.info.i_update |= INPUT_UPDATE_TITLE | INPUT_UPDATE_SEEKPOINT;
-            demuxer.info.i_title = p_sys->i_current_title = i_sys_title;
-            demuxer.info.i_seekpoint = p_vchapter->i_seekpoint_num - 1;
+            demux_SetTitle( &demuxer, p_sys->i_current_title = i_sys_title );
+            demux_SetSeekpoint( &demuxer, p_vchapter->i_seekpoint_num - 1 );
         }
 
         if( p_current_vchapter == NULL || &p_current_vchapter->segment != &p_vchapter->segment )
diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c
index 7fc7988..a61f04d 100644
--- a/modules/demux/mp4/mp4.c
+++ b/modules/demux/mp4/mp4.c
@@ -1224,8 +1224,7 @@ static void MP4_UpdateSeekpoint( demux_t *p_demux )
 
     if( i != p_demux->info.i_seekpoint && i >= 0 )
     {
-        p_demux->info.i_seekpoint = i;
-        p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
+        demux_SetSeekpoint( p_demux, i );
     }
 }
 /*****************************************************************************
diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c
index 40b26c6..7c8b2fd 100644
--- a/modules/demux/ogg.c
+++ b/modules/demux/ogg.c
@@ -922,8 +922,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 Ogg_ResetStreamsHelper( p_sys );
                 es_out_Control( p_demux->out, ES_OUT_SET_NEXT_DISPLAY_TIME,
                                 VLC_TS_0 + i64 );
-                p_demux->info.i_update |= INPUT_UPDATE_SEEKPOINT;
-                p_demux->info.i_seekpoint = i_seekpoint;
+                demux_SetSeekpoint( p_demux, i_seekpoint );
                 return VLC_SUCCESS;
             }
             else
@@ -2444,7 +2443,7 @@ static void Ogg_ExtractComments( demux_t *p_demux, es_format_t *p_fmt,
 
     if( p_ogg->i_seekpoints > 1 )
     {
-        p_demux->info.i_update |= INPUT_UPDATE_TITLE_LIST;
+        demux_InfoAddFlags( p_demux, INPUT_UPDATE_TITLE_LIST );
     }
 }
 
@@ -2527,7 +2526,7 @@ static void Ogg_ExtractMeta( demux_t *p_demux, es_format_t *p_fmt, const uint8_t
         break;
     }
     if( p_ogg->p_meta )
-        p_demux->info.i_update |= INPUT_UPDATE_META;
+        demux_InfoAddFlags( p_demux, INPUT_UPDATE_META );
 }
 
 static bool Ogg_ReadTheoraHeader( logical_stream_t *p_stream,
diff --git a/modules/demux/sid.cpp b/modules/demux/sid.cpp
index b095d71..7a16188 100644
--- a/modules/demux/sid.cpp
+++ b/modules/demux/sid.cpp
@@ -276,8 +276,7 @@ static int Control (demux_t *demux, int query, va_list args)
             if (!result)
                 return  VLC_EGENERIC;
 
-            demux->info.i_title = i_idx;
-            demux->info.i_update = INPUT_UPDATE_TITLE;
+            demux_SetTitle( demux, i_idx );
             msg_Dbg( demux, "set song %i", i_idx);
 
             return VLC_SUCCESS;
diff --git a/src/input/input.c b/src/input/input.c
index 5307203..5af8256 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -560,7 +560,7 @@ static void MainLoopDemux( input_thread_t *p_input, bool *pb_changed )
             if( p_input->p->master->p_demux->info.i_update & INPUT_UPDATE_TITLE_LIST )
             {
                 UpdateTitleListfromDemux( p_input );
-                p_input->p->master->p_demux->info.i_update &= ~INPUT_UPDATE_TITLE_LIST;
+                demux_InfoDelFlags( p_input->p->master->p_demux, INPUT_UPDATE_TITLE_LIST );
             }
             if( p_input->p->master->b_title_demux )
             {
@@ -2171,14 +2171,14 @@ static int UpdateTitleSeekpointFromDemux( input_thread_t *p_input )
     {
         input_SendEventTitle( p_input, p_demux->info.i_title );
 
-        p_demux->info.i_update &= ~INPUT_UPDATE_TITLE;
+        demux_InfoDelFlags( p_demux, INPUT_UPDATE_TITLE );
     }
     if( p_demux->info.i_update & INPUT_UPDATE_SEEKPOINT )
     {
         input_SendEventSeekpoint( p_input,
                                   p_demux->info.i_title, p_demux->info.i_seekpoint );
 
-        p_demux->info.i_update &= ~INPUT_UPDATE_SEEKPOINT;
+        demux_InfoDelFlags( p_demux, INPUT_UPDATE_SEEKPOINT );
     }
 
     return UpdateTitleSeekpoint( p_input,
@@ -2193,7 +2193,7 @@ static void UpdateGenericFromDemux( input_thread_t *p_input )
     if( p_demux->info.i_update & INPUT_UPDATE_META )
     {
         InputUpdateMeta( p_input, p_demux );
-        p_demux->info.i_update &= ~INPUT_UPDATE_META;
+        demux_InfoDelFlags( p_demux, INPUT_UPDATE_META );
     }
     {
         double quality;
-- 
2.7.0



More information about the vlc-devel mailing list