[Spice-devel] [spice-gtk PATCH] Handle single headed monitors that have a non-zero x, y config offset
Marc-André Lureau
marcandre.lureau at gmail.com
Mon Jun 13 17:09:29 UTC 2016
Hi
On Mon, Jun 22, 2015 at 3:15 PM, Christophe Fergeau <cfergeau at redhat.com> wrote:
> On Mon, Jun 22, 2015 at 03:03:24PM +0200, Christophe Fergeau wrote:
>> On Thu, Jun 18, 2015 at 07:14:13PM -0400, sstutsma at redhat.com wrote:
>> > From: Sandy Stutsman <sstutsma at redhat.com>
>> >
>> > Each monitor on a Windows guest is represented as a separate, single-headed
>> > device with its own framebuffer. When there are multiple monitors, all
>> > monitors but one will have a non-zero xy config position. But even in
>> > these cases the whole area (frame-buffer) of each monitor should be
>> > updated.
>> >
>> > Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1202419
>> > ---
>> > src/spice-widget.c | 7 ++++++-
>> > 1 file changed, 6 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/src/spice-widget.c b/src/spice-widget.c
>> > index 260fda5..f1e1508 100644
>> > --- a/src/spice-widget.c
>> > +++ b/src/spice-widget.c
>> > @@ -293,7 +293,12 @@ static void update_monitor_area(SpiceDisplay *display)
>> > goto whole;
>> > }
>> >
>> > - update_area(display, c->x, c->y, c->width, c->height);
>> > + /* If only one head on this monitor, update the whole area */
>> > + if(monitors->len == 1) {
>> > + update_area(display, 0, 0, c->width, c->height);
>> > + } else {
>> > + update_area(display, c->x, c->y, c->width, c->height);
>> > + }
>>
>> What happens if c->x != 0 and c->y != 0 in the single monitor case and
>> we don't force these to 0?
>
> Ah, just looked at update_area which expects the primary to start at (0,
> 0)
>
That's not compatible with virgl, which may use a monitor scanout
different than +0+0 (in multimonitor for ex, but one monitor per
display channel).
I could probably workaround the issue with an extra test such as if
(monitors->len == 1 && !d->egl.enabled)... But that condition looks
wrong to me anyway.
My understanding is that there is some confusing between monitor
configuration position (the monitor config on main channel), and the
scanout/primary position (the monitor config on display channel).
Imho, the fix should be on server or guest/driver side, it shouldn't
use a display monitor config with a scanout offset if there is none to
be applied by the client.
What do you think?
--
Marc-André Lureau
More information about the Spice-devel
mailing list