[Spice-devel] [spice-gtk] mingw: Fix build failure due to epoxy/egl.h header

Fabiano FidĂȘncio fidencio at redhat.com
Mon Mar 21 13:52:55 UTC 2016


epoxy/egl.h header is not provided by mingw-epoxy package.
Let's avoid egl usage when building using mingw then.

Signed-off-by: Fabiano FidĂȘncio <fidencio at redhat.com>
---
 configure.ac            |  1 -
 src/Makefile.am         |  2 ++
 src/spice-widget-priv.h |  4 ++++
 src/spice-widget.c      | 27 ++++++++++++++++++++++++++-
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 24fddc1..4227fd8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -593,7 +593,6 @@ AC_MSG_NOTICE([
         DBus:                     ${have_dbus}
         WebDAV support:           ${have_phodav}
         LZ4 support:              ${enable_lz4}
-        epoxy:                    ${have_epoxy}
 
         Now type 'make' to build $PACKAGE
 
diff --git a/src/Makefile.am b/src/Makefile.am
index e393913..240d256 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -147,7 +147,9 @@ nodist_SPICE_GTK_SOURCES_COMMON =	\
 
 SPICE_GTK_SOURCES_COMMON +=		\
 	spice-widget-cairo.c		\
+if !OS_WIN32
 	spice-widget-egl.c		\
+endif
 	$(NULL)
 
 if WITH_GTK
diff --git a/src/spice-widget-priv.h b/src/spice-widget-priv.h
index 0d1c3ae..2f7e39e 100644
--- a/src/spice-widget-priv.h
+++ b/src/spice-widget-priv.h
@@ -24,7 +24,9 @@
 #include <windows.h>
 #endif
 
+#ifndef G_OS_WIN32
 #include <epoxy/egl.h>
+#endif
 
 #include "spice-widget.h"
 #include "spice-common.h"
@@ -125,6 +127,7 @@ struct _SpiceDisplayPrivate {
     int                     x11_accel_denominator;
     int                     x11_threshold;
 #endif
+#ifndef G_OS_WIN32
     struct {
         gboolean            enabled;
         EGLSurface          surface;
@@ -140,6 +143,7 @@ struct _SpiceDisplayPrivate {
         gboolean            call_draw_done;
         SpiceGlScanout      scanout;
     } egl;
+#endif
 };
 
 int      spicex_image_create                 (SpiceDisplay *display);
diff --git a/src/spice-widget.c b/src/spice-widget.c
index a9c7869..e329809 100644
--- a/src/spice-widget.c
+++ b/src/spice-widget.c
@@ -530,6 +530,7 @@ static void grab_notify(SpiceDisplay *display, gboolean was_grabbed)
 }
 
 #if GTK_CHECK_VERSION(3,16,0)
+#ifndef G_OS_WIN32
 static gboolean
 gl_area_render(GtkGLArea *area, GdkGLContext *context, gpointer user_data)
 {
@@ -562,6 +563,7 @@ gl_area_realize(GtkGLArea *area, gpointer user_data)
     }
 }
 #endif
+#endif
 
 static void
 drawing_area_realize(GtkWidget *area, gpointer user_data)
@@ -578,11 +580,13 @@ drawing_area_realize(GtkWidget *area, gpointer user_data)
         g_clear_error(&err);
     }
 
+#ifndef G_OS_WIN32
     if (!spice_egl_realize_display(display, gtk_widget_get_window(area), &err)) {
         g_critical("egl realize failed: %s", err->message);
         g_clear_error(&err);
     }
 #endif
+#endif
 }
 
 static void spice_display_init(SpiceDisplay *display)
@@ -604,6 +608,7 @@ static void spice_display_init(SpiceDisplay *display)
     gtk_stack_set_visible_child(GTK_STACK(widget), area);
 
 #if GTK_CHECK_VERSION(3,16,0)
+#ifndef G_OS_WIN32
     area = gtk_gl_area_new();
     gtk_gl_area_set_required_version(GTK_GL_AREA(area), 3, 2);
     gtk_gl_area_set_auto_render(GTK_GL_AREA(area), false);
@@ -614,6 +619,7 @@ static void spice_display_init(SpiceDisplay *display)
     gtk_stack_add_named(GTK_STACK(widget), area, "gl-area");
     gtk_widget_show_all(widget);
 #endif
+#endif
 
     g_signal_connect(display, "grab-broken-event", G_CALLBACK(grab_broken), NULL);
     g_signal_connect(display, "grab-notify", G_CALLBACK(grab_notify), NULL);
@@ -1182,6 +1188,7 @@ static gboolean do_color_convert(SpiceDisplay *display, GdkRectangle *r)
     return true;
 }
 
+#ifndef G_OS_WIN32
 static void set_egl_enabled(SpiceDisplay *display, bool enabled)
 {
     SpiceDisplayPrivate *d = display->priv;
@@ -1211,6 +1218,7 @@ static void set_egl_enabled(SpiceDisplay *display, bool enabled)
 
     d->egl.enabled = enabled;
 }
+#endif
 
 static gboolean draw_event(GtkWidget *widget, cairo_t *cr, gpointer data)
 {
@@ -1218,11 +1226,13 @@ static gboolean draw_event(GtkWidget *widget, cairo_t *cr, gpointer data)
     SpiceDisplayPrivate *d = display->priv;
     g_return_val_if_fail(d != NULL, false);
 
+#ifndef G_OS_WIN32
     if (d->egl.enabled &&
         g_str_equal(gtk_stack_get_visible_child_name(GTK_STACK(display)), "draw-area")) {
         spice_egl_update_display(display);
         return false;
     }
+#endif
 
     if (d->mark == 0 || d->data == NULL ||
         d->area.width == 0 || d->area.height == 0)
@@ -1826,8 +1836,10 @@ static void size_allocate(GtkWidget *widget, GtkAllocation *conf, gpointer data)
         d->ww = conf->width;
         d->wh = conf->height;
         recalc_geometry(widget);
+#ifndef G_OS_WIN32
         if (d->egl.enabled)
             spice_egl_resize_display(display, conf->width, conf->height);
+#endif
     }
 
     d->mx = conf->x;
@@ -1867,7 +1879,9 @@ static void realize(GtkWidget *widget)
 static void unrealize(GtkWidget *widget)
 {
     spicex_image_destroy(SPICE_DISPLAY(widget));
+#ifndef G_OS_WIN32
     spice_egl_unrealize_display(SPICE_DISPLAY(widget));
+#endif
 
     GTK_WIDGET_CLASS(spice_display_parent_class)->unrealize(widget);
 }
@@ -2250,7 +2264,9 @@ static void invalidate(SpiceChannel *channel,
         .height = h
     };
 
+#ifndef G_OS_WIN32
     set_egl_enabled(display, false);
+#endif
 
     if (!gtk_widget_get_window(GTK_WIDGET(display)))
         return;
@@ -2315,7 +2331,9 @@ static void cursor_set(SpiceCursorChannel *channel,
     } else
         g_warn_if_reached();
 
+#ifndef G_OS_WIN32
     spice_egl_cursor_set(display);
+#endif
     if (d->show_cursor) {
         /* unhide */
         gdk_cursor_unref(d->show_cursor);
@@ -2463,6 +2481,7 @@ static void cursor_reset(SpiceCursorChannel *channel, gpointer data)
     gdk_window_set_cursor(window, NULL);
 }
 
+#ifndef G_OS_WIN32
 static void gl_scanout(SpiceDisplay *display)
 {
     SpiceDisplayPrivate *d = display->priv;
@@ -2502,6 +2521,7 @@ static void gl_draw(SpiceDisplay *display,
         spice_display_gl_draw_done(SPICE_DISPLAY_CHANNEL(d->display));
     }
 }
+#endif
 
 static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data)
 {
@@ -2538,10 +2558,12 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data)
                            primary.stride, primary.shmid, primary.data, display);
             mark(display, primary.marked);
         }
+#ifndef G_OS_WIN32
         spice_g_signal_connect_object(channel, "notify::gl-scanout",
                                       G_CALLBACK(gl_scanout), display, G_CONNECT_SWAPPED);
         spice_g_signal_connect_object(channel, "gl-draw",
                                       G_CALLBACK(gl_draw), display, G_CONNECT_SWAPPED);
+#endif
 
         spice_channel_connect(channel);
         return;
@@ -2693,6 +2715,7 @@ GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay *display)
     g_return_val_if_fail(d != NULL, NULL);
     g_return_val_if_fail(d->display != NULL, NULL);
 
+#ifndef G_OS_WIN32
     if (d->egl.enabled) {
         GdkPixbuf *tmp;
 
@@ -2707,7 +2730,9 @@ GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay *display)
                                        (GdkPixbufDestroyNotify)g_free, NULL);
         pixbuf = gdk_pixbuf_flip(tmp, false);
         g_object_unref(tmp);
-    } else {
+    } else
+#endif
+    {
         guchar *src, *dest;
         int x, y;
 
-- 
2.5.0



More information about the Spice-devel mailing list