summaryrefslogtreecommitdiffstats
path: root/common/rfb/RREDecoder.cxx
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2014-07-09 16:44:11 +0200
committerPierre Ossman <ossman@cendio.se>2014-07-14 16:03:41 +0200
commit0c9bd4b0ba28f5aab8b1f3e2eb8d83e01915e2b8 (patch)
tree500f61ee230d30fa1f8e955214c698e86b69e2f4 /common/rfb/RREDecoder.cxx
parent126e56420e47d72cc950d03976ee57d1efda436e (diff)
downloadtigervnc-0c9bd4b0ba28f5aab8b1f3e2eb8d83e01915e2b8.tar.gz
tigervnc-0c9bd4b0ba28f5aab8b1f3e2eb8d83e01915e2b8.zip
Use PixelBuffer objects as the interface for encoders and decoders
This avoid a lot of unnecessary middle men. This also pushes the responsibility for pixel format conversion into the encoders and decoders. The new bufferFromBuffer() is used for direct conversion, rather than PixelTransformer/TransImageGetter.
Diffstat (limited to 'common/rfb/RREDecoder.cxx')
-rw-r--r--common/rfb/RREDecoder.cxx13
1 files changed, 7 insertions, 6 deletions
diff --git a/common/rfb/RREDecoder.cxx b/common/rfb/RREDecoder.cxx
index ecc97136..8dc391a8 100644
--- a/common/rfb/RREDecoder.cxx
+++ b/common/rfb/RREDecoder.cxx
@@ -17,7 +17,7 @@
*/
#include <rfb/CMsgReader.h>
#include <rfb/CConnection.h>
-#include <rfb/CMsgHandler.h>
+#include <rfb/PixelBuffer.h>
#include <rfb/RREDecoder.h>
using namespace rfb;
@@ -40,12 +40,13 @@ RREDecoder::~RREDecoder()
{
}
-void RREDecoder::readRect(const Rect& r, CMsgHandler* handler)
+void RREDecoder::readRect(const Rect& r, ModifiablePixelBuffer* pb)
{
rdr::InStream* is = conn->getInStream();
- switch (conn->cp.pf().bpp) {
- case 8: rreDecode8 (r, is, handler); break;
- case 16: rreDecode16(r, is, handler); break;
- case 32: rreDecode32(r, is, handler); break;
+ const PixelFormat& pf = conn->cp.pf();
+ switch (pf.bpp) {
+ case 8: rreDecode8 (r, is, pf, pb); break;
+ case 16: rreDecode16(r, is, pf, pb); break;
+ case 32: rreDecode32(r, is, pf, pb); break;
}
}