diff mbox series

[v3,7/9] h264: do not reduce vnc update speed while we have an active h264 stream

Message ID 20250418112953.1744442-8-dietmar@proxmox.com (mailing list archive)
State New
Headers show
Series Add VNC Open H.264 Encoding | expand

Commit Message

Dietmar Maurer April 18, 2025, 11:29 a.m. UTC
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
---
 ui/vnc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/ui/vnc.c b/ui/vnc.c
index feab4c0043..6db03a1550 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -3222,6 +3222,7 @@  static void vnc_refresh(DisplayChangeListener *dcl)
     VncDisplay *vd = container_of(dcl, VncDisplay, dcl);
     VncState *vs, *vn;
     int has_dirty, rects = 0;
+    bool keep_dirty = false;
 
     if (QTAILQ_EMPTY(&vd->clients)) {
         update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_MAX);
@@ -3249,6 +3250,9 @@  static void vnc_refresh(DisplayChangeListener *dcl)
                     vs->h264->keep_dirty--;
                 }
             }
+            if (vs->h264->keep_dirty > 0) {
+                keep_dirty = true;
+            }
         }
 
         int count = vnc_update_client(vs, client_dirty);
@@ -3266,7 +3270,7 @@  static void vnc_refresh(DisplayChangeListener *dcl)
         /* vs might be free()ed here */
     }
 
-    if (has_dirty && rects) {
+    if ((has_dirty && rects) || keep_dirty) {
         vd->dcl.update_interval /= 2;
         if (vd->dcl.update_interval < VNC_REFRESH_INTERVAL_BASE) {
             vd->dcl.update_interval = VNC_REFRESH_INTERVAL_BASE;