[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 (¶m_values->values[0], THUNAR_TYPE_FILE), FALSE);
- _thunar_return_val_if_fail (G_VALUE_HOLDS_STRING (¶m_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