Hi ----- Original Message ----- > Hi, > > as we discussed, I prefer this patch to go in after 9/8 to avoid some > incorrect resizes Ok > > On Tue, 2016-03-22 at 13:57 +0100, Marc-André Lureau wrote: > > If egl display is enabled, use GL scanout geometry to check > > intersection > > with the monitor area. This solves displaying GL display without > > software canvas. > What are the issues? There is no interesection with monitor area & missing primary canvas, so d->area is not set and gl update display fails. > > Pavel > > > > Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > --- > > src/spice-widget.c | 41 ++++++++++++++++++++++++++++------------- > > 1 file changed, 28 insertions(+), 13 deletions(-) > > > > diff --git a/src/spice-widget.c b/src/spice-widget.c > > index e16126a..4b7e202 100644 > > --- a/src/spice-widget.c > > +++ b/src/spice-widget.c > > @@ -2190,32 +2190,47 @@ static void update_area(SpiceDisplay > > *display, > > gint x, gint y, gint width, gint height) > > { > > SpiceDisplayPrivate *d = display->priv; > > - GdkRectangle primary = { > > - .x = 0, > > - .y = 0, > > - .width = d->width, > > - .height = d->height > > - }; > > - GdkRectangle area = { > > + GdkRectangle primary; > > + > > + SPICE_DEBUG("update area +%d+%d %dx%d", x, y, width, height); > > + d->area = (GdkRectangle) { > > .x = x, > > .y = y, > > .width = width, > > .height = height > > }; > > > > - SPICE_DEBUG("update area, primary: %dx%d, area: +%d+%d %dx%d", > > d->width, d->height, area.x, area.y, area.width, area.height); > > +#ifndef G_OS_WIN32 > > + if (d->egl.enabled) { > > + primary = (GdkRectangle) { > > + .width = d->egl.scanout.width, > > + .height = d->egl.scanout.height > > + }; > > + } else > > +#endif > > + { > > + primary = (GdkRectangle) { > > + .width = d->width, > > + .height = d->height > > + }; > > + } > > > > - if (!gdk_rectangle_intersect(&primary, &area, &area)) { > > + SPICE_DEBUG("primary: %dx%d", primary.width, primary.height); > > + if (!gdk_rectangle_intersect(&primary, &d->area, &d->area)) { > > SPICE_DEBUG("The monitor area is not intersecting primary > > surface"); > > memset(&d->area, '\0', sizeof(d->area)); > > set_monitor_ready(display, false); > > return; > > } > > > > - spicex_image_destroy(display); > > - d->area = area; > > - if (gtk_widget_get_realized(GTK_WIDGET(display))) > > - update_image(display); > > +#ifndef G_OS_WIN32 > > + if (!d->egl.enabled) > > +#endif > > + { > > + spicex_image_destroy(display); > > + if (gtk_widget_get_realized(GTK_WIDGET(display))) > > + update_image(display); > > + } > > > > update_size_request(display); > > > _______________________________________________ > 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