<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - When qemu provides two displays, windowed, fullscreen and Kiosk do not show displays in predictable locations."
href="https://bugs.freedesktop.org/show_bug.cgi?id=96511">96511</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>When qemu provides two displays, windowed, fullscreen and Kiosk do not show displays in predictable locations.
</td>
</tr>
<tr>
<th>Product</th>
<td>Spice
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>x86-64 (AMD64)
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux (All)
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>major
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>spice-gtk
</td>
</tr>
<tr>
<th>Assignee</th>
<td>spice-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>david.tyree@cox.net
</td>
</tr></table>
<p>
<div>
<pre>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?</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>