qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] e80be9: ui/gtk: don't try to redefine SI pref


From: Peter Maydell
Subject: [Qemu-commits] [qemu/qemu] e80be9: ui/gtk: don't try to redefine SI prefixes
Date: Fri, 15 Jan 2021 12:14:58 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: e80be993b53f27000bb2f224e9540a7c7cf04fae
      
https://github.com/qemu/qemu/commit/e80be993b53f27000bb2f224e9540a7c7cf04fae
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M include/ui/gtk.h
    M ui/gtk.c

  Log Message:
  -----------
  ui/gtk: don't try to redefine SI prefixes

Redefining SI prefixes is always wrong. 1s has per definition
1000ms. Remove the misnamed named constant and replace it with
a comment explaining the frequency to period conversion in two
simple steps. Now you can cancel out the unit mHz in the comment
with the implicit unit mHz in refresh_rate_millihz and see why
the implicit unit ms for update_interval remains.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20201213165724.13418-1-vr_qemu@t-online.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: 0431e369b0bafb17085c8635d8f719f4e01cc4b7
      
https://github.com/qemu/qemu/commit/0431e369b0bafb17085c8635d8f719f4e01cc4b7
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/gtk.c

  Log Message:
  -----------
  ui/gtk: rename variable window to widget

The type of the variable window is GtkWidget. Rename the variable
from window to widget, because windows and widgets are different
things.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20201213165724.13418-2-vr_qemu@t-online.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: 3c4b8f8310ad9fae3c0b36f1e871e2f9b5973550
      
https://github.com/qemu/qemu/commit/3c4b8f8310ad9fae3c0b36f1e871e2f9b5973550
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/gtk.c

  Log Message:
  -----------
  ui/gtk: limit virtual console max update interval

Limit the virtual console maximum update interval to
GUI_REFRESH_INTERVAL_DEFAULT. This papers over a integer
overflow bug in gtk3 on Windows where the reported monitor
refresh frequency can be much smaller than the real refresh
frequency.

The gtk bug report can be found here:
https://gitlab.gnome.org/GNOME/gtk/-/issues/3394

On my Windows 10 system gtk reports a monitor refresh rate of
1.511Hz instead of 60.031Hz and slows down the screen update
rate in qemu to a crawl. Provided you are affected by the gtk
bug on Windows, these are the steps to reproduce the issue:

Start qemu with -display gtk and activate all qemu virtual
consoles and notice the reduced qemu refresh rate. Activating
all virtual consoles is necessary, because gui_update() in
ui/console.c uses the minimum of all display change listeners
update interval and not yet activated virtual consoles report
the default update interval (30ms).

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20201213165724.13418-3-vr_qemu@t-online.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: 0fdc99775c03cd31d5e99c8608113ac00ff6266b
      
https://github.com/qemu/qemu/commit/0fdc99775c03cd31d5e99c8608113ac00ff6266b
  Author: Nikola Pavlica <pavlica.nikola@gmail.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M include/ui/gtk.h
    M ui/gtk.c

  Log Message:
  -----------
  ui/gtk: expose gd_monitor_update_interval

The gd_egl_refresh function, as the name suggests, is responsible for
refreshing displays when using EGL graphics with QEMU's GTK UI. This is
a perfect candidate for a function to update the refresh rate in.

Since gd_monitor_update_interval is inaccessible from the gd_egl_refresh
function, we need to expose/globalize it in the include/ui/gtk.h file.

Signed-off-by: Nikola Pavlica <pavlica.nikola@gmail.com>
Message-Id: <20210114140153.301473-2-pavlica.nikola@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: cab82424f6f246e1ef51bb6b10fbb5114e166aaf
      
https://github.com/qemu/qemu/commit/cab82424f6f246e1ef51bb6b10fbb5114e166aaf
  Author: Nikola Pavlica <pavlica.nikola@gmail.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/gtk-egl.c

  Log Message:
  -----------
  ui/gtk: update monitor interval on egl displays

When running QEMU's GTK UI without EGL or OGL, the
gd_monitor_update_interval function gets executed and the display refresh
rate gets updated accordingly. However, when using EGL or just regular
OGL, the function never gets executed.

Which is why I decided that the function should be in gd_egl_refresh
where the display output gets updated, in the same vain as how it's done
for normal GTK UIs (aka. those without EGL) - in it's display refresh
function.

Since the gd_monitor_update_interval function now is exposed, we are
going to use it to update the refresh rate.

Signed-off-by: Nikola Pavlica <pavlica.nikola@gmail.com>
Message-Id: <20210114140153.301473-3-pavlica.nikola@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: 521534df57cc0bee7b0da9e69fbbaa7149036ddb
      
https://github.com/qemu/qemu/commit/521534df57cc0bee7b0da9e69fbbaa7149036ddb
  Author: Zihao Chang <changzihao1@huawei.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/vnc.c

  Log Message:
  -----------
  vnc: fix unfinalized tlscreds for VncDisplay

In vnc_display_open(), if tls-creds is enabled, do object_ref(object
ref 1->2) for tls-creds. While in vnc_display_close(), object_unparent
sets object ref to 1(2->1) and  unparent the object for root.
Problem:
1. the object can not be found from the objects_root, while the object
is not finalized.
2. the qemu_opts of tls-creds(id: creds0) is not deleted, so new tls
object with the same id(creds0) can not be delete & add.

Signed-off-by: Zihao Chang <changzihao1@huawei.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20210111131911.805-1-changzihao1@huawei.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: 7b5fa0b583c8d54f4bc3be796c4086de39ea09d3
      
https://github.com/qemu/qemu/commit/7b5fa0b583c8d54f4bc3be796c4086de39ea09d3
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M qemu-options.hx
    M ui/vnc.c
    M ui/vnc.h

  Log Message:
  -----------
  ui: add support for remote power control to VNC server

The "XVP" (Xen VNC Proxy) extension defines a mechanism for a VNC client
to issue power control requests to trigger graceful shutdown, reboot, or
hard reset.

This option is not enabled by default, since we cannot assume that users
with VNC access implicitly have administrator access to the guest OS.

Thus is it enabled with a boolean "power-control" option e.g.

   -vnc :1,power-control=on

While, QEMU can easily support shutdown and reset, there's no easy way
to wire up reboot support at this time. In theory it could be done by
issuing a shutdown, followed by a reset, but there's no convenient
wiring for such a pairing in QEMU. It also isn't possible to have the
VNC server directly talk to QEMU guest agent, since the agent chardev is
typically owned by an external mgmt app.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

[ kraxel: rebase to master  ]
[ kraxel: add missing break ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: 5f8679fe46d78acfa5fc43a3fd6b3fe95525d9bd
      
https://github.com/qemu/qemu/commit/5f8679fe46d78acfa5fc43a3fd6b3fe95525d9bd
  Author: Alex Chen <alex.chen@huawei.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/vnc.c

  Log Message:
  -----------
  vnc: Fix a memleak in vnc_display_connect()

Free the 'sioc' when the qio_channel_socket_connect_sync() fails.

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Alex Chen <alex.chen@huawei.com>
Reviewed-by: Li Qiang <liq3ea@gmail.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20201126065702.35095-1-alex.chen@huawei.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>


  Commit: b3c2de9cd5bc0023901e7a4d568dfc5152b6cc4a
      
https://github.com/qemu/qemu/commit/b3c2de9cd5bc0023901e7a4d568dfc5152b6cc4a
  Author: Gerd Hoffmann <kraxel@redhat.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/vnc.c

  Log Message:
  -----------
  vnc: move check into vnc_cursor_define

Move the check whenever a cursor exists into the vnc_cursor_define()
function so callers don't have to do it.

Suggested-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20210112134120.2031837-2-kraxel@redhat.com


  Commit: 9e1632ad07ca49de99da4bb231e9e2f22f2d8df5
      
https://github.com/qemu/qemu/commit/9e1632ad07ca49de99da4bb231e9e2f22f2d8df5
  Author: Gerd Hoffmann <kraxel@redhat.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/vnc.c

  Log Message:
  -----------
  vnc: move initialization to framebuffer_update_request

qemu sends various state info like current cursor shape to newly connected
clients in response to a set_encoding message.  This is not correct according
to the rfb spec.  Send that information in response to a full (incremental=0)
framebuffer update request instead.  Also send the resize information
unconditionally, not only in case of an actual server-side change.

This makes the qemu vnc server conform to the spec and allows clients to
request the complete vnc server state without reconnect.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20210112134120.2031837-3-kraxel@redhat.com


  Commit: 763deea7e906321f8ba048c359f168f60d51c14e
      
https://github.com/qemu/qemu/commit/763deea7e906321f8ba048c359f168f60d51c14e
  Author: Gerd Hoffmann <kraxel@redhat.com>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M ui/vnc.c
    M ui/vnc.h

  Log Message:
  -----------
  vnc: add support for extended desktop resize

The extended desktop resize encoding adds support for (a) clients
sending resize requests to the server, and (b) multihead support.

This patch implements (a).  All resize requests are rejected by qemu.
Qemu can't resize the framebuffer on its own, this is in the hands of
the guest, so all qemu can do is forward the request to the guest.
Should the guest actually resize the framebuffer we can notify the vnc
client later with a separate message.

This requires support in the display device.  Works with virtio-gpu.

https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#extendeddesktopsize-pseudo-encoding

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20210112134120.2031837-4-kraxel@redhat.com


  Commit: 7cb6b97300f0405b4c6856c49bdc33fa3265852f
      
https://github.com/qemu/qemu/commit/7cb6b97300f0405b4c6856c49bdc33fa3265852f
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2021-01-15 (Fri, 15 Jan 2021)

  Changed paths:
    M include/ui/gtk.h
    M qemu-options.hx
    M ui/gtk-egl.c
    M ui/gtk.c
    M ui/vnc.c
    M ui/vnc.h

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/kraxel/tags/ui-20210115-pull-request' 
into staging

ui/gtk: refresh rate fixes.
ui/vnc: add support for desktop resize and power contol.
ui/vnc: misc bugfixes.

# gpg: Signature made Fri 15 Jan 2021 10:24:10 GMT
# gpg:                using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
# gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
# gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/ui-20210115-pull-request:
  vnc: add support for extended desktop resize
  vnc: move initialization to framebuffer_update_request
  vnc: move check into vnc_cursor_define
  vnc: Fix a memleak in vnc_display_connect()
  ui: add support for remote power control to VNC server
  vnc: fix unfinalized tlscreds for VncDisplay
  ui/gtk: update monitor interval on egl displays
  ui/gtk: expose gd_monitor_update_interval
  ui/gtk: limit virtual console max update interval
  ui/gtk: rename variable window to widget
  ui/gtk: don't try to redefine SI prefixes

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


Compare: https://github.com/qemu/qemu/compare/a968a38005bf...7cb6b97300f0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]