Unlock the pool for all threads leaving it. (#78348)


2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
	for all threads leaving it. (#78348)
diff --git a/ChangeLog b/ChangeLog
index 6c0ddfc..b953800 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 6c0ddfc..b953800 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12
index 6c0ddfc..b953800 100644
--- a/ChangeLog.pre-2-12
+++ b/ChangeLog.pre-2-12
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 6c0ddfc..b953800 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 6c0ddfc..b953800 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 6c0ddfc..b953800 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 6c0ddfc..b953800 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,8 @@
+2002-04-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+	* glib/gthreadpool.c (g_thread_pool_thread_proxy): Unlock the pool
+	for all threads leaving it. (#78348)
+
 2002-04-11  Matthias Clasen  <maclas@gmx.de>
 
 	* tests/patterntest.c: Remove manual UTF-8 -> Latin1 conversion for
diff --git a/glib/gthreadpool.c b/glib/gthreadpool.c
index 020a119..25a9cd0 100644
--- a/glib/gthreadpool.c
+++ b/glib/gthreadpool.c
@@ -134,10 +134,9 @@
 	  watcher = TRUE;
 	}
 
-      
       if (goto_global_pool)
 	{
-	  pool->num_threads--; 
+	  pool->num_threads--;
 
 	  if (!pool->running && !pool->waiting)
 	    {
@@ -146,9 +145,11 @@
 		  g_async_queue_unlock (pool->queue);
 		  g_thread_pool_free_internal (pool);
 		}		
-	      else if (len == - pool->num_threads)
+	      else 
 		{
-		  g_thread_pool_wakeup_and_stop_all (pool);
+		  if (len == - pool->num_threads)
+		    g_thread_pool_wakeup_and_stop_all (pool);
+
 		  g_async_queue_unlock (pool->queue);
 		}
 	    }