[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