Index: gst/gstbin.c
===================================================================
RCS file: /cvs/gstreamer/gstreamer/gst/gstbin.c,v
retrieving revision 1.324
diff -u -r1.324 gstbin.c
--- gst/gstbin.c	27 Jan 2006 01:48:37 -0000	1.324
+++ gst/gstbin.c	31 Jan 2006 11:25:55 -0000
@@ -348,7 +348,7 @@
   GST_DEBUG ("creating bin thread pool");
   err = NULL;
   klass->pool =
-      g_thread_pool_new ((GFunc) gst_bin_recalc_func, NULL, 1, FALSE, &err);
+      g_thread_pool_new ((GFunc) gst_bin_recalc_func, NULL, -1, FALSE, &err);
   if (err != NULL) {
     g_critical ("could alloc threadpool %s", err->message);
   }
@@ -2005,8 +2005,13 @@
 
       klass = GST_BIN_GET_CLASS (bin);
       gst_object_ref (bin);
-      GST_DEBUG_OBJECT (bin, "pushing recalc on thread pool");
-      g_thread_pool_push (klass->pool, bin, NULL);
+      if (!bin->polling) {
+        GST_DEBUG_OBJECT (bin, "pushing recalc on thread pool");
+        g_thread_pool_push (klass->pool, bin, NULL);
+      }
+      else {
+        GST_DEBUG_OBJECT (bin, "state recalc already in progress, not pushing new recalc");
+      }
       GST_OBJECT_UNLOCK (bin);
       break;
 
