Hi ----- Original Message ----- > 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. > --- > 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 | 35 +++++++++++++++++++++++------------ > 1 file changed, 23 insertions(+), 12 deletions(-) > > diff --git a/src/spice-widget.c b/src/spice-widget.c > index 9020b07..27169ff 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,8 +2653,28 @@ G_GNUC_INTERNAL > void spice_display_widget_gl_scanout(SpiceDisplay *display) > { > SpiceDisplayPrivate *d = display->priv; > + GError *err = NULL; > To avoid unused variables, you should move it... > 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)) { here > + 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) { > -- other than that, looks good, ack > 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