[vlc-devel] [PATCH 1/2] input: add input_item_SetEpgEvent

Francois Cartegnie fcvlcdev at free.fr
Mon Dec 19 21:19:39 CET 2016


---
 src/input/input_interface.h |  1 +
 src/input/item.c            | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/src/input/input_interface.h b/src/input/input_interface.h
index 0ec778c..f271439 100644
--- a/src/input/input_interface.h
+++ b/src/input/input_interface.h
@@ -35,6 +35,7 @@ void input_item_SetPreparsed( input_item_t *p_i, bool b_preparsed );
 void input_item_SetArtNotFound( input_item_t *p_i, bool b_not_found );
 void input_item_SetArtFetched( input_item_t *p_i, bool b_art_fetched );
 void input_item_SetEpg( input_item_t *p_item, const vlc_epg_t *p_epg );
+void input_item_SetEpgEvent( input_item_t *p_item, const vlc_epg_event_t *p_epg_evt );
 void input_item_SetEpgOffline( input_item_t * );
 
 /**
diff --git a/src/input/item.c b/src/input/item.c
index c5f4977..f91dca8 100644
--- a/src/input/item.c
+++ b/src/input/item.c
@@ -897,6 +897,40 @@ void input_item_MergeInfos( input_item_t *p_item, info_category_t *p_cat )
     vlc_event_send( &p_item->event_manager, &event );
 }
 
+void input_item_SetEpgEvent( input_item_t *p_item, const vlc_epg_event_t *p_epg_evt )
+{
+    VLC_UNUSED(p_epg_evt);
+    vlc_mutex_lock( &p_item->lock );
+
+    bool b_changed = false;
+
+    for( int i = 0; i < p_item->i_epg; i++ )
+    {
+        vlc_epg_t *p_epg = p_item->pp_epg[i];
+        for( size_t j = 0; j < p_epg->i_event; j++ )
+        {
+            if( p_epg->pp_event[j]->i_id == p_epg_evt->i_id )
+            {
+                vlc_epg_event_t *p_dup = vlc_epg_event_Duplicate( p_epg_evt );
+                if( p_dup )
+                {
+                    vlc_epg_event_Delete( p_epg->pp_event[j] );
+                    p_epg->pp_event[j] = p_dup;
+                    b_changed = true;
+                }
+                break;
+            }
+        }
+    }
+    vlc_mutex_unlock( &p_item->lock );
+
+    if( b_changed )
+    {
+        vlc_event_t event = { .type = vlc_InputItemInfoChanged, };
+        vlc_event_send( &p_item->event_manager, &event );
+    }
+}
+
 #define EPG_DEBUG
 void input_item_SetEpg( input_item_t *p_item, const vlc_epg_t *p_update )
 {
-- 
2.7.4



More information about the vlc-devel mailing list