[Xfce4-commits] <thunar:master> Use GArray instead of GValueArray and new mutex API.

Nick Schermer noreply at xfce.org
Thu Nov 1 19:58:04 CET 2012


Updating branch refs/heads/master
         to 6e4f1c2dd65eeb88776673aabb8c73f86eaad358 (commit)
       from 731f6f73c41697b2eb82bd9082e2d12a5ad4d227 (commit)

commit 6e4f1c2dd65eeb88776673aabb8c73f86eaad358
Author: Nick Schermer <nick at xfce.org>
Date:   Thu Nov 1 19:51:06 2012 +0100

    Use GArray instead of GValueArray and new mutex API.
    
    GValueArray is deprecated, so use GArray with GValue's
    instead. Also use new mutex api.

 thunar/thunar-io-jobs.c         |  116 +++++++++++++++++++-------------------
 thunar/thunar-misc-jobs.c       |   10 ++--
 thunar/thunar-simple-job.c      |   19 ++++---
 thunar/thunar-simple-job.h      |   10 ++--
 thunar/thunar-standard-view.c   |   12 ++--
 thunar/thunar-thumbnail-cache.c |   56 ++++++++++++------
 thunar/thunar-thumbnailer.c     |   60 +++++++++++++-------
 thunar/thunar-tree-view.c       |    6 +-
 8 files changed, 165 insertions(+), 124 deletions(-)

diff --git a/thunar/thunar-io-jobs.c b/thunar/thunar-io-jobs.c
index d5350f7..a4b106c 100644
--- a/thunar/thunar-io-jobs.c
+++ b/thunar/thunar-io-jobs.c
@@ -84,9 +84,9 @@ _tij_collect_nofollow (ThunarJob *job,
 
 
 static gboolean
-_thunar_io_jobs_create (ThunarJob   *job,
-                        GValueArray *param_values,
-                        GError     **error)
+_thunar_io_jobs_create (ThunarJob  *job,
+                        GArray     *param_values,
+                        GError    **error)
 {
   GFileOutputStream *stream;
   ThunarJobResponse  response = THUNAR_JOB_RESPONSE_CANCEL;
@@ -101,12 +101,12 @@ _thunar_io_jobs_create (ThunarJob   *job,
   
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 2, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 2, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
   /* get the file list */
-  file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
-  template_file = g_value_get_object (g_value_array_get_nth (param_values, 1));
+  file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
+  template_file = g_value_get_object (&g_array_index (param_values, GValue, 1));
 
   /* we know the total amount of files to be processed */
   thunar_job_set_total_files (THUNAR_JOB (job), file_list);
@@ -261,9 +261,9 @@ thunar_io_jobs_create_files (GList *file_list,
 
 
 static gboolean
-_thunar_io_jobs_mkdir (ThunarJob   *job,
-                       GValueArray *param_values,
-                       GError     **error)
+_thunar_io_jobs_mkdir (ThunarJob  *job,
+                       GArray     *param_values,
+                       GError    **error)
 {
   ThunarJobResponse response;
   GFileInfo        *info;
@@ -275,10 +275,10 @@ _thunar_io_jobs_mkdir (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 1, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 1, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
+  file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
 
   /* we know the total list of files to process */
   thunar_job_set_total_files (THUNAR_JOB (job), file_list);
@@ -397,9 +397,9 @@ thunar_io_jobs_make_directories (GList *file_list)
 
 
 static gboolean
-_thunar_io_jobs_unlink (ThunarJob   *job,
-                        GValueArray *param_values,
-                        GError     **error)
+_thunar_io_jobs_unlink (ThunarJob  *job,
+                        GArray     *param_values,
+                        GError    **error)
 {
   ThunarThumbnailCache *thumbnail_cache;
   ThunarApplication    *application;
@@ -413,11 +413,11 @@ _thunar_io_jobs_unlink (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 1, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 1, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
   /* get the file list */
-  file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
+  file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
 
   /* tell the user that we're preparing to unlink the files */
   exo_job_info_message (EXO_JOB (job), _("Preparing..."));
@@ -692,9 +692,9 @@ _thunar_io_jobs_link_file (ThunarJob *job,
 
 
 static gboolean
-_thunar_io_jobs_link (ThunarJob   *job,
-                      GValueArray *param_values,
-                      GError     **error)
+_thunar_io_jobs_link (ThunarJob  *job,
+                      GArray     *param_values,
+                      GError    **error)
 {
   ThunarThumbnailCache *thumbnail_cache;
   ThunarApplication    *application;
@@ -708,11 +708,11 @@ _thunar_io_jobs_link (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 2, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 2, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  source_file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
-  target_file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 1));
+  source_file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
+  target_file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 1));
 
   /* we know the total list of paths to process */
   thunar_job_set_total_files (THUNAR_JOB (job), source_file_list);
@@ -790,9 +790,9 @@ thunar_io_jobs_link_files (GList *source_file_list,
 
 
 static gboolean
-_thunar_io_jobs_trash (ThunarJob   *job,
-                       GValueArray *param_values,
-                       GError     **error)
+_thunar_io_jobs_trash (ThunarJob  *job,
+                       GArray     *param_values,
+                       GError    **error)
 {
   ThunarThumbnailCache *thumbnail_cache;
   ThunarApplication    *application;
@@ -802,10 +802,10 @@ _thunar_io_jobs_trash (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 1, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 1, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
+  file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
 
   if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
     return FALSE;
@@ -872,9 +872,9 @@ thunar_io_jobs_restore_files (GList *source_file_list,
 
 
 static gboolean
-_thunar_io_jobs_chown (ThunarJob   *job,
-                       GValueArray *param_values,
-                       GError     **error)
+_thunar_io_jobs_chown (ThunarJob  *job,
+                       GArray     *param_values,
+                       GError    **error)
 {
   ThunarJobResponse response;
   const gchar      *message;
@@ -888,13 +888,13 @@ _thunar_io_jobs_chown (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 4, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 4, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
-  uid = g_value_get_int (g_value_array_get_nth (param_values, 1));
-  gid = g_value_get_int (g_value_array_get_nth (param_values, 2));
-  recursive = g_value_get_boolean (g_value_array_get_nth (param_values, 3));
+  file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
+  uid = g_value_get_int (&g_array_index (param_values, GValue, 1));
+  gid = g_value_get_int (&g_array_index (param_values, GValue, 2));
+  recursive = g_value_get_boolean (&g_array_index (param_values, GValue, 3));
 
   _thunar_assert ((uid >= 0 || gid >= 0) && !(uid >= 0 && gid >= 0));
 
@@ -1009,9 +1009,9 @@ thunar_io_jobs_change_group (GList    *files,
 
 
 static gboolean
-_thunar_io_jobs_chmod (ThunarJob   *job,
-                       GValueArray *param_values,
-                       GError     **error)
+_thunar_io_jobs_chmod (ThunarJob  *job,
+                       GArray     *param_values,
+                       GError    **error)
 {
   ThunarJobResponse response;
   GFileInfo        *info;
@@ -1030,15 +1030,15 @@ _thunar_io_jobs_chmod (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 6, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 6, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  file_list = g_value_get_boxed (g_value_array_get_nth (param_values, 0));
-  dir_mask = g_value_get_flags (g_value_array_get_nth (param_values, 1));
-  dir_mode = g_value_get_flags (g_value_array_get_nth (param_values, 2));
-  file_mask = g_value_get_flags (g_value_array_get_nth (param_values, 3));
-  file_mode = g_value_get_flags (g_value_array_get_nth (param_values, 4));
-  recursive = g_value_get_boolean (g_value_array_get_nth (param_values, 5));
+  file_list = g_value_get_boxed (&g_array_index (param_values, GValue, 0));
+  dir_mask = g_value_get_flags (&g_array_index (param_values, GValue, 1));
+  dir_mode = g_value_get_flags (&g_array_index (param_values, GValue, 2));
+  file_mask = g_value_get_flags (&g_array_index (param_values, GValue, 3));
+  file_mode = g_value_get_flags (&g_array_index (param_values, GValue, 4));
+  recursive = g_value_get_boolean (&g_array_index (param_values, GValue, 5));
 
   /* collect the files for the chown operation */
   if (recursive)
@@ -1166,9 +1166,9 @@ thunar_io_jobs_change_mode (GList         *files,
 
 
 static gboolean
-_thunar_io_jobs_ls (ThunarJob   *job,
-                    GValueArray *param_values,
-                    GError     **error)
+_thunar_io_jobs_ls (ThunarJob  *job,
+                    GArray     *param_values,
+                    GError    **error)
 {
   ThunarFile *file;
   GError     *err = NULL;
@@ -1179,14 +1179,14 @@ _thunar_io_jobs_ls (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 1, FALSE);
+  _thunar_return_val_if_fail (param_values->len == 1, FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
   if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
     return FALSE;
 
   /* determine the directory to list */
-  directory = g_value_get_object (g_value_array_get_nth (param_values, 0));
+  directory = g_value_get_object (&g_array_index (param_values, GValue, 0));
 
   /* make sure the object is valid */
   _thunar_assert (G_IS_FILE (directory));
@@ -1275,9 +1275,9 @@ _thunar_io_jobs_rename_notify (ThunarFile *file)
 
 
 static gboolean
-_thunar_io_jobs_rename (ThunarJob   *job,
-                        GValueArray *param_values,
-                        GError     **error)
+_thunar_io_jobs_rename (ThunarJob  *job,
+                        GArray     *param_values,
+                        GError    **error)
 {
   const gchar *display_name;
   ThunarFile  *file;
@@ -1285,17 +1285,17 @@ _thunar_io_jobs_rename (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (param_values != NULL, FALSE);
-  _thunar_return_val_if_fail (param_values->n_values == 2, FALSE);
-  _thunar_return_val_if_fail (G_VALUE_HOLDS (&param_values->values[0], THUNAR_TYPE_FILE), FALSE);
-  _thunar_return_val_if_fail (G_VALUE_HOLDS_STRING (&param_values->values[1]), FALSE);
+  _thunar_return_val_if_fail (param_values->len == 2, FALSE);
+  _thunar_return_val_if_fail (G_VALUE_HOLDS (&g_array_index (param_values, GValue, 0), THUNAR_TYPE_FILE), FALSE);
+  _thunar_return_val_if_fail (G_VALUE_HOLDS_STRING (&g_array_index (param_values, GValue, 1)), FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
   if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
     return FALSE;
 
   /* determine the file and display name */
-  file = g_value_get_object (g_value_array_get_nth (param_values, 0));
-  display_name = g_value_get_string (g_value_array_get_nth (param_values, 1));
+  file = g_value_get_object (&g_array_index (param_values, GValue, 0));
+  display_name = g_value_get_string (&g_array_index (param_values, GValue, 1));
 
   /* try to rename the file */
   if (thunar_file_rename (file, display_name, exo_job_get_cancellable (EXO_JOB (job)), TRUE, &err))
diff --git a/thunar/thunar-misc-jobs.c b/thunar/thunar-misc-jobs.c
index 7938606..1f1c981 100644
--- a/thunar/thunar-misc-jobs.c
+++ b/thunar/thunar-misc-jobs.c
@@ -33,9 +33,9 @@
 
 
 static gboolean
-_thunar_misc_jobs_load_templates (ThunarJob   *job,
-                                  GValueArray *param_values,
-                                  GError     **error)
+_thunar_misc_jobs_load_templates (ThunarJob  *job,
+                                  GArray     *param_values,
+                                  GError    **error)
 {
   ThunarFile *file;
   GtkWidget  *menu;
@@ -47,9 +47,9 @@ _thunar_misc_jobs_load_templates (ThunarJob   *job,
 
   _thunar_return_val_if_fail (THUNAR_IS_JOB (job), FALSE);
   _thunar_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-  _thunar_return_val_if_fail (param_values != NULL && param_values->n_values == 1, FALSE);
+  _thunar_return_val_if_fail (param_values != NULL && param_values->len == 1, FALSE);
 
-  menu = g_value_get_object (g_value_array_get_nth (param_values, 0));
+  menu = g_value_get_object (&g_array_index (param_values, GValue, 0));
   g_object_set_data (G_OBJECT (job), "menu", menu);
 
   home_dir = thunar_g_file_new_for_home ();
diff --git a/thunar/thunar-simple-job.c b/thunar/thunar-simple-job.c
index e311ba7..3ab3e54 100644
--- a/thunar/thunar-simple-job.c
+++ b/thunar/thunar-simple-job.c
@@ -54,9 +54,10 @@ struct _ThunarSimpleJobClass
 
 struct _ThunarSimpleJob
 {
-  ThunarJob           __parent__;
-  ThunarSimpleJobFunc func;
-  GValueArray        *param_values;
+  ThunarJob __parent__;
+
+  ThunarSimpleJobFunc  func;
+  GArray              *param_values;
 };
 
 
@@ -91,9 +92,12 @@ static void
 thunar_simple_job_finalize (GObject *object)
 {
   ThunarSimpleJob *simple_job = THUNAR_SIMPLE_JOB (object);
+  guint            i;
 
   /* release the param values */
-  g_value_array_free (simple_job->param_values);
+  for (i = 0; i < simple_job->param_values->len; i++)
+    g_value_unset (&g_array_index (simple_job->param_values, GValue, i));
+  g_array_free (simple_job->param_values, TRUE);
 
   (*G_OBJECT_CLASS (thunar_simple_job_parent_class)->finalize) (object);
 }
@@ -176,7 +180,7 @@ thunar_simple_job_launch (ThunarSimpleJobFunc func,
   /* allocate and initialize the simple job */
   simple_job = g_object_new (THUNAR_TYPE_SIMPLE_JOB, NULL);
   simple_job->func = func;
-  simple_job->param_values = g_value_array_new (n_param_values);
+  simple_job->param_values = g_array_sized_new (FALSE, TRUE, sizeof (GValue), n_param_values);
 
   /* collect the parameters */
   va_start (var_args, n_param_values);
@@ -195,8 +199,7 @@ thunar_simple_job_launch (ThunarSimpleJobFunc func,
           g_free (error_message);
         }
 
-      g_value_array_insert (simple_job->param_values, n, &value);
-      g_value_unset (&value);
+      g_array_insert_val (simple_job->param_values, n, value);
     }
   va_end (var_args);
 
@@ -206,7 +209,7 @@ thunar_simple_job_launch (ThunarSimpleJobFunc func,
 
 
 
-GValueArray *
+GArray *
 thunar_simple_job_get_param_values (ThunarSimpleJob *job)
 {
   _thunar_return_val_if_fail (THUNAR_IS_SIMPLE_JOB (job), NULL);
diff --git a/thunar/thunar-simple-job.h b/thunar/thunar-simple-job.h
index bb325d8..336c735 100644
--- a/thunar/thunar-simple-job.h
+++ b/thunar/thunar-simple-job.h
@@ -28,7 +28,7 @@ G_BEGIN_DECLS
 /**
  * ThunarSimpleJobFunc:
  * @job            : a #ThunarJob.
- * @param_values   : a #GValueArray of the #GValue<!---->s passed to 
+ * @param_values   : a #GArray of the #GValue<!---->s passed to 
  *                   thunar_simple_job_launch().
  * @error          : return location for errors.
  *
@@ -37,9 +37,9 @@ G_BEGIN_DECLS
  *
  * Return value: %TRUE on success, %FALSE in case of an error.
  **/
-typedef gboolean (*ThunarSimpleJobFunc) (ThunarJob   *job,
-                                         GValueArray *param_values,
-                                         GError     **error);
+typedef gboolean (*ThunarSimpleJobFunc) (ThunarJob  *job,
+                                         GArray     *param_values,
+                                         GError    **error);
 
 
 typedef struct _ThunarSimpleJobClass ThunarSimpleJobClass;
@@ -57,7 +57,7 @@ GType      thunar_simple_job_get_type           (void) G_GNUC_CONST;
 ThunarJob *thunar_simple_job_launch             (ThunarSimpleJobFunc func,
                                                  guint               n_param_values,
                                                  ...) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-GValueArray *thunar_simple_job_get_param_values (ThunarSimpleJob    *job);
+GArray    *thunar_simple_job_get_param_values   (ThunarSimpleJob    *job);
 
 G_END_DECLS
 
diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index 8576c79..a588dbf 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -2632,15 +2632,15 @@ thunar_standard_view_rename_error (ExoJob             *job,
                                    GError             *error,
                                    ThunarStandardView *standard_view)
 {
-  GValueArray *param_values;
-  ThunarFile  *file;
+  GArray     *param_values;
+  ThunarFile *file;
 
   _thunar_return_if_fail (EXO_IS_JOB (job));
   _thunar_return_if_fail (error != NULL);
   _thunar_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
 
   param_values = thunar_simple_job_get_param_values (THUNAR_SIMPLE_JOB (job));
-  file = g_value_get_object (g_value_array_get_nth (param_values, 0));
+  file = g_value_get_object (&g_array_index (param_values, GValue, 0));
 
   /* display an error message */
   thunar_dialogs_show_error (GTK_WIDGET (standard_view), error,
@@ -2654,14 +2654,14 @@ static void
 thunar_standard_view_rename_finished (ExoJob             *job,
                                       ThunarStandardView *standard_view)
 {
-  GValueArray *param_values;
-  ThunarFile  *file;
+  GArray     *param_values;
+  ThunarFile *file;
 
   _thunar_return_if_fail (EXO_IS_JOB (job));
   _thunar_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
 
   param_values = thunar_simple_job_get_param_values (THUNAR_SIMPLE_JOB (job));
-  file = g_value_get_object (g_value_array_get_nth (param_values, 0));
+  file = g_value_get_object (&g_array_index (param_values, GValue, 0));
 
   /* make sure the file is still visible */
   thunar_view_scroll_to_file (THUNAR_VIEW (standard_view), file, TRUE, FALSE, 0.0f, 0.0f);
diff --git a/thunar/thunar-thumbnail-cache.c b/thunar/thunar-thumbnail-cache.c
index b5f541c..d29b475 100644
--- a/thunar/thunar-thumbnail-cache.c
+++ b/thunar/thunar-thumbnail-cache.c
@@ -36,6 +36,14 @@
 #include <thunar/thunar-private.h>
 #include <thunar/thunar-thumbnail-cache.h>
 
+#if GLIB_CHECK_VERSION (2, 32, 0)
+#define _thumbnail_cache_lock(cache)   g_mutex_lock (&((cache)->lock))
+#define _thumbnail_cache_unlock(cache) g_mutex_unlock (&((cache)->lock))
+#else
+#define _thumbnail_cache_lock(cache)   g_mutex_lock ((cache)->lock)
+#define _thumbnail_cache_unlock(cache) g_mutex_unlock ((cache)->lock)
+#endif
+
 
 
 static void thunar_thumbnail_cache_finalize (GObject *object);
@@ -68,8 +76,12 @@ struct _ThunarThumbnailCache
   GList      *cleanup_queue;
   guint       cleanup_queue_idle_id;
 
+#if GLIB_CHECK_VERSION (2, 32, 0)
+  GMutex      lock;
+#else
   GMutex     *lock;
 #endif
+#endif
 };
 
 
@@ -113,9 +125,13 @@ thunar_thumbnail_cache_init (ThunarThumbnailCache *cache)
       dbus_g_connection_unref (connection);
     }
 
-  /* create a new mutex for accessing the cache from different threads */
+/* create a new mutex for accessing the cache from different threads */
+#if GLIB_CHECK_VERSION (2, 32, 0)
+  g_mutex_init (&cache->lock);
+#else
   cache->lock = g_mutex_new ();
 #endif
+#endif
 }
 
 
@@ -127,7 +143,7 @@ thunar_thumbnail_cache_finalize (GObject *object)
   ThunarThumbnailCache *cache = THUNAR_THUMBNAIL_CACHE (object);
 
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
 
   /* drop the move queue idle and all queued files */
   if (cache->move_queue_idle_id > 0)
@@ -156,11 +172,13 @@ thunar_thumbnail_cache_finalize (GObject *object)
     g_object_unref (cache->cache_proxy);
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 
+#if !GLIB_CHECK_VERSION (2, 32, 0)
   /* release the mutex itself */
   g_mutex_free (cache->lock);
 #endif
+#endif
 
   (*G_OBJECT_CLASS (thunar_thumbnail_cache_parent_class)->finalize) (object);
 }
@@ -288,7 +306,7 @@ thunar_thumbnail_cache_process_move_queue (ThunarThumbnailCache *cache)
   _thunar_return_val_if_fail (THUNAR_IS_THUMBNAIL_CACHE (cache), FALSE);
 
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
   
   /* compute how many URIs there are */
   n_uris = g_list_length (cache->move_source_queue);
@@ -335,7 +353,7 @@ thunar_thumbnail_cache_process_move_queue (ThunarThumbnailCache *cache)
   cache->move_queue_idle_id = 0;
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 
   return FALSE;
 }
@@ -355,7 +373,7 @@ thunar_thumbnail_cache_process_copy_queue (ThunarThumbnailCache *cache)
   _thunar_return_val_if_fail (THUNAR_IS_THUMBNAIL_CACHE (cache), FALSE);
 
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
   
   /* compute how many URIs there are */
   n_uris = g_list_length (cache->copy_source_queue);
@@ -402,7 +420,7 @@ thunar_thumbnail_cache_process_copy_queue (ThunarThumbnailCache *cache)
   cache->copy_queue_idle_id = 0;
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 
   return FALSE;
 }
@@ -420,7 +438,7 @@ thunar_thumbnail_cache_process_delete_queue (ThunarThumbnailCache *cache)
   _thunar_return_val_if_fail (THUNAR_IS_THUMBNAIL_CACHE (cache), FALSE);
 
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
   
   /* compute how many URIs there are */
   n_uris = g_list_length (cache->delete_queue);
@@ -454,7 +472,7 @@ thunar_thumbnail_cache_process_delete_queue (ThunarThumbnailCache *cache)
   cache->delete_queue_idle_id = 0;
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 
   return FALSE;
 }
@@ -472,7 +490,7 @@ thunar_thumbnail_cache_process_cleanup_queue (ThunarThumbnailCache *cache)
   _thunar_return_val_if_fail (THUNAR_IS_THUMBNAIL_CACHE (cache), FALSE);
 
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
   
   /* compute how many URIs there are */
   n_uris = g_list_length (cache->cleanup_queue);
@@ -514,7 +532,7 @@ thunar_thumbnail_cache_process_cleanup_queue (ThunarThumbnailCache *cache)
   cache->cleanup_queue_idle_id = 0;
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 
   return FALSE;
 }
@@ -541,7 +559,7 @@ thunar_thumbnail_cache_move_file (ThunarThumbnailCache *cache,
 
 #ifdef HAVE_DBUS
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
 
   /* check if we have a valid proxy for the cache service */
   if (cache->cache_proxy != NULL)
@@ -566,7 +584,7 @@ thunar_thumbnail_cache_move_file (ThunarThumbnailCache *cache,
     }
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 #endif
 }
 
@@ -583,7 +601,7 @@ thunar_thumbnail_cache_copy_file (ThunarThumbnailCache *cache,
 
 #ifdef HAVE_DBUS
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
 
   /* check if we have a valid proxy for the cache service */
   if (cache->cache_proxy != NULL)
@@ -608,7 +626,7 @@ thunar_thumbnail_cache_copy_file (ThunarThumbnailCache *cache,
     }
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 #endif
 }
 
@@ -623,7 +641,7 @@ thunar_thumbnail_cache_delete_file (ThunarThumbnailCache *cache,
 
 #ifdef HAVE_DBUS
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
 
   /* check if we have a valid proxy for the cache service */
   if (cache->cache_proxy)
@@ -645,7 +663,7 @@ thunar_thumbnail_cache_delete_file (ThunarThumbnailCache *cache,
     }
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 #endif
 }
 
@@ -660,7 +678,7 @@ thunar_thumbnail_cache_cleanup_file (ThunarThumbnailCache *cache,
 
 #ifdef HAVE_DBUS
   /* acquire a cache lock */
-  g_mutex_lock (cache->lock);
+  _thumbnail_cache_lock (cache);
 
   /* check if we have a valid proxy for the cache service */
   if (cache->cache_proxy)
@@ -682,6 +700,6 @@ thunar_thumbnail_cache_cleanup_file (ThunarThumbnailCache *cache,
     }
 
   /* release the cache lock */
-  g_mutex_unlock (cache->lock);
+  _thumbnail_cache_unlock (cache);
 #endif
 }
diff --git a/thunar/thunar-thumbnailer.c b/thunar/thunar-thumbnailer.c
index 81f0f1a..c9f780f 100644
--- a/thunar/thunar-thumbnailer.c
+++ b/thunar/thunar-thumbnailer.c
@@ -128,6 +128,16 @@ static gboolean               thunar_thumbnailer_idle_func              (gpointe
 static void                   thunar_thumbnailer_idle_free              (gpointer                    data);
 #endif
 
+#if GLIB_CHECK_VERSION (2, 32, 0)
+#define _thumbnailer_lock(thumbnailer)    g_mutex_lock (&((thumbnailer)->lock))
+#define _thumbnailer_unlock(thumbnailer)  g_mutex_unlock (&((thumbnailer)->lock))
+#define _thumbnailer_trylock(thumbnailer) g_mutex_trylock (&((thumbnailer)->lock))
+#else
+#define _thumbnailer_lock(thumbnailer)    g_mutex_lock ((thumbnailer)->lock)
+#define _thumbnailer_unlock(thumbnailer)  g_mutex_unlock ((thumbnailer)->lock)
+#define _thumbnailer_trylock(thumbnailer) g_mutex_trylock ((thumbnailer)->lock)
+#endif
+
 
 
 struct _ThunarThumbnailerClass
@@ -146,7 +156,11 @@ struct _ThunarThumbnailer
   /* running jobs */
   GSList     *jobs;
 
+#if GLIB_CHECK_VERSION (2, 32, 0)
+  GMutex      lock;
+#else
   GMutex     *lock;
+#endif
 
   /* cached MIME types -> URI schemes for which thumbs can be generated */
   GHashTable *supported;
@@ -229,7 +243,11 @@ thunar_thumbnailer_init (ThunarThumbnailer *thumbnailer)
 #ifdef HAVE_DBUS
   DBusGConnection *connection;
 
+#if GLIB_CHECK_VERSION (2, 32, 0)
+  g_mutex_init (&thumbnailer->lock);
+#else
   thumbnailer->lock = g_mutex_new ();
+#endif
 
   /* try to connect to D-Bus */
   connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
@@ -255,7 +273,7 @@ thunar_thumbnailer_finalize (GObject *object)
   GSList                *lp;
 
   /* acquire the thumbnailer lock */
-  g_mutex_lock (thumbnailer->lock);
+  _thumbnailer_lock (thumbnailer);
 
   if (thumbnailer->thumbnailer_proxy != NULL)
     {
@@ -300,11 +318,13 @@ thunar_thumbnailer_finalize (GObject *object)
     g_hash_table_unref (thumbnailer->supported);
 
   /* release the thumbnailer lock */
-  g_mutex_unlock (thumbnailer->lock);
+  _thumbnailer_unlock (thumbnailer);
 
+#if !GLIB_CHECK_VERSION (2, 32, 0)
   /* release the mutex */
   g_mutex_free (thumbnailer->lock);
 #endif
+#endif
 
   (*G_OBJECT_CLASS (thunar_thumbnailer_parent_class)->finalize) (object);
 }
@@ -413,7 +433,7 @@ thunar_thumbnailer_get_supported_types (ThunarThumbnailer *thumbnailer)
 
   _thunar_return_if_fail (THUNAR_IS_THUMBNAILER (thumbnailer));
   _thunar_return_if_fail (DBUS_IS_G_PROXY (thumbnailer->thumbnailer_proxy));
-  _thunar_return_if_fail (!g_mutex_trylock (thumbnailer->lock));
+  _thunar_return_if_fail (!_thumbnailer_trylock (thumbnailer));
 
   /* leave if there already is a hash table */
   if (thumbnailer->supported != NULL)
@@ -478,7 +498,7 @@ thunar_thumbnailer_file_is_supported (ThunarThumbnailer *thumbnailer,
   _thunar_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
   _thunar_return_val_if_fail (DBUS_IS_G_PROXY (thumbnailer->thumbnailer_proxy), FALSE);
   _thunar_return_val_if_fail (thumbnailer->supported != NULL, FALSE);
-  _thunar_return_val_if_fail (!g_mutex_trylock (thumbnailer->lock), FALSE);
+  _thunar_return_val_if_fail (!_thumbnailer_trylock (thumbnailer), FALSE);
 
   /* determine the content type of the passed file */
   content_type = thunar_file_get_content_type (file);
@@ -567,9 +587,9 @@ thunar_thumbnailer_thumbnailer_finished (DBusGProxy        *proxy,
           g_signal_emit (G_OBJECT (thumbnailer), thumbnailer_signals[REQUEST_FINISHED], 0, job->request);
 
           /* remove job from the list */
-          g_mutex_lock (thumbnailer->lock);
+          _thumbnailer_lock (thumbnailer);
           thumbnailer->jobs = g_slist_delete_link (thumbnailer->jobs, lp);
-          g_mutex_unlock (thumbnailer->lock);
+          _thumbnailer_unlock (thumbnailer);
 
           g_slice_free (ThunarThumbnailerJob, job);
           break;
@@ -592,7 +612,7 @@ thunar_thumbnailer_queue_async_reply (DBusGProxy *proxy,
   _thunar_return_if_fail (job != NULL);
   _thunar_return_if_fail (THUNAR_IS_THUMBNAILER (thumbnailer));
 
-  g_mutex_lock (thumbnailer->lock);
+  _thumbnailer_lock (thumbnailer);
 
   /* the queue call is finished, we can forget about its proxy call */
   job->handle_call = NULL;
@@ -612,7 +632,7 @@ thunar_thumbnailer_queue_async_reply (DBusGProxy *proxy,
       job->handle = handle;
     }
 
-  g_mutex_unlock (thumbnailer->lock);
+  _thumbnailer_unlock (thumbnailer);
 }
 
 
@@ -629,7 +649,7 @@ thunar_thumbnailer_queue_async (ThunarThumbnailer *thumbnailer,
   _thunar_return_val_if_fail (uris != NULL, 0);
   _thunar_return_val_if_fail (mime_hints != NULL, 0);
   _thunar_return_val_if_fail (DBUS_IS_G_PROXY (thumbnailer->thumbnailer_proxy), 0);
-  _thunar_return_val_if_fail (!g_mutex_trylock (thumbnailer->lock), 0);
+  _thunar_return_val_if_fail (!_thumbnailer_trylock (thumbnailer), 0);
 
   /* compute the next request ID, making sure it's never 0 */
   request_no = thumbnailer->last_request + 1;
@@ -693,9 +713,9 @@ thunar_thumbnailer_idle (ThunarThumbnailer          *thumbnailer,
           idle->uris = g_strdupv ((gchar **)uris);
 
           /* remember the idle struct because we might have to remove it in finalize() */
-          g_mutex_lock (thumbnailer->lock);
+          _thumbnailer_lock (thumbnailer);
           thumbnailer->idles = g_slist_prepend (thumbnailer->idles, idle);
-          g_mutex_unlock (thumbnailer->lock);
+          _thumbnailer_unlock (thumbnailer);
 
           /* call the idle function when we have the time */
           idle->id = g_idle_add_full (G_PRIORITY_LOW,
@@ -751,9 +771,9 @@ thunar_thumbnailer_idle_func (gpointer user_data)
     }
 
   /* remove the idle struct */
-  g_mutex_lock (idle->thumbnailer->lock);
+  _thumbnailer_lock (idle->thumbnailer);
   idle->thumbnailer->idles = g_slist_remove (idle->thumbnailer->idles, idle);
-  g_mutex_unlock (idle->thumbnailer->lock);
+  _thumbnailer_unlock (idle->thumbnailer);
 
   /* remove the idle source, which also destroys the idle struct */
   return FALSE;
@@ -856,12 +876,12 @@ thunar_thumbnailer_queue_files (ThunarThumbnailer *thumbnailer,
 
 #ifdef HAVE_DBUS
   /* acquire the thumbnailer lock */
-  g_mutex_lock (thumbnailer->lock);
+  _thumbnailer_lock (thumbnailer);
 
   if (thumbnailer->thumbnailer_proxy == NULL)
     {
       /* release the lock and abort */
-      g_mutex_unlock (thumbnailer->lock);
+      _thumbnailer_unlock (thumbnailer);
       return FALSE;
     }
 
@@ -901,7 +921,7 @@ thunar_thumbnailer_queue_files (ThunarThumbnailer *thumbnailer,
     }
 
   /* release the thumbnailer lock */
-  g_mutex_unlock (thumbnailer->lock);
+  _thumbnailer_unlock (thumbnailer);
 
   /* check if we have any supported files */
   if (n_items > 0)
@@ -925,7 +945,7 @@ thunar_thumbnailer_queue_files (ThunarThumbnailer *thumbnailer,
       uris[n] = NULL;
       mime_hints[n] = NULL;
 
-      g_mutex_lock (thumbnailer->lock);
+      _thumbnailer_lock (thumbnailer);
 
       /* queue a thumbnail request for the URIs from the wait queue */
       if (request != NULL)
@@ -933,7 +953,7 @@ thunar_thumbnailer_queue_files (ThunarThumbnailer *thumbnailer,
       else
         thunar_thumbnailer_queue_async (thumbnailer, uris, mime_hints);
 
-      g_mutex_unlock (thumbnailer->lock);
+      _thumbnailer_unlock (thumbnailer);
 
       /* free mime hints array */
       g_free (mime_hints);
@@ -965,7 +985,7 @@ thunar_thumbnailer_dequeue (ThunarThumbnailer *thumbnailer,
 
 #ifdef HAVE_DBUS
   /* acquire the thumbnailer lock */
-  g_mutex_lock (thumbnailer->lock);
+  _thumbnailer_lock (thumbnailer);
 
   for (lp = thumbnailer->jobs; lp != NULL; lp = lp->next)
     {
@@ -993,6 +1013,6 @@ thunar_thumbnailer_dequeue (ThunarThumbnailer *thumbnailer,
     }
 
   /* release the thumbnailer lock */
-  g_mutex_unlock (thumbnailer->lock);
+  _thumbnailer_unlock (thumbnailer);
 #endif
 }
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index 55efdb0..221aa0c 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -1744,15 +1744,15 @@ thunar_tree_view_rename_error (ExoJob         *job,
                                GError         *error,
                                ThunarTreeView *view)
 {
-  GValueArray *param_values;
-  ThunarFile  *file;
+  GArray     *param_values;
+  ThunarFile *file;
 
   _thunar_return_if_fail (EXO_IS_JOB (job));
   _thunar_return_if_fail (error != NULL);
   _thunar_return_if_fail (THUNAR_IS_TREE_VIEW (view));
 
   param_values = thunar_simple_job_get_param_values (THUNAR_SIMPLE_JOB (job));
-  file = g_value_get_object (g_value_array_get_nth (param_values, 0));
+  file = g_value_get_object (&g_array_index (param_values, GValue, 0));
 
   /* display an error message */
   thunar_dialogs_show_error (GTK_WIDGET (view), error, _("Failed to rename \"%s\""),


More information about the Xfce4-commits mailing list