From: Pierre Ossman Date: Mon, 17 Mar 2014 13:42:10 +0000 (+0100) Subject: Remove magic JPEG variables from ConnParams X-Git-Tag: v1.3.90~48^2~8 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a22459d356be884aca3f4a1974de3e005da8ce7c;p=tigervnc.git Remove magic JPEG variables from ConnParams 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. --- diff --git a/common/rfb/CMsgWriter.cxx b/common/rfb/CMsgWriter.cxx index 0ebd33e7..9ee7a02f 100644 --- a/common/rfb/CMsgWriter.cxx +++ b/common/rfb/CMsgWriter.cxx @@ -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); diff --git a/common/rfb/ConnParams.cxx b/common/rfb/ConnParams.cxx index be9d48c0..6fd6668e 100644 --- a/common/rfb/ConnParams.cxx +++ b/common/rfb/ConnParams.cxx @@ -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; } diff --git a/common/rfb/ConnParams.h b/common/rfb/ConnParams.h index 68e20754..43267ffd 100644 --- a/common/rfb/ConnParams.h +++ b/common/rfb/ConnParams.h @@ -91,9 +91,7 @@ namespace rfb { bool supportsFence; bool supportsContinuousUpdates; - bool customCompressLevel; int compressLevel; - bool noJpeg; int qualityLevel; int fineQualityLevel; int subsampling; diff --git a/vncviewer/CConn.cxx b/vncviewer/CConn.cxx index c5cd4a45..789cf09e 100644 --- a/vncviewer/CConn.cxx +++ b/vncviewer/CConn.cxx @@ -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;