[Spice-devel] [PATCH spice-gtk 1/3] Lower our glib requirement to 2.22, as we claim

Hans de Goede hdegoede at redhat.com
Thu Jan 12 06:22:34 PST 2012


Ack series.

and thanks for working in this!

On 01/12/2012 02:56 PM, Marc-André Lureau wrote:
> Required to build on RHEL, even upcoming 6.3
> ---
>   gtk/Makefile.am                        |    3 ++
>   gtk/channel-usbredir.c                 |    1 +
>   gtk/glib-compat.c                      |   49 ++++++++++++++++++++++++++++++++
>   gtk/glib-compat.h                      |   40 ++++++++++++++++++++++++++
>   gtk/spice-audio.c                      |    2 +
>   gtk/spice-client-glib-usb-acl-helper.c |    2 +
>   gtk/spice-session.c                    |    1 +
>   gtk/usb-acl-helper.c                   |    1 +
>   8 files changed, 99 insertions(+), 0 deletions(-)
>   create mode 100644 gtk/glib-compat.c
>
> diff --git a/gtk/Makefile.am b/gtk/Makefile.am
> index 85a78a6..8279846 100644
> --- a/gtk/Makefile.am
> +++ b/gtk/Makefile.am
> @@ -185,6 +185,7 @@ USB_ACL_HELPER_SRCS =
>   endif
>
>   libspice_client_glib_2_0_la_SOURCES =	\
> +	glib-compat.c			\
>   	glib-compat.h			\
>   	spice-audio.c			\
>   	spice-audio-priv.h		\
> @@ -366,6 +367,8 @@ spicy_CPPFLAGS =			\
>
>   if WITH_POLKIT
>   spice_client_glib_usb_acl_helper_SOURCES =	\
> +	glib-compat.c				\
> +	glib-compat.h				\
>   	spice-client-glib-usb-acl-helper.c	\
>   	$(NULL)
>
> diff --git a/gtk/channel-usbredir.c b/gtk/channel-usbredir.c
> index 5f0f409..10d266c 100644
> --- a/gtk/channel-usbredir.c
> +++ b/gtk/channel-usbredir.c
> @@ -34,6 +34,7 @@
>   #include "spice-common.h"
>
>   #include "spice-channel-priv.h"
> +#include "glib-compat.h"
>
>   /**
>    * SECTION:channel-usbredir
> diff --git a/gtk/glib-compat.c b/gtk/glib-compat.c
> new file mode 100644
> index 0000000..7bb906c
> --- /dev/null
> +++ b/gtk/glib-compat.c
> @@ -0,0 +1,49 @@
> +/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
> +/*
> +   This library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   This library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with this library; if not, see<http://www.gnu.org/licenses/>.
> +*/
> +
> +#include "glib-compat.h"
> +
> +#if !GLIB_CHECK_VERSION(2,26,0)
> +G_DEFINE_BOXED_TYPE (GError, spice_error, g_error_copy, g_error_free)
> +#endif
> +
> +#if !GLIB_CHECK_VERSION(2,28,0)
> +/**
> + * spice_simple_async_result_take_error: (skip)
> + * @simple: a #GSimpleAsyncResult
> + * @error: a #GError
> + *
> + * Sets the result from @error, and takes over the caller's ownership
> + * of @error, so the caller does not need to free it any more.
> + *
> + * Since: 2.28
> + **/
> +G_GNUC_INTERNAL void
> +g_simple_async_result_take_error (GSimpleAsyncResult *simple,
> +                                  GError             *error)
> +{
> +    /* this code is different from upstream */
> +    /* we can't avoid extra copy/free, since the simple struct is
> +       opaque */
> +    g_simple_async_result_set_from_error (simple, error);
> +    g_error_free (error);
> +}
> +#endif
> +
> +#if !GLIB_CHECK_VERSION(2,30,0)
> +G_DEFINE_BOXED_TYPE (GMainContext, spice_main_context, g_main_context_ref, g_main_context_unref)
> +#endif
> +
> diff --git a/gtk/glib-compat.h b/gtk/glib-compat.h
> index 2766de0..bd8f3de 100644
> --- a/gtk/glib-compat.h
> +++ b/gtk/glib-compat.h
> @@ -17,6 +17,7 @@
>   #define GLIB_COMPAT_H
>
>   #include<glib-object.h>
> +#include<gio/gio.h>
>
>   #if !GLIB_CHECK_VERSION(2,26,0)
>   #define G_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) G_DEFINE_BOXED_TYPE_WITH_CODE (TypeName, type_name, copy_func, free_func, {})
> @@ -60,8 +61,47 @@ type_name##_get_type (void) \
>                                         (GBoxedFreeFunc) free_func); \
>         { /* custom code follows */
>   #endif /* __GNUC__ */
> +
> +#define g_source_set_name(source, name) G_STMT_START { } G_STMT_END
> +
> +#define G_TYPE_ERROR (spice_error_get_type ())
> +GType spice_error_get_type (void) G_GNUC_CONST;
> +
> +#if    __GNUC__>  4 || (__GNUC__ == 4&&  __GNUC_MINOR__>= 5)
> +#define G_GNUC_DEPRECATED_FOR(f)                        \
> +  __attribute__((deprecated("Use " #f " instead")))
> +#else
> +#define G_GNUC_DEPRECATED_FOR(f)        G_GNUC_DEPRECATED
> +#endif /* __GNUC__ */
> +
> +#define G_PARAM_DEPRECATED  (1<<  31)
>   #endif /* glib 2.26 */
>
> +#if !GLIB_CHECK_VERSION(2,28,0)
> +#define g_clear_object(object_ptr) \
> +  G_STMT_START {                                                             \
> +    /* Only one access, please */                                            \
> +    gpointer *_p = (gpointer) (object_ptr);                                  \
> +    gpointer _o;                                                             \
> +                                                                             \
> +    do                                                                       \
> +      _o = g_atomic_pointer_get (_p);                                        \
> +    while G_UNLIKELY (!g_atomic_pointer_compare_and_exchange (_p, _o, NULL));\
> +                                                                             \
> +    if (_o)                                                                  \
> +      g_object_unref (_o);                                                   \
> +  } G_STMT_END
> +
> +void
> +g_simple_async_result_take_error(GSimpleAsyncResult *simple,
> +                                 GError             *error);
> +#endif /* glib 2.28 */
> +
> +#if !GLIB_CHECK_VERSION(2,30,0)
> +#define G_TYPE_MAIN_CONTEXT (spice_main_context_get_type ())
> +GType spice_main_context_get_type (void) G_GNUC_CONST;
> +#endif
> +
>   #if !GLIB_CHECK_VERSION(2,32,0)
>   # define G_SIGNAL_DEPRECATED (1<<  9)
>   #endif
> diff --git a/gtk/spice-audio.c b/gtk/spice-audio.c
> index b9d1011..f58a81e 100644
> --- a/gtk/spice-audio.c
> +++ b/gtk/spice-audio.c
> @@ -51,6 +51,8 @@
>   #include "spice-gstaudio.h"
>   #endif
>
> +#include "glib-compat.h"
> +
>   #define SPICE_AUDIO_GET_PRIVATE(obj)                                  \
>       (G_TYPE_INSTANCE_GET_PRIVATE ((obj), SPICE_TYPE_AUDIO, SpiceAudioPrivate))
>
> diff --git a/gtk/spice-client-glib-usb-acl-helper.c b/gtk/spice-client-glib-usb-acl-helper.c
> index 698820b..311404e 100644
> --- a/gtk/spice-client-glib-usb-acl-helper.c
> +++ b/gtk/spice-client-glib-usb-acl-helper.c
> @@ -33,6 +33,8 @@
>   #include<polkit/polkit.h>
>   #include<acl/libacl.h>
>
> +#include "glib-compat.h"
> +
>   #define FATAL_ERROR(...) \
>       do { \
>           /* We print the error both to stdout, for the app invoking us and \
> diff --git a/gtk/spice-session.c b/gtk/spice-session.c
> index 8b58781..d942b28 100644
> --- a/gtk/spice-session.c
> +++ b/gtk/spice-session.c
> @@ -28,6 +28,7 @@
>   #include "ring.h"
>
>   #include "gio-coroutine.h"
> +#include "glib-compat.h"
>
>   struct channel {
>       SpiceChannel      *channel;
> diff --git a/gtk/usb-acl-helper.c b/gtk/usb-acl-helper.c
> index 7fe8404..b79e122 100644
> --- a/gtk/usb-acl-helper.c
> +++ b/gtk/usb-acl-helper.c
> @@ -26,6 +26,7 @@
>   #include<string.h>
>
>   #include "usb-acl-helper.h"
> +#include "glib-compat.h"
>
>   /* ------------------------------------------------------------------ */
>   /* gobject glue                                                       */


More information about the Spice-devel mailing list