On Mon, Mar 21, 2016 at 4:03 PM, Marc-André Lureau <mlureau@xxxxxxxxxx> wrote: > > > ----- Original Message ----- >> On Mon, Mar 21, 2016 at 3:04 PM, Marc-André Lureau <mlureau@xxxxxxxxxx> >> wrote: >> > Hi >> > >> > ----- Original Message ----- >> >> 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@xxxxxxxxxx> >> >> --- >> >> 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) >> >> >> > >> > This is invalid and will fail to build egl widget on !win32. >> >> You're right. >> Squashing this patch fixes the issue: >> >> diff --git a/src/Makefile.am b/src/Makefile.am >> index 240d256..66ba58b 100644 >> --- a/src/Makefile.am >> +++ b/src/Makefile.am >> @@ -147,10 +147,13 @@ nodist_SPICE_GTK_SOURCES_COMMON = \ >> >> SPICE_GTK_SOURCES_COMMON += \ >> spice-widget-cairo.c \ >> + $(NULL) >> + >> if !OS_WIN32 >> +SPICE_GTK_SOURCES_COMMON += \ >> spice-widget-egl.c \ >> -endif >> $(NULL) >> +endif >> >> Shall I submit a v2? > > Ack with the fix. Pushed, thanks! > >> >> > >> >> 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 >> >> >> >> _______________________________________________ >> >> Spice-devel mailing list >> >> Spice-devel@xxxxxxxxxxxxxxxxxxxxx >> >> https://lists.freedesktop.org/mailman/listinfo/spice-devel >> >> >> _______________________________________________ >> Spice-devel mailing list >> Spice-devel@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/spice-devel >> _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel