1717 */
1818
1919#include "clapper-utils-private.h"
20+ #include "clapper-timeline-private.h"
2021#include "../shared/clapper-shared-utils-private.h"
2122
2223#define GST_CAT_DEFAULT clapper_utils_debug
2324GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT );
2425
2526typedef enum
2627{
27- CLAPPER_UTILS_QUEUE_ALTER_APPEND = 1 ,
28- CLAPPER_UTILS_QUEUE_ALTER_INSERT ,
29- CLAPPER_UTILS_QUEUE_ALTER_REMOVE ,
30- CLAPPER_UTILS_QUEUE_ALTER_CLEAR
31- } ClapperUtilsQueueAlterMethod ;
28+ CLAPPER_UTILS_LIST_ALTER_QUEUE_APPEND = 1 ,
29+ CLAPPER_UTILS_LIST_ALTER_QUEUE_INSERT ,
30+ CLAPPER_UTILS_LIST_ALTER_QUEUE_REMOVE ,
31+ CLAPPER_UTILS_LIST_ALTER_QUEUE_CLEAR ,
32+ CLAPPER_UTILS_LIST_ALTER_TIMELINE_INSERT ,
33+ CLAPPER_UTILS_LIST_ALTER_TIMELINE_REMOVE
34+ } ClapperUtilsListAlterMethod ;
3235
3336typedef struct
3437{
35- ClapperQueue * queue ;
36- ClapperMediaItem * item ;
37- ClapperMediaItem * after_item ;
38- ClapperUtilsQueueAlterMethod method ;
39- } ClapperUtilsQueueAlterData ;
38+ GListModel * list ;
39+ GObject * item ;
40+ GObject * after_item ;
41+ ClapperUtilsListAlterMethod method ;
42+ } ClapperUtilsListAlterData ;
4043
4144typedef struct
4245{
@@ -51,27 +54,26 @@ clapper_utils_initialize (void)
5154 "Clapper Utilities" );
5255}
5356
54- static ClapperUtilsQueueAlterData *
55- clapper_utils_queue_alter_data_new (ClapperQueue * queue ,
56- ClapperMediaItem * item , ClapperMediaItem * after_item ,
57- ClapperUtilsQueueAlterMethod method )
57+ static ClapperUtilsListAlterData *
58+ clapper_utils_list_alter_data_new (GListModel * list , GObject * item ,
59+ GObject * after_item , ClapperUtilsListAlterMethod method )
5860{
59- ClapperUtilsQueueAlterData * data = g_new (ClapperUtilsQueueAlterData , 1 );
61+ ClapperUtilsListAlterData * data = g_new (ClapperUtilsListAlterData , 1 );
6062
61- data -> queue = queue ;
63+ data -> list = list ;
6264 data -> item = item ;
6365 data -> after_item = after_item ;
6466 data -> method = method ;
6567
66- GST_TRACE ("Created queue alter data: %p" , data );
68+ GST_TRACE ("Created list alter data: %p" , data );
6769
6870 return data ;
6971}
7072
7173static void
72- clapper_utils_queue_alter_data_free ( ClapperUtilsQueueAlterData * data )
74+ clapper_utils_list_alter_data_free ( ClapperUtilsListAlterData * data )
7375{
74- GST_TRACE ("Freeing queue alter data: %p" , data );
76+ GST_TRACE ("Freeing list alter data: %p" , data );
7577
7678 g_free (data );
7779}
@@ -98,35 +100,48 @@ clapper_utils_prop_notify_data_free (ClapperUtilsPropNotifyData *data)
98100}
99101
100102static gpointer
101- clapper_utils_queue_alter_on_main ( ClapperUtilsQueueAlterData * data )
103+ clapper_utils_list_alter_on_main ( ClapperUtilsListAlterData * data )
102104{
103105 GST_DEBUG ("Queue alter invoked" );
104106
105107 switch (data -> method ) {
106- case CLAPPER_UTILS_QUEUE_ALTER_APPEND :
107- clapper_queue_add_item (data -> queue , data -> item );
108+ case CLAPPER_UTILS_LIST_ALTER_QUEUE_APPEND :
109+ clapper_queue_add_item (CLAPPER_QUEUE_CAST (data -> list ),
110+ CLAPPER_MEDIA_ITEM_CAST (data -> item ));
108111 break ;
109- case CLAPPER_UTILS_QUEUE_ALTER_INSERT :{
112+ case CLAPPER_UTILS_LIST_ALTER_QUEUE_INSERT :{
110113 guint index ;
111114
112115 /* If we have "after_item" then we need to insert after it, otherwise prepend */
113116 if (data -> after_item ) {
114- if (clapper_queue_find_item (data -> queue , data -> after_item , & index ))
117+ if (clapper_queue_find_item (CLAPPER_QUEUE_CAST (data -> list ),
118+ CLAPPER_MEDIA_ITEM_CAST (data -> after_item ), & index )) {
115119 index ++ ;
116- else // If not found, just append at the end
117- index = -1 ;
120+ } else {
121+ index = -1 ; // if not found, just append at the end
122+ }
118123 } else {
119124 index = 0 ;
120125 }
121126
122- clapper_queue_insert_item (data -> queue , data -> item , index );
127+ clapper_queue_insert_item (CLAPPER_QUEUE_CAST (data -> list ),
128+ CLAPPER_MEDIA_ITEM_CAST (data -> item ), index );
123129 break ;
124130 }
125- case CLAPPER_UTILS_QUEUE_ALTER_REMOVE :
126- clapper_queue_remove_item (data -> queue , data -> item );
131+ case CLAPPER_UTILS_LIST_ALTER_QUEUE_REMOVE :
132+ clapper_queue_remove_item (CLAPPER_QUEUE_CAST (data -> list ),
133+ CLAPPER_MEDIA_ITEM_CAST (data -> item ));
127134 break ;
128- case CLAPPER_UTILS_QUEUE_ALTER_CLEAR :
129- clapper_queue_clear (data -> queue );
135+ case CLAPPER_UTILS_LIST_ALTER_QUEUE_CLEAR :
136+ clapper_queue_clear (CLAPPER_QUEUE_CAST (data -> list ));
137+ break ;
138+ case CLAPPER_UTILS_LIST_ALTER_TIMELINE_INSERT :
139+ clapper_timeline_insert_marker_internal (CLAPPER_TIMELINE_CAST (data -> list ),
140+ CLAPPER_MARKER_CAST (data -> item ));
141+ break ;
142+ case CLAPPER_UTILS_LIST_ALTER_TIMELINE_REMOVE :
143+ clapper_timeline_remove_marker_internal (CLAPPER_TIMELINE_CAST (data -> list ),
144+ CLAPPER_MARKER_CAST (data -> item ));
130145 break ;
131146 default :
132147 g_assert_not_reached ();
@@ -146,48 +161,70 @@ clapper_utils_prop_notify_on_main (ClapperUtilsPropNotifyData *data)
146161}
147162
148163static inline void
149- clapper_utils_queue_alter_invoke_on_main_sync_take ( ClapperUtilsQueueAlterData * data )
164+ clapper_utils_list_alter_invoke_on_main_sync_take ( ClapperUtilsListAlterData * data )
150165{
151166 GST_DEBUG ("Invoking queue alter on main..." );
152167
153168 clapper_shared_utils_context_invoke_sync_full (g_main_context_default (),
154- (GThreadFunc ) clapper_utils_queue_alter_on_main , data ,
155- (GDestroyNotify ) clapper_utils_queue_alter_data_free );
169+ (GThreadFunc ) clapper_utils_list_alter_on_main , data ,
170+ (GDestroyNotify ) clapper_utils_list_alter_data_free );
156171
157172 GST_DEBUG ("Queue alter invoke finished" );
158173}
159174
160175void
161176clapper_utils_queue_append_on_main_sync (ClapperQueue * queue , ClapperMediaItem * item )
162177{
163- ClapperUtilsQueueAlterData * data = clapper_utils_queue_alter_data_new (queue ,
164- item , NULL , CLAPPER_UTILS_QUEUE_ALTER_APPEND );
165- clapper_utils_queue_alter_invoke_on_main_sync_take (data );
178+ ClapperUtilsListAlterData * data = clapper_utils_list_alter_data_new (
179+ (GListModel * ) queue , (GObject * ) item , NULL ,
180+ CLAPPER_UTILS_LIST_ALTER_QUEUE_APPEND );
181+ clapper_utils_list_alter_invoke_on_main_sync_take (data );
166182}
167183
168184void
169185clapper_utils_queue_insert_on_main_sync (ClapperQueue * queue ,
170186 ClapperMediaItem * item , ClapperMediaItem * after_item )
171187{
172- ClapperUtilsQueueAlterData * data = clapper_utils_queue_alter_data_new (queue ,
173- item , after_item , CLAPPER_UTILS_QUEUE_ALTER_INSERT );
174- clapper_utils_queue_alter_invoke_on_main_sync_take (data );
188+ ClapperUtilsListAlterData * data = clapper_utils_list_alter_data_new (
189+ (GListModel * ) queue , (GObject * ) item , (GObject * ) after_item ,
190+ CLAPPER_UTILS_LIST_ALTER_QUEUE_INSERT );
191+ clapper_utils_list_alter_invoke_on_main_sync_take (data );
175192}
176193
177194void
178195clapper_utils_queue_remove_on_main_sync (ClapperQueue * queue , ClapperMediaItem * item )
179196{
180- ClapperUtilsQueueAlterData * data = clapper_utils_queue_alter_data_new (queue ,
181- item , NULL , CLAPPER_UTILS_QUEUE_ALTER_REMOVE );
182- clapper_utils_queue_alter_invoke_on_main_sync_take (data );
197+ ClapperUtilsListAlterData * data = clapper_utils_list_alter_data_new (
198+ (GListModel * ) queue , (GObject * ) item , NULL ,
199+ CLAPPER_UTILS_LIST_ALTER_QUEUE_REMOVE );
200+ clapper_utils_list_alter_invoke_on_main_sync_take (data );
183201}
184202
185203void
186204clapper_utils_queue_clear_on_main_sync (ClapperQueue * queue )
187205{
188- ClapperUtilsQueueAlterData * data = clapper_utils_queue_alter_data_new (queue ,
189- NULL , NULL , CLAPPER_UTILS_QUEUE_ALTER_CLEAR );
190- clapper_utils_queue_alter_invoke_on_main_sync_take (data );
206+ ClapperUtilsListAlterData * data = clapper_utils_list_alter_data_new (
207+ (GListModel * ) queue , NULL , NULL ,
208+ CLAPPER_UTILS_LIST_ALTER_QUEUE_CLEAR );
209+ clapper_utils_list_alter_invoke_on_main_sync_take (data );
210+ }
211+
212+ void
213+ clapper_utils_timeline_insert_on_main_sync (ClapperTimeline * timeline , ClapperMarker * marker )
214+ {
215+ ClapperUtilsListAlterData * data = clapper_utils_list_alter_data_new (
216+ (GListModel * ) timeline , (GObject * ) marker , NULL ,
217+ CLAPPER_UTILS_LIST_ALTER_TIMELINE_INSERT );
218+ clapper_utils_list_alter_invoke_on_main_sync_take (data );
219+ }
220+
221+ void
222+ clapper_utils_timeline_remove_on_main_sync (ClapperTimeline * timeline , ClapperMarker * marker )
223+ {
224+ ClapperUtilsListAlterData * data = clapper_utils_list_alter_data_new (
225+ (GListModel * ) timeline , (GObject * ) marker , NULL ,
226+ CLAPPER_UTILS_LIST_ALTER_TIMELINE_REMOVE );
227+ clapper_utils_list_alter_invoke_on_main_sync_take (data );
191228}
192229
193230void
0 commit comments