diff --git a/ChangeLog b/ChangeLog index 20cf5d547c..a2d863ead5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-10-17 Thomas Vander Stichele + + * gst/gstcaps.c: (gst_caps_intersect): + fix signedness issues in a (hopefully) correct way + * gst/gstelement.c: (gst_element_pads_activate): + some debugging + * gst/gstobject.c: (gst_object_set_parent): + some debugging + 2005-10-17 Julien MOUTTE * gst/gstvalue.h: Fix prototypes. diff --git a/gst/gstcaps.c b/gst/gstcaps.c index 3c29256e90..f1765e45e9 100644 --- a/gst/gstcaps.c +++ b/gst/gstcaps.c @@ -955,7 +955,8 @@ gst_caps_structure_union (const GstStructure * struct1, GstCaps * gst_caps_intersect (const GstCaps * caps1, const GstCaps * caps2) { - gint64 i, j, k; /* indexes can be up to 2 * sizeof (guint) */ + guint64 i; /* index can be up to 2 * G_MAX_UINT */ + guint j, k; GstStructure *struct1; GstStructure *struct2; @@ -1000,7 +1001,7 @@ gst_caps_intersect (const GstCaps * caps1, const GstCaps * caps2) /* now run the diagonal line, end condition is the left or bottom * border */ - while (k < caps2->structs->len && j >= 0) { + while (k < caps2->structs->len) { struct1 = gst_caps_get_structure (caps1, j); struct2 = gst_caps_get_structure (caps2, k); @@ -1009,6 +1010,8 @@ gst_caps_intersect (const GstCaps * caps1, const GstCaps * caps2) gst_caps_append_structure (dest, istruct); /* move down left */ k++; + if (j == 0) + break; /* so we don't roll back to G_MAXUINT */ j--; } } diff --git a/gst/gstelement.c b/gst/gstelement.c index 16d5de119e..2186a9b6c3 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -2157,6 +2157,7 @@ gst_element_pads_activate (GstElement * element, gboolean active) GstIterator *iter; gboolean fold_ok; + GST_DEBUG_OBJECT (element, "pads_activate with active %d", active); /* no need to unset this later, it's just a boolean */ g_value_init (&ret, G_TYPE_BOOLEAN); g_value_set_boolean (&ret, TRUE); @@ -2165,16 +2166,21 @@ gst_element_pads_activate (GstElement * element, gboolean active) fold_ok = iterator_fold_with_resync (iter, (GstIteratorFoldFunction) activate_pads, &ret, &active); gst_iterator_free (iter); - if (!fold_ok || !g_value_get_boolean (&ret)) + if (!fold_ok || !g_value_get_boolean (&ret)) { + GST_DEBUG_OBJECT (element, "pads_activate failed"); return FALSE; + } iter = gst_element_iterate_sink_pads (element); fold_ok = iterator_fold_with_resync (iter, (GstIteratorFoldFunction) activate_pads, &ret, &active); gst_iterator_free (iter); - if (!fold_ok || !g_value_get_boolean (&ret)) + if (!fold_ok || !g_value_get_boolean (&ret)) { + GST_DEBUG_OBJECT (element, "pads_activate failed"); return FALSE; + } + GST_DEBUG_OBJECT (element, "pads_activate successful"); return TRUE; } diff --git a/gst/gstobject.c b/gst/gstobject.c index 4f594e0b2e..c771f6c1c9 100644 --- a/gst/gstobject.c +++ b/gst/gstobject.c @@ -871,6 +871,7 @@ gst_object_set_parent (GstObject * object, GstObject * parent) * in the floating case. */ object->parent = parent; if (G_LIKELY (GST_OBJECT_IS_FLOATING (object))) { + GST_CAT_LOG_OBJECT (GST_CAT_REFCOUNTING, object, "unsetting floating flag"); GST_OBJECT_FLAG_UNSET (object, GST_OBJECT_FLOATING); GST_UNLOCK (object); } else {