Custom compression level and JPEG on/off are not inherent parts of the protocol negotiation so they do not belong in ConnParams. Let the UI frontend handle such things instead.tags/v1.3.90
@@ -114,9 +114,9 @@ void CMsgWriter::writeSetEncodings(int preferredEncoding, bool useCopyRect) | |||
} | |||
} | |||
if (cp->customCompressLevel && cp->compressLevel >= 0 && cp->compressLevel <= 9) | |||
if (cp->compressLevel >= 0 && cp->compressLevel <= 9) | |||
encodings[nEncodings++] = pseudoEncodingCompressLevel0 + cp->compressLevel; | |||
if (!cp->noJpeg && cp->qualityLevel >= 0 && cp->qualityLevel <= 9) | |||
if (cp->qualityLevel >= 0 && cp->qualityLevel <= 9) | |||
encodings[nEncodings++] = pseudoEncodingQualityLevel0 + cp->qualityLevel; | |||
writeSetEncodings(nEncodings, encodings); |
@@ -36,8 +36,7 @@ ConnParams::ConnParams() | |||
supportsDesktopRename(false), supportsLastRect(false), | |||
supportsSetDesktopSize(false), supportsFence(false), | |||
supportsContinuousUpdates(false), | |||
customCompressLevel(false), compressLevel(2), | |||
noJpeg(false), qualityLevel(-1), fineQualityLevel(-1), | |||
compressLevel(2), qualityLevel(-1), fineQualityLevel(-1), | |||
subsampling(subsampleUndefined), name_(0), | |||
currentEncoding_(encodingRaw), verStrPos(0) | |||
{ | |||
@@ -95,9 +94,7 @@ void ConnParams::setEncodings(int nEncodings, const rdr::S32* encodings) | |||
supportsExtendedDesktopSize = false; | |||
supportsLocalXCursor = false; | |||
supportsLastRect = false; | |||
customCompressLevel = false; | |||
compressLevel = -1; | |||
noJpeg = true; | |||
qualityLevel = -1; | |||
fineQualityLevel = -1; | |||
subsampling = subsampleUndefined; | |||
@@ -167,10 +164,4 @@ void ConnParams::setEncodings(int nEncodings, const rdr::S32* encodings) | |||
if (Encoder::supported(encodings[i])) | |||
currentEncoding_ = encodings[i]; | |||
} | |||
if (compressLevel != -1) | |||
customCompressLevel = true; | |||
if ((qualityLevel != -1) || (fineQualityLevel != -1) || | |||
(subsampling != subsampleUndefined)) | |||
noJpeg = false; | |||
} |
@@ -91,9 +91,7 @@ namespace rfb { | |||
bool supportsFence; | |||
bool supportsContinuousUpdates; | |||
bool customCompressLevel; | |||
int compressLevel; | |||
bool noJpeg; | |||
int qualityLevel; | |||
int fineQualityLevel; | |||
int subsampling; |
@@ -89,11 +89,15 @@ CConn::CConn(const char* vncServerName, network::Socket* socket=NULL) | |||
cp.supportsExtendedDesktopSize = true; | |||
cp.supportsDesktopRename = true; | |||
cp.customCompressLevel = customCompressLevel; | |||
cp.compressLevel = compressLevel; | |||
if (customCompressLevel) | |||
cp.compressLevel = compressLevel; | |||
else | |||
cp.compressLevel = -1; | |||
cp.noJpeg = noJpeg; | |||
cp.qualityLevel = qualityLevel; | |||
if (!noJpeg) | |||
cp.qualityLevel = qualityLevel; | |||
else | |||
cp.qualityLevel = -1; | |||
if(sock == NULL) { | |||
try { | |||
@@ -619,16 +623,19 @@ void CConn::handleOptions(void *data) | |||
if (encNum != -1) | |||
self->currentEncoding = encNum; | |||
self->cp.qualityLevel = qualityLevel; | |||
} | |||
self->cp.supportsLocalCursor = true; | |||
self->cp.customCompressLevel = customCompressLevel; | |||
self->cp.compressLevel = compressLevel; | |||
if (customCompressLevel) | |||
self->cp.compressLevel = compressLevel; | |||
else | |||
self->cp.compressLevel = -1; | |||
self->cp.noJpeg = noJpeg; | |||
if (!noJpeg && !autoSelect) | |||
self->cp.qualityLevel = qualityLevel; | |||
else | |||
self->cp.qualityLevel = -1; | |||
self->encodingChange = true; | |||