aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2014-03-17 14:42:10 +0100
committerPierre Ossman <ossman@cendio.se>2014-07-07 13:27:09 +0200
commita22459d356be884aca3f4a1974de3e005da8ce7c (patch)
treeaab8e831fd93b7038cfd1b25ed85645578d68d42
parent6bcf137779ee884f27d53d667558524d3413812e (diff)
downloadtigervnc-a22459d356be884aca3f4a1974de3e005da8ce7c.tar.gz
tigervnc-a22459d356be884aca3f4a1974de3e005da8ce7c.zip
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.
-rw-r--r--common/rfb/CMsgWriter.cxx4
-rw-r--r--common/rfb/ConnParams.cxx11
-rw-r--r--common/rfb/ConnParams.h2
-rw-r--r--vncviewer/CConn.cxx25
4 files changed, 19 insertions, 23 deletions
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;