Tight encoding support, except for rfb/SMsgWriterV3.cxx
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@164 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfb/SMsgWriter.cxx b/rfb/SMsgWriter.cxx
index ac74382..067fb11 100644
--- a/rfb/SMsgWriter.cxx
+++ b/rfb/SMsgWriter.cxx
@@ -90,6 +90,33 @@
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)
{