[Spice-devel] [PATCH spice-server] gstreamer: Compatibility layer for old GLib

Frediano Ziglio fziglio at redhat.com
Thu Nov 10 12:34:18 UTC 2016


Support new GCond/GMutex interface with former GLib.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/glib-compat.h       | 69 ++++++++++++++++++++++++++++++++++++++++++++++
 server/gstreamer-encoder.c |  1 +
 2 files changed, 70 insertions(+)

diff --git a/server/glib-compat.h b/server/glib-compat.h
index 8a27afe..d4ff550 100644
--- a/server/glib-compat.h
+++ b/server/glib-compat.h
@@ -44,4 +44,73 @@ g_queue_remove_boolean(GQueue *queue, gconstpointer data)
 #define g_queue_remove g_queue_remove_boolean
 #endif
 
+#if !GLIB_CHECK_VERSION(2,32,0)
+typedef struct {
+    GMutex *mtx_compat;
+} GMutexCompat;
+#define GMutex GMutexCompat
+
+static inline void
+g_mutex_lock_compat(GMutexCompat *mtx)
+{
+    g_mutex_lock(mtx->mtx_compat);
+}
+#undef g_mutex_lock
+#define g_mutex_lock(mtx) g_mutex_lock_compat(mtx)
+static inline void
+g_mutex_unlock_compat(GMutexCompat *mtx)
+{
+    g_mutex_unlock(mtx->mtx_compat);
+}
+#undef g_mutex_unlock
+#define g_mutex_unlock(mtx) g_mutex_unlock_compat(mtx)
+
+typedef struct {
+    GCond *cond_compat;
+} GCondCompat;
+#define GCond GCondCompat
+
+static inline void
+g_cond_signal_compat(GCondCompat *cond)
+{
+    g_cond_signal(cond->cond_compat);
+}
+#undef g_cond_signal
+#define g_cond_signal(cond) g_cond_signal_compat(cond)
+
+static inline void
+g_cond_wait_compat(GCondCompat *cond, GMutexCompat *mtx)
+{
+    g_cond_wait(cond->cond_compat, mtx->mtx_compat);
+}
+#undef g_cond_wait
+#define g_cond_wait(cond, mtx) g_cond_wait_compat(cond, mtx)
+
+static inline void
+g_mutex_init(GMutexCompat *mtx)
+{
+    mtx->mtx_compat = g_mutex_new();
+}
+
+static inline void
+g_cond_init(GCondCompat *cond)
+{
+    cond->cond_compat = g_cond_new();
+}
+
+static inline void
+g_mutex_clear(GMutexCompat *mtx)
+{
+    g_mutex_free(mtx->mtx_compat);
+    mtx->mtx_compat = NULL;
+}
+
+static inline void
+g_cond_clear(GCondCompat *cond)
+{
+    g_cond_free(cond->cond_compat);
+    cond->cond_compat = NULL;
+}
+#endif
+
 #endif /* GLIB_COMPAT_H_ */
diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c
index 3d5f8a0..c419bb6 100644
--- a/server/gstreamer-encoder.c
+++ b/server/gstreamer-encoder.c
@@ -29,6 +29,7 @@
 #include "red-common.h"
 #include "video-encoder.h"
 #include "utils.h"
+#include "glib-compat.h"
 
 
 #define SPICE_GST_DEFAULT_FPS 30
-- 
2.7.4



More information about the Spice-devel mailing list