[gnome-software/wip/kalev/appstream-silo-threadsafety: 3/6] Backport GRWLock autoptr support



commit cf883e3dbb1d214e36fee82c093d7233d396355f
Author: Kalev Lember <klember redhat com>
Date:   Fri May 10 12:11:23 2019 +0200

    Backport GRWLock autoptr support
    
    ... so that we can use this on older glib that don't have glib MR
    https://gitlab.gnome.org/GNOME/glib/merge_requests/825 .

 lib/gnome-software.h  |  1 +
 lib/gs-autocleanups.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+)
---
diff --git a/lib/gnome-software.h b/lib/gnome-software.h
index 6b078961..f90b17f5 100644
--- a/lib/gnome-software.h
+++ b/lib/gnome-software.h
@@ -15,6 +15,7 @@
 #include <gs-app-list.h>
 #include <gs-app-collation.h>
 #include <gs-auth.h>
+#include <gs-autocleanups.h>
 #include <gs-category.h>
 #include <gs-os-release.h>
 #include <gs-plugin.h>
diff --git a/lib/gs-autocleanups.h b/lib/gs-autocleanups.h
new file mode 100644
index 00000000..85f322b4
--- /dev/null
+++ b/lib/gs-autocleanups.h
@@ -0,0 +1,51 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2019 Kalev Lember <klember redhat com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#pragma once
+
+G_BEGIN_DECLS
+
+#if !GLIB_CHECK_VERSION(2, 61, 1)
+
+/* Backported GRWLock autoptr support for older glib versions */
+
+typedef void GRWLockWriterLocker;
+
+static inline GRWLockWriterLocker *
+g_rw_lock_writer_locker_new (GRWLock *rw_lock)
+{
+       g_rw_lock_writer_lock (rw_lock);
+       return (GRWLockWriterLocker *) rw_lock;
+}
+
+static inline void
+g_rw_lock_writer_locker_free (GRWLockWriterLocker *locker)
+{
+       g_rw_lock_writer_unlock ((GRWLock *) locker);
+}
+
+typedef void GRWLockReaderLocker;
+
+static inline GRWLockReaderLocker *
+g_rw_lock_reader_locker_new (GRWLock *rw_lock)
+{
+       g_rw_lock_reader_lock (rw_lock);
+       return (GRWLockReaderLocker *) rw_lock;
+}
+
+static inline void
+g_rw_lock_reader_locker_free (GRWLockReaderLocker *locker)
+{
+       g_rw_lock_reader_unlock ((GRWLock *) locker);
+}
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRWLockWriterLocker, g_rw_lock_writer_locker_free)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GRWLockReaderLocker, g_rw_lock_reader_locker_free)
+
+#endif
+
+G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]