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.
diff --git a/common/rfb/tightDecode.h b/common/rfb/tightDecode.h
index a596311..53dbba7 100644
--- a/common/rfb/tightDecode.h
+++ b/common/rfb/tightDecode.h
@@ -77,7 +77,7 @@
} else {
pix = is->READ_PIXEL();
}
- handler->fillRect(r, pix);
+ pb->fillRect(serverpf, r, pix);
return;
}
@@ -153,7 +153,7 @@
PIXEL_T *buf;
int stride = r.width();
- if (directDecode) buf = (PIXEL_T *)handler->getRawBufferRW(r, &stride);
+ if (directDecode) buf = (PIXEL_T *)pb->getBufferRW(r, &stride);
else buf = (PIXEL_T *)conn->reader()->getImageBuf(r.area());
if (palSize == 0) {
@@ -225,8 +225,8 @@
}
}
- if (directDecode) handler->releaseRawBuffer(r);
- else handler->imageRect(r, buf);
+ if (directDecode) pb->commitBufferRW(r);
+ else pb->imageRect(serverpf, r, buf);
delete [] netbuf;
@@ -253,9 +253,9 @@
// We always use direct decoding with JPEG images
int stride;
- rdr::U8 *buf = handler->getRawBufferRW(r, &stride);
+ rdr::U8 *buf = pb->getBufferRW(r, &stride);
jd.decompress(netbuf, compressedLen, buf, stride, r, clientpf);
- handler->releaseRawBuffer(r);
+ pb->commitBufferRW(r);
delete [] netbuf;
}