Pushed as a395ac59447dedfb922f997c7c9cff93edd53600 On Thu, 2016-07-28 at 15:51 +0200, Lukas Venhoda wrote: > When using GtkDrawingArea and EGL was not used, it was still initialized. > This produced warning messages on systems where EGL is not supported. > > Move spice_egl_init from drawing_area_realize to gl_scanout. > --- > Fixup > - Forgot to delete GError *err = NULL; > > Changes since v3: > - changed drawing_area_realized variable to gtk_widget_get_realized() > - check whether gl-scanout is defined after realizing drawing-area > -if yes, call spice_display_widget_gl_scanout > > Changes since v2: > - added drawing_area_realized variable > - only enable egl after spice-widget is fully realized > - moved more of the code inside GDK_WINDOWING_X11 guard > > Changes since v1: > - changed from recursive call to if check > - moved set_egl_enabled(display, true); after initialisation is finished > --- > src/spice-widget.c | 36 +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) > > diff --git a/src/spice-widget.c b/src/spice-widget.c > index 9020b07..7c1c756 100644 > --- a/src/spice-widget.c > +++ b/src/spice-widget.c > @@ -568,20 +568,11 @@ drawing_area_realize(GtkWidget *area, gpointer > user_data) > { > #ifdef GDK_WINDOWING_X11 > SpiceDisplay *display = SPICE_DISPLAY(user_data); > - GError *err = NULL; > > - if (!GDK_IS_X11_DISPLAY(gdk_display_get_default())) > - return; > + if (GDK_IS_X11_DISPLAY(gdk_display_get_default()) && > + spice_display_get_gl_scanout(SPICE_DISPLAY_CHANNEL(display->priv- > >display)) != NULL) > + spice_display_widget_gl_scanout(display); > > - if (!spice_egl_init(display, &err)) { > - g_critical("egl init failed: %s", err->message); > - g_clear_error(&err); > - } > - > - 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 > } > > @@ -2662,13 +2653,32 @@ G_GNUC_INTERNAL > void spice_display_widget_gl_scanout(SpiceDisplay *display) > { > SpiceDisplayPrivate *d = display->priv; > + GError *err = NULL; > > SPICE_DEBUG("%s: got scanout", __FUNCTION__); > + > +#ifdef GDK_WINDOWING_X11 > + GtkWidget *area = gtk_stack_get_child_by_name(d->stack, "draw-area"); > + > + if (GDK_IS_X11_DISPLAY(gdk_display_get_default()) && > + !d->egl.context_ready && > + gtk_widget_get_realized(area)) { > + if (!spice_egl_init(display, &err)) { > + g_critical("egl init failed: %s", err->message); > + g_clear_error(&err); > + } > + > + 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 > + > set_egl_enabled(display, true); > > if (d->egl.context_ready) { > const SpiceGlScanout *scanout; > - GError *err = NULL; > > scanout = spice_display_get_gl_scanout(SPICE_DISPLAY_CHANNEL(d- > >display)); > /* should only be called when the display has a scanout */ > -- > 2.7.4 > > _______________________________________________ > 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