3030#include "clapper-player-private.h"
3131#include "clapper-reactables-manager-private.h"
3232#include "clapper-features-manager-private.h"
33+ #include "clapper-utils-private.h"
3334
3435#define GST_CAT_DEFAULT clapper_timeline_debug
3536GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT );
@@ -187,25 +188,12 @@ _take_marker_unlocked (ClapperTimeline *self, ClapperMarker *marker)
187188 return g_sequence_iter_get_position (iter );
188189}
189190
190- /**
191- * clapper_timeline_insert_marker:
192- * @timeline: a #ClapperTimeline
193- * @marker: a #ClapperMarker
194- *
195- * Insert the #ClapperMarker into @timeline.
196- *
197- * Returns: %TRUE if inserted, %FALSE if marker was
198- * already inserted into timeline.
199- */
200- gboolean
201- clapper_timeline_insert_marker (ClapperTimeline * self , ClapperMarker * marker )
191+ void
192+ clapper_timeline_insert_marker_internal (ClapperTimeline * self , ClapperMarker * marker )
202193{
203194 gboolean success ;
204195 gint position = 0 ;
205196
206- g_return_val_if_fail (CLAPPER_IS_TIMELINE (self ), FALSE);
207- g_return_val_if_fail (CLAPPER_IS_MARKER (marker ), FALSE);
208-
209197 GST_OBJECT_LOCK (self );
210198
211199 if ((success = !g_sequence_lookup (self -> markers_seq , marker ,
@@ -220,30 +208,34 @@ clapper_timeline_insert_marker (ClapperTimeline *self, ClapperMarker *marker)
220208
221209 clapper_timeline_post_item_updated (self );
222210 }
223-
224- return success ;
225211}
226212
227213/**
228- * clapper_timeline_remove_marker :
214+ * clapper_timeline_insert_marker :
229215 * @timeline: a #ClapperTimeline
230216 * @marker: a #ClapperMarker
231217 *
232- * Removes #ClapperMarker from the timeline.
233- *
234- * If marker was not in the @timeline, this function will do nothing,
235- * so it is safe to call if unsure.
218+ * Insert the #ClapperMarker into @timeline.
236219 */
237220void
238- clapper_timeline_remove_marker (ClapperTimeline * self , ClapperMarker * marker )
221+ clapper_timeline_insert_marker (ClapperTimeline * self , ClapperMarker * marker )
222+ {
223+ g_return_if_fail (CLAPPER_IS_TIMELINE (self ));
224+ g_return_if_fail (CLAPPER_IS_MARKER (marker ));
225+
226+ if (g_main_context_is_owner (g_main_context_default ()))
227+ clapper_timeline_insert_marker_internal (self , marker );
228+ else
229+ clapper_utils_timeline_insert_on_main_sync (self , marker );
230+ }
231+
232+ void
233+ clapper_timeline_remove_marker_internal (ClapperTimeline * self , ClapperMarker * marker )
239234{
240235 GSequenceIter * iter ;
241236 gint position = 0 ;
242237 gboolean success = FALSE;
243238
244- g_return_if_fail (CLAPPER_IS_TIMELINE (self ));
245- g_return_if_fail (CLAPPER_IS_MARKER (marker ));
246-
247239 GST_OBJECT_LOCK (self );
248240
249241 if ((iter = g_sequence_lookup (self -> markers_seq , marker ,
@@ -264,6 +256,25 @@ clapper_timeline_remove_marker (ClapperTimeline *self, ClapperMarker *marker)
264256 }
265257}
266258
259+ /**
260+ * clapper_timeline_remove_marker:
261+ * @timeline: a #ClapperTimeline
262+ * @marker: a #ClapperMarker
263+ *
264+ * Removes #ClapperMarker from the timeline if present.
265+ */
266+ void
267+ clapper_timeline_remove_marker (ClapperTimeline * self , ClapperMarker * marker )
268+ {
269+ g_return_if_fail (CLAPPER_IS_TIMELINE (self ));
270+ g_return_if_fail (CLAPPER_IS_MARKER (marker ));
271+
272+ if (g_main_context_is_owner (g_main_context_default ()))
273+ clapper_timeline_remove_marker_internal (self , marker );
274+ else
275+ clapper_utils_timeline_remove_on_main_sync (self , marker );
276+ }
277+
267278/**
268279 * clapper_timeline_get_marker:
269280 * @timeline: a #ClapperTimeline
0 commit comments