|
|
@ -26,6 +26,7 @@
|
|
|
|
#include <rfb/ledStates.h>
|
|
|
|
#include <rfb/ledStates.h>
|
|
|
|
#include <rfb/ConnParams.h>
|
|
|
|
#include <rfb/ConnParams.h>
|
|
|
|
#include <rfb/ServerCore.h>
|
|
|
|
#include <rfb/ServerCore.h>
|
|
|
|
|
|
|
|
#include <rfb/SMsgHandler.h>
|
|
|
|
#include <rfb/util.h>
|
|
|
|
#include <rfb/util.h>
|
|
|
|
|
|
|
|
|
|
|
|
using namespace rfb;
|
|
|
|
using namespace rfb;
|
|
|
@ -43,7 +44,7 @@ ConnParams::ConnParams()
|
|
|
|
supportsContinuousUpdates(false),
|
|
|
|
supportsContinuousUpdates(false),
|
|
|
|
compressLevel(2), qualityLevel(-1), fineQualityLevel(-1),
|
|
|
|
compressLevel(2), qualityLevel(-1), fineQualityLevel(-1),
|
|
|
|
subsampling(subsampleUndefined), name_(0), verStrPos(0),
|
|
|
|
subsampling(subsampleUndefined), name_(0), verStrPos(0),
|
|
|
|
ledState_(ledUnknown)
|
|
|
|
ledState_(ledUnknown), shandler(NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
memset(kasmPassed, 0, KASM_NUM_SETTINGS);
|
|
|
|
memset(kasmPassed, 0, KASM_NUM_SETTINGS);
|
|
|
|
setName("");
|
|
|
|
setName("");
|
|
|
@ -124,6 +125,8 @@ void ConnParams::setEncodings(int nEncodings, const rdr::S32* encodings)
|
|
|
|
encodings_.clear();
|
|
|
|
encodings_.clear();
|
|
|
|
encodings_.insert(encodingRaw);
|
|
|
|
encodings_.insert(encodingRaw);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool canChangeSettings = !shandler || shandler->canChangeKasmSettings();
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = nEncodings-1; i >= 0; i--) {
|
|
|
|
for (int i = nEncodings-1; i >= 0; i--) {
|
|
|
|
switch (encodings[i]) {
|
|
|
|
switch (encodings[i]) {
|
|
|
|
case encodingCopyRect:
|
|
|
|
case encodingCopyRect:
|
|
|
@ -184,11 +187,11 @@ void ConnParams::setEncodings(int nEncodings, const rdr::S32* encodings)
|
|
|
|
subsampling = subsample16X;
|
|
|
|
subsampling = subsample16X;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case pseudoEncodingPreferBandwidth:
|
|
|
|
case pseudoEncodingPreferBandwidth:
|
|
|
|
if (!rfb::Server::ignoreClientSettingsKasm)
|
|
|
|
if (!rfb::Server::ignoreClientSettingsKasm && canChangeSettings)
|
|
|
|
Server::preferBandwidth.setParam();
|
|
|
|
Server::preferBandwidth.setParam();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case pseudoEncodingMaxVideoResolution:
|
|
|
|
case pseudoEncodingMaxVideoResolution:
|
|
|
|
if (!rfb::Server::ignoreClientSettingsKasm)
|
|
|
|
if (!rfb::Server::ignoreClientSettingsKasm && canChangeSettings)
|
|
|
|
kasmPassed[KASM_MAX_VIDEO_RESOLUTION] = true;
|
|
|
|
kasmPassed[KASM_MAX_VIDEO_RESOLUTION] = true;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -205,7 +208,7 @@ void ConnParams::setEncodings(int nEncodings, const rdr::S32* encodings)
|
|
|
|
encodings[i] <= pseudoEncodingFineQualityLevel100)
|
|
|
|
encodings[i] <= pseudoEncodingFineQualityLevel100)
|
|
|
|
fineQualityLevel = encodings[i] - pseudoEncodingFineQualityLevel0;
|
|
|
|
fineQualityLevel = encodings[i] - pseudoEncodingFineQualityLevel0;
|
|
|
|
|
|
|
|
|
|
|
|
if (!rfb::Server::ignoreClientSettingsKasm) {
|
|
|
|
if (!rfb::Server::ignoreClientSettingsKasm && canChangeSettings) {
|
|
|
|
if (encodings[i] >= pseudoEncodingJpegVideoQualityLevel0 &&
|
|
|
|
if (encodings[i] >= pseudoEncodingJpegVideoQualityLevel0 &&
|
|
|
|
encodings[i] <= pseudoEncodingJpegVideoQualityLevel9)
|
|
|
|
encodings[i] <= pseudoEncodingJpegVideoQualityLevel9)
|
|
|
|
Server::jpegVideoQuality.setParam(encodings[i] - pseudoEncodingJpegVideoQualityLevel0);
|
|
|
|
Server::jpegVideoQuality.setParam(encodings[i] - pseudoEncodingJpegVideoQualityLevel0);
|
|
|
|