Skip to content

Commit

Permalink
Use compressionLevel in ZRLEEncoder
Browse files Browse the repository at this point in the history
This change makes the ZRLEEncoder respect a client's desired
compressionLevel. The ZlibLevel option is marked deprecated and removed
from the manpages.
  • Loading branch information
adamhalim committed Nov 20, 2023
1 parent 9abf88e commit ef00173
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 14 deletions.
17 changes: 15 additions & 2 deletions common/rfb/ZRLEEncoder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,23 @@
#include <rfb/SConnection.h>
#include <rfb/ZRLEEncoder.h>
#include <rfb/Configuration.h>
#include <rfb/LogWriter.h>

using namespace rfb;

IntParameter zlibLevel("ZlibLevel","Zlib compression level",-1);
static LogWriter vlog("ZRLEEncoder");

IntParameter zlibLevel("ZlibLevel","[DEPRECATED] Zlib compression level",-1);

ZRLEEncoder::ZRLEEncoder(SConnection* conn)
: Encoder(conn, encodingZRLE, EncoderPlain, 127),
zos(0,zlibLevel), mos(129*1024)
zos(0, 2), mos(129*1024)
{
if (zlibLevel != -1) {
vlog.info("Warning: The ZlibLevel option is deprecated and is "
"ignored by the server. The compression level can be set "
"by the client instead.");
}
zos.setUnderlying(&mos);
}

Expand All @@ -50,6 +58,11 @@ bool ZRLEEncoder::isSupported()
return conn->client.supportsEncoding(encodingZRLE);
}

void ZRLEEncoder::setCompressLevel(int level)
{
zos.setCompressionLevel(level);
}

void ZRLEEncoder::writeRect(const PixelBuffer* pb, const Palette& palette)
{
int x, y;
Expand Down
2 changes: 2 additions & 0 deletions common/rfb/ZRLEEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ namespace rfb {

virtual bool isSupported();

virtual void setCompressLevel(int level);

virtual void writeRect(const PixelBuffer* pb, const Palette& palette);
virtual void writeSolidRect(int width, int height,
const PixelFormat& pf,
Expand Down
6 changes: 0 additions & 6 deletions unix/x0vncserver/x0vncserver.man
Original file line number Diff line number Diff line change
Expand Up @@ -287,12 +287,6 @@ Use MIT-SHM extension if available. Using that extension accelerates reading
the screen. Default is on.
.
.TP
.B \-ZlibLevel \fIlevel\fP
Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
Acceptable values are between 0 and 9. Default is to use the standard
compression level provided by the \fBzlib\fP(3) compression library.
.
.TP
.B \-ImprovedHextile
Use improved compression algorithm for Hextile encoding which achieves better
compression ratios by the cost of using slightly more CPU time. Default is
Expand Down
6 changes: 0 additions & 6 deletions unix/xserver/hw/vnc/Xvnc.man
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,6 @@ be either \fB0\fP (off), \fB1\fP (always) or \fB2\fP (auto). Default is
\fB2\fP.
.
.TP
.B \-ZlibLevel \fIlevel\fP
Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
Acceptable values are between 0 and 9. Default is to use the standard
compression level provided by the \fBzlib\fP(3) compression library.
.
.TP
.B \-ImprovedHextile
Use improved compression algorithm for Hextile encoding which achieves better
compression ratios by the cost of using slightly more CPU time. Default is
Expand Down

0 comments on commit ef00173

Please sign in to comment.