pixel-processor: fix GMutex related deprecation

This commit is contained in:
Michael Muré
2012-05-06 21:03:02 +09:00
parent 99d5874b65
commit c12a65d277

View File

@ -40,7 +40,7 @@
static GThreadPool *pool = NULL; static GThreadPool *pool = NULL;
static GMutex *pool_mutex = NULL; static GMutex pool_mutex;
static GCond *pool_cond = NULL; static GCond *pool_cond = NULL;
@ -68,7 +68,7 @@ struct _PixelProcessor
gpointer data; gpointer data;
#ifdef ENABLE_MP #ifdef ENABLE_MP
GMutex *mutex; GMutex mutex;
gint threads; gint threads;
gboolean first; gboolean first;
#endif #endif
@ -88,7 +88,7 @@ do_parallel_regions (PixelProcessor *processor)
PixelRegion tr[4]; PixelRegion tr[4];
gint i; gint i;
g_mutex_lock (processor->mutex); g_mutex_lock (&processor->mutex);
/* the first thread getting here must not call pixel_regions_process() */ /* the first thread getting here must not call pixel_regions_process() */
if (! processor->first && processor->PRI) if (! processor->first && processor->PRI)
@ -112,7 +112,7 @@ do_parallel_regions (PixelProcessor *processor)
} }
} }
g_mutex_unlock (processor->mutex); g_mutex_unlock (&processor->mutex);
switch (processor->num_regions) switch (processor->num_regions)
{ {
@ -148,7 +148,7 @@ do_parallel_regions (PixelProcessor *processor)
break; break;
} }
g_mutex_lock (processor->mutex); g_mutex_lock (&processor->mutex);
for (i = 0; i < processor->num_regions; i++) for (i = 0; i < processor->num_regions; i++)
{ {
@ -169,15 +169,15 @@ do_parallel_regions (PixelProcessor *processor)
if (processor->threads == 0) if (processor->threads == 0)
{ {
g_mutex_unlock (processor->mutex); g_mutex_unlock (&processor->mutex);
g_mutex_lock (pool_mutex); g_mutex_lock (&pool_mutex);
g_cond_signal (pool_cond); g_cond_signal (pool_cond);
g_mutex_unlock (pool_mutex); g_mutex_unlock (&pool_mutex);
} }
else else
{ {
g_mutex_unlock (processor->mutex); g_mutex_unlock (&processor->mutex);
} }
} }
#endif #endif
@ -285,9 +285,9 @@ pixel_regions_do_parallel (PixelProcessor *processor,
processor->first = TRUE; processor->first = TRUE;
processor->threads = tasks; processor->threads = tasks;
processor->mutex = g_mutex_new(); g_mutex_init (&processor->mutex);
g_mutex_lock (pool_mutex); g_mutex_lock (&pool_mutex);
while (tasks--) while (tasks--)
{ {
@ -311,11 +311,11 @@ pixel_regions_do_parallel (PixelProcessor *processor,
g_get_current_time (&timeout); g_get_current_time (&timeout);
g_time_val_add (&timeout, PROGRESS_TIMEOUT * 1024); g_time_val_add (&timeout, PROGRESS_TIMEOUT * 1024);
g_cond_timed_wait (pool_cond, pool_mutex, &timeout); g_cond_timed_wait (pool_cond, &pool_mutex, &timeout);
g_mutex_lock (processor->mutex); g_mutex_lock (&processor->mutex);
progress = processor->progress; progress = processor->progress;
g_mutex_unlock (processor->mutex); g_mutex_unlock (&processor->mutex);
progress_func (progress_data, progress_func (progress_data,
(gdouble) progress / (gdouble) pixels); (gdouble) progress / (gdouble) pixels);
@ -324,12 +324,10 @@ pixel_regions_do_parallel (PixelProcessor *processor,
else else
{ {
while (processor->threads != 0) while (processor->threads != 0)
g_cond_wait (pool_cond, pool_mutex); g_cond_wait (pool_cond, &pool_mutex);
} }
g_mutex_unlock (pool_mutex); g_mutex_unlock (&pool_mutex);
g_mutex_free (processor->mutex);
} }
else else
#endif #endif
@ -428,9 +426,6 @@ pixel_processor_set_num_threads (gint num_threads)
g_cond_free (pool_cond); g_cond_free (pool_cond);
pool_cond = NULL; pool_cond = NULL;
g_mutex_free (pool_mutex);
pool_mutex = NULL;
} }
} }
else else
@ -446,7 +441,7 @@ pixel_processor_set_num_threads (gint num_threads)
pool = g_thread_pool_new ((GFunc) do_parallel_regions, NULL, pool = g_thread_pool_new ((GFunc) do_parallel_regions, NULL,
num_threads, TRUE, &error); num_threads, TRUE, &error);
pool_mutex = g_mutex_new (); g_mutex_init (&pool_mutex);
pool_cond = g_cond_new (); pool_cond = g_cond_new ();
} }