From 28d570dc910b7a6bbbd246db0ce3713bc2f4491c Mon Sep 17 00:00:00 2001 From: Michal Srb Date: Fri, 29 Sep 2017 14:45:33 +0200 Subject: [PATCH] VNCServerST: Allow unsetting pixel buffer. Originally calling VNCServertST::setPixelBuffer(PixelBuffer* pb_) with pb_=0 would do nothing. With this change pb will be set to 0 and deferred update timer will be stopped. --- common/rfb/VNCServerST.cxx | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/common/rfb/VNCServerST.cxx b/common/rfb/VNCServerST.cxx index fc649fa1..0008dc41 100644 --- a/common/rfb/VNCServerST.cxx +++ b/common/rfb/VNCServerST.cxx @@ -158,6 +158,7 @@ void VNCServerST::removeSocket(network::Socket* sock) { slog.debug("no authenticated clients - stopping desktop"); desktopStarted = false; desktop->stop(); + stopFrameClock(); } if (comparer) @@ -314,8 +315,11 @@ void VNCServerST::setPixelBuffer(PixelBuffer* pb_, const ScreenSet& layout) screenLayout = layout; if (!pb) { + screenLayout = ScreenSet(); + if (desktopStarted) throw Exception("setPixelBuffer: null PixelBuffer when desktopStarted?"); + return; } @@ -338,18 +342,10 @@ void VNCServerST::setPixelBuffer(PixelBuffer* pb_, const ScreenSet& layout) void VNCServerST::setPixelBuffer(PixelBuffer* pb_) { - ScreenSet layout; - - if (!pb_) { - if (desktopStarted) - throw Exception("setPixelBuffer: null PixelBuffer when desktopStarted?"); - return; - } - - layout = screenLayout; + ScreenSet layout = screenLayout; // Check that the screen layout is still valid - if (!layout.validate(pb_->width(), pb_->height())) { + if (pb_ && !layout.validate(pb_->width(), pb_->height())) { Rect fbRect; ScreenSet::iterator iter, iter_next; -- 2.39.5