From: Michal Srb Date: Fri, 29 Sep 2017 12:45:33 +0000 (+0200) Subject: VNCServerST: Allow unsetting pixel buffer. X-Git-Tag: v1.8.90~35 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=28d570dc910b7a6bbbd246db0ce3713bc2f4491c;p=tigervnc.git 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. --- 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;