gst/gstelement.c: Only change the state cookie if a different state was set on the...
authorWim Taymans <wim.taymans@gmail.com>
Tue, 6 Nov 2007 12:28:17 +0000 (12:28 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 6 Nov 2007 12:28:17 +0000 (12:28 +0000)
Original commit message from CVS:
* gst/gstelement.c: (gst_element_set_state_func):
Only change the state cookie if a different state was set on the
element. See #492729.

ChangeLog
gst/gstelement.c

index 6fcf376..9aa2e26 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-06  Wim Taymans  <wim.taymans@gmail.com>
+
+       * gst/gstelement.c: (gst_element_set_state_func):
+       Only change the state cookie if a different state was set on the
+       element. See #492729.
+
 2007-11-06  Tim-Philipp Müller  <tim at centricular dot net>
 
        * gst/gstvalue.c:
index 6fcd468..9e97fde 100644 (file)
@@ -2300,12 +2300,15 @@ gst_element_set_state_func (GstElement * element, GstState state)
   current = GST_STATE (element);
   next = GST_STATE_NEXT (element);
   old_pending = GST_STATE_PENDING (element);
-  /* increment state cookie so that we can track each state change */
-  element->state_cookie++;
 
   /* this is the (new) state we should go to. TARGET is the last state we set on
    * the element. */
-  GST_STATE_TARGET (element) = state;
+  if (state != GST_STATE_TARGET (element)) {
+    GST_STATE_TARGET (element) = state;
+    /* increment state cookie so that we can track each state change. We only do
+     * this if this is actually a new state change. */
+    element->state_cookie++;
+  }
   GST_STATE_PENDING (element) = state;
 
   GST_CAT_DEBUG_OBJECT (GST_CAT_STATES, element,