[Spice-devel] [PATCH spice-gtk] Allow to build without X11 gdk backend

Pavel Grunt pgrunt at redhat.com
Mon Jun 19 14:31:34 UTC 2017


On Mon, 2017-06-19 at 10:06 -0400, Frediano Ziglio wrote:
> Question: can GDK have no X11?
chances are low but there may be a distro shipping gtk without the x11
backend

> I suppose only wayland compiled in?
or win32 or quartz (macOS).

The issue I noticed was in egl - which can work with wayland or X11

Pavel

> 
> > 
> > ---
> >  src/spice-gtk-session.c |  2 +-
> >  src/spice-widget-egl.c  | 14 +++++++++++++-
> >  src/spice-widget.c      |  2 +-
> >  3 files changed, 15 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c
> > index 33db3c8..e338ce6 100644
> > --- a/src/spice-gtk-session.c
> > +++ b/src/spice-gtk-session.c
> > @@ -18,10 +18,10 @@
> >  #include "config.h"
> >  
> >  #include <glib.h>
> > +#include <gdk/gdk.h>
> >  
> >  #ifdef HAVE_X11_XKBLIB_H
> >  #include <X11/XKBlib.h>
> > -#include <gdk/gdkx.h>
> >  #endif
> >  #ifdef GDK_WINDOWING_X11
> >  #include <X11/Xlib.h>
> > diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c
> > index 7c21113..b50641c 100644
> > --- a/src/spice-widget-egl.c
> > +++ b/src/spice-widget-egl.c
> > @@ -18,6 +18,7 @@
> >  #include "config.h"
> >  
> >  #include <math.h>
> > +#include <gdk/gdk.h>
> >  
> >  #define EGL_EGLEXT_PROTOTYPES
> >  #define GL_GLEXT_PROTOTYPES
> > @@ -27,7 +28,9 @@
> >  #include "spice-gtk-session-priv.h"
> >  #include <libdrm/drm_fourcc.h>
> >  
> > +#ifdef GDK_WINDOWING_X11
> >  #include <gdk/gdkx.h>
> > +#endif
> >  #ifdef GDK_WINDOWING_WAYLAND
> >  #include <gdk/gdkwayland.h>
> >  #endif
> > @@ -291,6 +294,7 @@ gl_make_current(SpiceDisplay *display, GError
> > **err)
> >  
> >      g_return_val_if_fail(d->egl.context_ready, FALSE);
> >  
> > +#ifdef GDK_WINDOWING_X11
> >      if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
> >          EGLBoolean success = eglMakeCurrent(d->egl.display,
> >                                              d->egl.surface,
> > @@ -303,8 +307,12 @@ gl_make_current(SpiceDisplay *display, GError
> > **err)
> >              return FALSE;
> >          }
> >      }
> > +#endif
> >  #if GTK_CHECK_VERSION(3,16,0)
> > -    else {
> > +#ifdef GDK_WINDOWING_X11
> > +    else
> > +#endif
> > +    {
> >          /* Ignore GLib's too-new warnings */
> >          G_GNUC_BEGIN_IGNORE_DEPRECATIONS
> >          GtkWidget *area = gtk_stack_get_child_by_name(d->stack,
> > "gl-area");
> > @@ -402,6 +410,7 @@ void spice_egl_unrealize_display(SpiceDisplay
> > *display)
> >          d->egl.prog = 0;
> >      }
> >  
> > +#ifdef GDK_WINDOWING_X11
> >      if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
> >          /* egl.surface && egl.ctx are only created on x11, see
> >             spice_egl_init() */
> > @@ -422,6 +431,7 @@ void spice_egl_unrealize_display(SpiceDisplay
> > *display)
> >          /* do not call eglterminate() since egl may be used by
> >           * somebody else code */
> >      }
> > +#endif
> >  }
> >  
> >  G_GNUC_INTERNAL
> > @@ -619,10 +629,12 @@ void spice_egl_update_display(SpiceDisplay
> > *display)
> >                               0, 0, 1, 1);
> >      }
> >  
> > +#ifdef GDK_WINDOWING_X11
> >      if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
> >          /* gtk+ does the swap with gtkglarea */
> >          eglSwapBuffers(d->egl.display, d->egl.surface);
> >      }
> > +#endif
> >  
> >      glUseProgram(prog);
> >  }
> > diff --git a/src/spice-widget.c b/src/spice-widget.c
> > index 386724d..139510d 100644
> > --- a/src/spice-widget.c
> > +++ b/src/spice-widget.c
> > @@ -19,10 +19,10 @@
> >  
> >  #include <math.h>
> >  #include <glib.h>
> > +#include <gdk/gdk.h>
> >  
> >  #ifdef HAVE_X11_XKBLIB_H
> >  #include <X11/XKBlib.h>
> > -#include <gdk/gdkx.h>
> >  #endif
> >  #ifdef GDK_WINDOWING_X11
> >  #include <X11/Xlib.h>


More information about the Spice-devel mailing list