gst/autoplug/gstspideridentity.c: break infinite loop by just returning instead of...
authorBenjamin Otte <otte@gnome.org>
Thu, 15 Jan 2004 01:35:41 +0000 (01:35 +0000)
committerBenjamin Otte <otte@gnome.org>
Thu, 15 Jan 2004 01:35:41 +0000 (01:35 +0000)
Original commit message from CVS:
2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* gst/autoplug/gstspideridentity.c:
(gst_spider_identity_sink_loop_type_finding):
break infinite loop by just returning instead of looping
* gst/gstclock.c: (gst_clock_class_init), (gst_clock_set_property):
set event time difference correctly. Set it to 1 second instead
of 100ms to be more tolerant
* gst/gstelement.c: (gst_element_set_time):
add debugging output

ChangeLog
gst/autoplug/gstspideridentity.c
gst/gstclock.c
gst/gstelement.c

index 584f5b8..6d47cb1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/autoplug/gstspideridentity.c:
+       (gst_spider_identity_sink_loop_type_finding):
+         break infinite loop by just returning instead of looping
+       * gst/gstclock.c: (gst_clock_class_init), (gst_clock_set_property):
+         set event time difference correctly. Set it to 1 second instead
+         of 100ms to be more tolerant
+       * gst/gstelement.c: (gst_element_set_time):
+         add debugging output
+
 2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
 
        * gst/gstqueue.c: (gst_queue_getcaps), (gst_queue_link):
index cbc5aaa..71e5ee3 100644 (file)
@@ -467,9 +467,9 @@ gst_spider_identity_sink_loop_type_finding (GstSpiderIdentity *ident)
   g_return_if_fail (GST_IS_SPIDER_IDENTITY (ident));
 
   data = gst_pad_pull (ident->sink);
-  while (!GST_IS_BUFFER (data)) {
+  if (!GST_IS_BUFFER (data)) {
     gst_spider_identity_chain (ident->sink, GST_BUFFER (data));
-    data = gst_pad_pull (ident->sink);
+    return;
   }
   
   find.buffer = GST_BUFFER (data);
index 3901262..f8dbb20 100644 (file)
@@ -34,7 +34,7 @@
 static GstAllocTrace *_gst_clock_entry_trace;
 #endif
 
-#define DEFAULT_EVENT_DIFF     (GST_SECOND / 10)
+#define DEFAULT_EVENT_DIFF     (GST_SECOND)
 #define DEFAULT_MAX_DIFF       (2 * GST_SECOND)
 
 enum {
@@ -386,10 +386,10 @@ gst_clock_class_init (GstClockClass *klass)
   g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_DIFF,
     g_param_spec_int64 ("max-diff", "Max diff", "The maximum amount of time to wait in nanoseconds",
                         0, G_MAXINT64, DEFAULT_MAX_DIFF, G_PARAM_READWRITE));
-  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_DIFF,
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_EVENT_DIFF,
     g_param_spec_uint64 ("event-diff", "event diff", 
        "The amount of time that may elapse until 2 events are treated as happening at different times",
-                        0, G_MAXUINT64, DEFAULT_EVENT_DIFF, G_PARAM_READWRITE));
+                        0, G_MAXUINT64, DEFAULT_EVENT_DIFF, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 }
 
 static void
@@ -702,7 +702,7 @@ gst_clock_set_property (GObject *object, guint prop_id,
       break;
     case ARG_EVENT_DIFF:
       clock->max_event_diff = g_value_get_uint64 (value);
-      g_object_notify (object, "max-event-diff");
+      g_object_notify (object, "event-diff");
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
index 24f1b67..3d059bc 100644 (file)
@@ -878,6 +878,8 @@ gst_element_wait (GstElement *element, GstClockTime timestamp)
 void
 gst_element_set_time (GstElement *element, GstClockTime time)
 {
+  GstClockTime event_time;
+  
   g_return_if_fail (GST_IS_ELEMENT (element));
   g_return_if_fail (GST_IS_CLOCK (element->clock));
   g_return_if_fail (element->current_state >= GST_STATE_PAUSED);
@@ -887,7 +889,9 @@ gst_element_set_time (GstElement *element, GstClockTime time)
       element->base_time = time;
       break;
     case GST_STATE_PLAYING:
-      element->base_time = gst_clock_get_time (element->clock) - time;
+      event_time = gst_clock_get_event_time (element->clock);
+      GST_LOG_OBJECT (element, "clock time %llu: setting element time to %llu", event_time, time);
+      element->base_time = event_time - time;
       break;
     default:
       g_assert_not_reached ();