[PATCH 0/2] ui/dbus: send a Scanout before the first Update of a new surface

Christian Quante posted 2 patches 1 day, 15 hours ago
There is a newer version of this series
tests/qtest/dbus-display-test.c | 162 +++++++++++++++++++++++++++++---
ui/dbus-listener.c              |   8 +-
2 files changed, 155 insertions(+), 15 deletions(-)
[PATCH 0/2] ui/dbus: send a Scanout before the first Update of a new surface
Posted by Christian Quante 1 day, 15 hours ago
Without OpenGL and without shared memory, QEMU does not send a Scanout
to a D-Bus display client when VGA text mode changes its size.  The
client gets only Updates for the rows of the new size, although
ui/dbus-display1.xml says that Update is only called after a Scanout
call.

Patch 1 sends a Scanout of the whole surface at the first update after
a surface switch.  With shared memory, dbus_scanout_map() already does
the same with ScanoutMap.  Patch 2 adds a test case for this to
dbus-display-test.

Tests, each with QEMU master (8967b2fe1b) and with the patches:

 - The text mode setup of Windows NT 4.0 Workstation (German CD) with
   cirrus-vga and TCG, and a D-Bus display client of my own (not
   public).  This client follows the Width and Height properties of the
   Console, and its new buffer starts black when they change.  Every 3
   seconds, I saved its picture and a screendump, and compared them.
   After about 21 seconds, the setup changes from 720x400 to 720x396.
   In the pictures from 3 seconds after the change to the end of the
   run:

     master    177660 and 83700 of the 285120 pixels (two runs) are
               black in the client, where the screendump shows the
               blue background.  The client got no Scanout of 720x396.
     patches   The picture of the client is the same as the screendump
               (one run).  The client got a Scanout of 720x396.

 - dbus-display-test: with the series, all six test cases pass.  With
   patch 2 alone on master, the new test case text-resize fails
   ("Update" == "Scanout").  With patch 1 alone, the five other test
   cases pass.

checkpatch.pl is clean.

Christian Quante (2):
  ui/dbus: send a Scanout before the first Update of a new surface
  tests/qtest/dbus-display-test: check the Scanout after a text resize

 tests/qtest/dbus-display-test.c | 162 +++++++++++++++++++++++++++++---
 ui/dbus-listener.c              |   8 +-
 2 files changed, 155 insertions(+), 15 deletions(-)

-- 
2.53.0
Re: [PATCH 0/2] ui/dbus: send a Scanout before the first Update of a new surface
Posted by marcandre.lureau@redhat.com 1 day, 8 hours ago
On Thu, 22 Oct 2026 07:35:31 +0200, Christian Quante <christian@quante.one> wrote:
> ui/dbus: send a Scanout before the first Update of a new surface
> 
> Without OpenGL and without shared memory, QEMU does not send a Scanout
> to a D-Bus display client when VGA text mode changes its size.  The
> client gets only Updates for the rows of the new size, although
> ui/dbus-display1.xml says that Update is only called after a Scanout
> call.
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>