/* * GLIB Compatibility Functions * * Copyright IBM, Corp. 2013 * * Authors: * Anthony Liguori * * This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. * */ #ifndef QEMU_GLIB_COMPAT_H #define QEMU_GLIB_COMPAT_H #include #if !GLIB_CHECK_VERSION(2, 14, 0) static inline guint g_timeout_add_seconds(guint interval, GSourceFunc function, gpointer data) { return g_timeout_add(interval * 1000, function, data); } #endif #ifdef _WIN32 /* * g_poll has a problem on Windows when using * timeouts < 10ms, so use wrapper. */ #define g_poll(fds, nfds, timeout) g_poll_fixed(fds, nfds, timeout) gint g_poll_fixed(GPollFD *fds, guint nfds, gint timeout); #elif !GLIB_CHECK_VERSION(2, 20, 0) /* * Glib before 2.20.0 doesn't implement g_poll, so wrap it to compile properly * on older systems. */ static inline gint g_poll(GPollFD *fds, guint nfds, gint timeout) { GMainContext *ctx = g_main_context_default(); return g_main_context_get_poll_func(ctx)(fds, nfds, timeout); } #endif #endif