[totem] backend: Implement has_{next,previous}_track



commit 7841b1c511af57aa376f253c07f0da82e853b101
Author: Bastien Nocera <hadess hadess net>
Date:   Fri Jul 13 20:45:44 2012 +0100

    backend: Implement has_{next,previous}_track
    
    https://bugzilla.gnome.org/show_bug.cgi?id=515109

 src/backend/bacon-video-widget.c |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)
---
diff --git a/src/backend/bacon-video-widget.c b/src/backend/bacon-video-widget.c
index 17bd354..364b64c 100644
--- a/src/backend/bacon-video-widget.c
+++ b/src/backend/bacon-video-widget.c
@@ -2855,8 +2855,15 @@ bacon_video_widget_set_subtitle (BaconVideoWidget * bvw, int subtitle)
 gboolean
 bacon_video_widget_has_next_track (BaconVideoWidget *bvw)
 {
-  //FIXME
-  return TRUE;
+  g_return_val_if_fail (BACON_IS_VIDEO_WIDGET (bvw), FALSE);
+
+  if (bvw->priv->mrl == NULL)
+    return FALSE;
+
+  if (g_str_has_prefix (bvw->priv->mrl, "dvd:/"))
+    return TRUE;
+
+  return FALSE;
 }
 
 /**
@@ -2871,8 +2878,22 @@ bacon_video_widget_has_next_track (BaconVideoWidget *bvw)
 gboolean
 bacon_video_widget_has_previous_track (BaconVideoWidget *bvw)
 {
-  //FIXME
-  return TRUE;
+  GstFormat fmt;
+  gint64 val;
+
+  g_return_val_if_fail (BACON_IS_VIDEO_WIDGET (bvw), FALSE);
+
+  if (bvw->priv->mrl == NULL)
+    return FALSE;
+
+  if (g_str_has_prefix (bvw->priv->mrl, "dvd:/"))
+    return TRUE;
+
+  fmt = gst_format_get_by_nick ("chapter");
+  if (gst_element_query_position (bvw->priv->play, &fmt, &val))
+    return (val > 0);
+
+  return FALSE;
 }
 
 static GList *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]