[Bug 96511] New: When qemu provides two displays, windowed, fullscreen and Kiosk do not show displays in predictable locations.

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Jun 13 17:36:44 UTC 2016


https://bugs.freedesktop.org/show_bug.cgi?id=96511

            Bug ID: 96511
           Summary: When qemu provides two displays, windowed, fullscreen
                    and Kiosk do not show displays in predictable
                    locations.
           Product: Spice
           Version: unspecified
          Hardware: x86-64 (AMD64)
                OS: Linux (All)
            Status: NEW
          Severity: major
          Priority: medium
         Component: spice-gtk
          Assignee: spice-bugs at lists.freedesktop.org
          Reporter: david.tyree at cox.net

With a QEMU setting of
 -vga none \ 
 -device qxl,id=video0,ram_size=67108864,bus=pci.0,addr=0x02\
 -device qxl,id=video1,ram_size=67108864,bus=pci.0,addr=0x0a 

spice-view is a non-ui spice viewer I am customizing from virtual-viewer.

The expected order and assignment is:
** (spice-view:2084): WARNING **: New display: channel [ 0 ] monitorid [0]
** (spice-view:2084): WARNING **: New display: channel [ 0 ] monitorid [1]
** (spice-view:2084): WARNING **: New display: channel [ 0 ] monitorid [2]
** (spice-view:2084): WARNING **: New display: channel [ 0 ] monitorid [3]
** (spice-view:2084): WARNING **: New display: channel [ 1 ] monitorid [0]
** (spice-view:2084): WARNING **: New display: channel [ 1 ] monitorid [1]
** (spice-view:2084): WARNING **: New display: channel [ 1 ] monitorid [2]
** (spice-view:2084): WARNING **: New display: channel [ 1 ] monitorid [3]

All the high order of displays [1,2,3] fail in in the gtk lib, viewer or both.

The order of displays, restarting the viewer, 
  ** (spice-view:1830): WARNING **: New display: channel [ 0 ] monitorid [1]
  ** (spice-view:1830): WARNING **: New display: channel [ 1 ] monitorid [0]
restart
  ** (spice-view:1830): WARNING **: New display: channel [ 0 ] monitorid [1]
  ** (spice-view:1830): WARNING **: New display: channel [ 1 ] monitorid [0]
restart
  ** (spice-view:1830): WARNING **: New display: channel [ 0 ] monitorid [1]
  ** (spice-view:1830): WARNING **: New display: channel [ 1 ] monitorid [0]
....

The order of display assignments are inverted like this:
  ** (spice-view:1830): WARNING **: New display: channel [ 1 ] monitorid [0]
  ** (spice-view:1830): WARNING **: New display: channel [ 0 ] monitorid [0]
or back again.

It results in wrong assignment in order of assignment of displays. On two
displays in full scree or kiosk, this results in a swap of expected results if
[0,0] / qxl card0 is always expected to be primary display, and [1,0] secondary
display (hidden if unavailable) at qxl card1.

This also causes inversion in a windowed mode where it is not predictable which
display will be on top, an annoyance, but not a "failure" like fullscreen or
Kiosk.


Looking through the code I see the check in both the spice-wigdet.c "static
gint get_display_id(SpiceDisplay *display)" and  virt-viewer
"virt_viewer_display_spice_new". That both use a check like this (respectivly):

    /* supported monitor_id only with display channel #0 */
    if (d->channel_id == 0 && d->monitor_id >= 0)
        return d->monitor_id;
and

    // We don't allow monitorid != 0 && channelid != 0
    g_return_val_if_fail(channelid != 0 ||  monitorid != 0, NULL);

This made me wonder how the second display [1,0] is recognized by the widget,
the viewer does not seem to care.

I cannot tell how to force location or priority of an expected channel's
display to the proper window and prevent the inversion.  

 Where should I look to solve the inversion?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-bugs/attachments/20160613/f532e8b6/attachment.html>


More information about the spice-bugs mailing list