summaryrefslogtreecommitdiff
path: root/gst-libs/gst/vaapi
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-12-17 09:41:24 +0100
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-12-17 14:56:11 +0100
commite823cd3227ca323efa8811188c661a144bd34299 (patch)
treeb898debe0d1bf93c44b6e25ea17b5620c01e8254 /gst-libs/gst/vaapi
parentb6f80238e91e4e969974f8288f055a4227f48dc3 (diff)
libs: fix compatibility with glib 2.28.
Always prefer non deprecated APIs by default and provide compatibility glue for older glib versions when necessary.
Diffstat (limited to 'gst-libs/gst/vaapi')
-rw-r--r--gst-libs/gst/vaapi/glibcompat.h93
1 files changed, 69 insertions, 24 deletions
diff --git a/gst-libs/gst/vaapi/glibcompat.h b/gst-libs/gst/vaapi/glibcompat.h
index 0a6115c9..6c1f8f4e 100644
--- a/gst-libs/gst/vaapi/glibcompat.h
+++ b/gst-libs/gst/vaapi/glibcompat.h
@@ -25,6 +25,13 @@
#include <glib.h>
#include <glib-object.h>
+#define G_COMPAT_DEFINE(new_api, new_args, old_api, old_args) \
+static inline void \
+new_api new_args \
+{ \
+ old_api old_args; \
+}
+
#if !GLIB_CHECK_VERSION(2,27,2)
static inline void
g_list_free_full(GList *list, GDestroyNotify free_func)
@@ -52,31 +59,39 @@ g_clear_object_inline(volatile GObject **object_ptr)
#define g_clear_object(obj) g_clear_object_inline((volatile GObject **)(obj))
#endif
-#if GLIB_CHECK_VERSION(2,31,2)
-#define GStaticMutex GMutex
-#undef g_static_mutex_init
-#define g_static_mutex_init(mutex) g_mutex_init(mutex)
-#undef g_static_mutex_free
-#define g_static_mutex_free(mutex) g_mutex_clear(mutex)
-#undef g_static_mutex_lock
-#define g_static_mutex_lock(mutex) g_mutex_lock(mutex)
-#undef g_static_mutex_unlock
-#define g_static_mutex_unlock(mutex) g_mutex_unlock(mutex)
-
-#define GStaticRecMutex GRecMutex
-#undef g_static_rec_mutex_init
-#define g_static_rec_mutex_init(mutex) g_rec_mutex_init(mutex)
-#undef g_static_rec_mutex_free
-#define g_static_rec_mutex_free(mutex) g_rec_mutex_clear(mutex)
-#undef g_static_rec_mutex_lock
-#define g_static_rec_mutex_lock(mutex) g_rec_mutex_lock(mutex)
-#undef g_static_rec_mutex_unlock
-#define g_static_rec_mutex_unlock(m) g_rec_mutex_unlock(m)
-#endif
-
#if !GLIB_CHECK_VERSION(2,31,2)
+typedef GStaticMutex GCompatMutex;
+G_COMPAT_DEFINE(g_compat_mutex_init, (GCompatMutex *mutex),
+ g_static_mutex_init, (mutex))
+G_COMPAT_DEFINE(g_compat_mutex_clear, (GCompatMutex *mutex),
+ g_static_mutex_free, (mutex))
+G_COMPAT_DEFINE(g_compat_mutex_lock, (GCompatMutex *mutex),
+ g_static_mutex_lock, (mutex))
+G_COMPAT_DEFINE(g_compat_mutex_unlock, (GCompatMutex *mutex),
+ g_static_mutex_unlock, (mutex))
+
+typedef GStaticRecMutex GCompatRecMutex;
+G_COMPAT_DEFINE(g_compat_rec_mutex_init, (GCompatRecMutex *mutex),
+ g_static_rec_mutex_init, (mutex))
+G_COMPAT_DEFINE(g_compat_rec_mutex_clear, (GCompatRecMutex *mutex),
+ g_static_rec_mutex_free, (mutex))
+G_COMPAT_DEFINE(g_compat_rec_mutex_lock, (GCompatRecMutex *mutex),
+ g_static_rec_mutex_lock, (mutex))
+G_COMPAT_DEFINE(g_compat_rec_mutex_unlock, (GCompatRecMutex *mutex),
+ g_static_rec_mutex_unlock, (mutex))
+
+typedef GCond *GCompatCond;
+G_COMPAT_DEFINE(g_compat_cond_init, (GCompatCond *cond),
+ *cond = g_cond_new, ())
+G_COMPAT_DEFINE(g_compat_cond_clear, (GCompatCond *cond),
+ if (*cond) g_cond_free, (*cond))
+G_COMPAT_DEFINE(g_compat_cond_signal, (GCompatCond *cond),
+ g_cond_signal, (*cond))
+G_COMPAT_DEFINE(g_compat_cond_broadcast, (GCompatCond *cond),
+ g_cond_broadcast, (*cond))
+
static inline gboolean
-g_cond_wait_until(GCond *cond, GMutex *mutex, gint64 end_time)
+g_cond_wait_until(GCompatCond *cond, GStaticMutex *mutex, gint64 end_time)
{
gint64 diff_time;
GTimeVal timeout;
@@ -84,8 +99,38 @@ g_cond_wait_until(GCond *cond, GMutex *mutex, gint64 end_time)
diff_time = end_time - g_get_monotonic_time();
g_get_current_time(&timeout);
g_time_val_add(&timeout, diff_time > 0 ? diff_time : 0);
- return g_cond_timed_wait(cond, mutex, &timeout);
+ return g_cond_timed_wait(*cond, g_static_mutex_get_mutex(mutex), &timeout);
}
+
+#define GMutex GCompatMutex
+#undef g_mutex_init
+#define g_mutex_init(mutex) g_compat_mutex_init(mutex)
+#undef g_mutex_clear
+#define g_mutex_clear(mutex) g_compat_mutex_clear(mutex)
+#undef g_mutex_lock
+#define g_mutex_lock(mutex) g_compat_mutex_lock(mutex)
+#undef g_mutex_unlock
+#define g_mutex_unlock(mutex) g_compat_mutex_unlock(mutex)
+
+#define GRecMutex GCompatRecMutex
+#undef g_rec_mutex_init
+#define g_rec_mutex_init(mutex) g_compat_rec_mutex_init(mutex)
+#undef g_rec_mutex_clear
+#define g_rec_mutex_clear(mutex) g_compat_rec_mutex_clear(mutex)
+#undef g_rec_mutex_lock
+#define g_rec_mutex_lock(mutex) g_compat_rec_mutex_lock(mutex)
+#undef g_rec_mutex_unlock
+#define g_rec_mutex_unlock(mutex) g_compat_rec_mutex_unlock(mutex)
+
+#define GCond GCompatCond
+#undef g_cond_init
+#define g_cond_init(cond) g_compat_cond_init(cond)
+#undef g_cond_clear
+#define g_cond_clear(cond) g_compat_cond_clear(cond)
+#undef g_cond_signal
+#define g_cond_signal(cond) g_compat_cond_signal(cond)
#endif
+#undef G_COMPAT_DEFINE
+
#endif /* GLIB_COMPAT_H */