aboutsummaryrefslogtreecommitdiffstats
path: root/rfb/SMsgWriter.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'rfb/SMsgWriter.cxx')
-rw-r--r--rfb/SMsgWriter.cxx27
1 files changed, 27 insertions, 0 deletions
diff --git a/rfb/SMsgWriter.cxx b/rfb/SMsgWriter.cxx
index ac743826..067fb117 100644
--- a/rfb/SMsgWriter.cxx
+++ b/rfb/SMsgWriter.cxx
@@ -90,6 +90,33 @@ void SMsgWriter::writeServerCutText(const char* str, int len)
endMsg();
}
+void SMsgWriter::setupCurrentEncoder()
+{
+ unsigned int encoding = cp->currentEncoding();
+
+ // FIXME: Code duplication, see writeRect().
+ if (!encoders[encoding]) {
+ encoders[encoding] = Encoder::createEncoder(encoding, this);
+ assert(encoders[encoding]);
+ }
+
+ encoders[encoding]->setCompressLevel(cp->compressLevel);
+ encoders[encoding]->setQualityLevel(cp->qualityLevel);
+}
+
+int SMsgWriter::getNumRects(const Rect &r)
+{
+ unsigned int encoding = cp->currentEncoding();
+
+ if (!encoders[encoding])
+ setupCurrentEncoder();
+
+ return encoders[encoding]->getNumRects(r);
+}
+
+// FIXME: This functions does not compute the number of rectangles correctly
+// if the Tight encoder is used (but currently that does not matter
+// because this function is never used).
void SMsgWriter::writeFramebufferUpdate(const UpdateInfo& ui, ImageGetter* ig,
Region* updatedRegion)
{