mirror of
https://github.com/Ylianst/MeshCommander
synced 2025-12-06 06:03:20 +00:00
Downscaling improvements.
This commit is contained in:
@@ -47,7 +47,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
||||
obj.kvmExt = {};
|
||||
obj.kvmExtChanged = null;
|
||||
obj.useZLib = false;
|
||||
obj.decimation = false;
|
||||
obj.decimationMode = 0; // 0 = Don't set, 1 = Disable, 2 = Automatic, 3 = Enabled
|
||||
obj.graymode = false;
|
||||
obj.lowcolor = false;
|
||||
// ###END###{DesktopInband}
|
||||
@@ -200,14 +200,20 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
||||
// ###END###{DesktopFocus}
|
||||
// ###BEGIN###{DesktopInband}
|
||||
if (obj.kvmExtChanged != null) {
|
||||
obj.sendKvmExtCmd(2, (obj.decimation === true) ? 3 : 2); // Set Decimation State (1 = Disable, 2 = Auto, 3 = Always)
|
||||
if (obj.decimationMode > 0) { obj.sendKvmExtCmd(2, obj.decimationMode); } // Set Decimation Mode (0 = Do not set, 1 = Disable, 2 = Auto, 3 = Enable)
|
||||
obj.sendKvmExtCmd(4, (obj.useZLib === true) ? 1 : 0); // Set ZLib state (0 = Disabled, 1 = Enabled)
|
||||
}
|
||||
// ###END###{DesktopInband}
|
||||
_SendRefresh();
|
||||
|
||||
if (obj.onScreenSizeChange != null) { obj.onScreenSizeChange(obj, obj.ScreenWidth, obj.ScreenHeight); }
|
||||
if (obj.parent) { obj.parent.disconnectCode = 50001; } // Everything looks good, a disconnection here would be Intel AMT initiated.
|
||||
if (obj.parent) {
|
||||
obj.parent.disconnectCode = 50001; // Everything looks good, a disconnection here would be Intel AMT initiated.
|
||||
|
||||
// Check if the screen size is larger than Intel AMT should be able to handle
|
||||
//console.log('KVM Buffer Size: ' + (obj.bpp * obj.width * obj.height));
|
||||
if ((obj.bpp * obj.width * obj.height) > 8388608) { obj.parent.disconnectCode = 50002; } // Display buffer too large, more than 8MB.
|
||||
}
|
||||
}
|
||||
else if (obj.state == 4) {
|
||||
switch (obj.acc[0]) {
|
||||
@@ -271,9 +277,8 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
||||
//console.log('Desktop width: ' + obj.width + ', height: ' + obj.height);
|
||||
|
||||
// Check if the screen size is larger than Intel AMT should be able to handle
|
||||
if ((obj.parent) && ((obj.bpp * obj.width * obj.height) > 8388608)) {
|
||||
obj.parent.disconnectCode = 50002; // Display buffer too large, more than 8MB.
|
||||
}
|
||||
//console.log('KVM Buffer Size: ' + (obj.bpp * obj.width * obj.height));
|
||||
if ((obj.parent) && ((obj.bpp * obj.width * obj.height) > 8388608)) { obj.parent.disconnectCode = 50002; } // Display buffer too large, more than 8MB.
|
||||
} else if (encoding == 0) {
|
||||
// RAW encoding
|
||||
var ptr = 12, cs = 12 + (s * obj.bpp);
|
||||
@@ -817,10 +822,14 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
||||
if ((obj.onKvmDataAck == true) && (obj.onKvmDataPending.length > 0)) { obj.sendKvmData(obj.onKvmDataPending.shift()); } // Send pending data
|
||||
} else if ((d.length >= 13) && (d.substring(0, 11) == '\0KvmExtCmd\0')) {
|
||||
var cmd = d.charCodeAt(11), val = d.charCodeAt(12);
|
||||
//console.log('Received KvmExtCmd', cmd, val);
|
||||
if (cmd == 1) { obj.kvmExt.decimation = val; if (obj.kvmExtChanged != null) { obj.kvmExtChanged(1, val); } }
|
||||
//console.log('Received KvmExtCmd', cmd, val, d.length);
|
||||
if (cmd == 1) {
|
||||
obj.kvmExt.decimationMode = val;
|
||||
if (d.length > 13) { obj.kvmExt.decimationState = d.charCodeAt(13); }
|
||||
if (obj.kvmExtChanged != null) { obj.kvmExtChanged(1, obj.kvmExt, obj.kvmExt); }
|
||||
}
|
||||
if (cmd == 2) { obj.sendKvmExtCmd(1); }
|
||||
if (cmd == 3) { obj.kvmExt.compression = val; if (obj.kvmExtChanged != null) { obj.kvmExtChanged(3, val); } }
|
||||
if (cmd == 3) { obj.kvmExt.compression = val; if (obj.kvmExtChanged != null) { obj.kvmExtChanged(3, obj.kvmExt); } }
|
||||
if (cmd == 4) { obj.sendKvmExtCmd(3); }
|
||||
} else {
|
||||
console.log('Got KVM clipboard data:', d);
|
||||
|
||||
17
index.html
17
index.html
@@ -1367,12 +1367,15 @@
|
||||
<select id="idx_d7desktopmode" style="float:right;width:200px"></select>
|
||||
<div>Image Encoding</div>
|
||||
</div>
|
||||
<div id="d7decimationspan" style='height:26px'>
|
||||
<select id="d7decimation" style="float:right;width:200px"><option value=0>Don't set</option><option value=1>Disabled</option><option value=2>Automatic</option><option value=3>Enabled</option></select>
|
||||
<div>Downscaling</div>
|
||||
</div>
|
||||
<div style="height:80px">
|
||||
<div style="float:right;border:1px solid #666;width:200px;height:80px;overflow-y:scroll;background-color:white">
|
||||
<!-- ###BEGIN###{DesktopFocus} -->
|
||||
<label><input type="checkbox" id='d7showfocus'>Show Focus Tool</label><br>
|
||||
<!-- ###END###{DesktopFocus} -->
|
||||
<span id="d7decimationspan"><label><input type="checkbox" id='d7decimation'>Prefer Downscale</label><br></span>
|
||||
<label><input type="checkbox" id='d7showcursor'>Show Local Mouse Cursor</label><br>
|
||||
<label><input type="checkbox" id='d7showcad'>Show Ctrl-Alt-Del</label><br>
|
||||
<label><input type="checkbox" id='d7limitFrameRate'>Limit Frame Rate</label><br>
|
||||
@@ -1763,7 +1766,7 @@
|
||||
// ###END###{NetworkSettings}
|
||||
// ###BEGIN###{Desktop}
|
||||
var desktop;
|
||||
var desktopsettings = { encflags: 1, showfocus: false, showmouse: true, showcad: true, limitFrameRate: false, noMouseRotate: false, decimation: false };
|
||||
var desktopsettings = { encflags: 1, showfocus: false, showmouse: true, showcad: true, limitFrameRate: false, noMouseRotate: false, decimationMode: 2 };
|
||||
// ###END###{Desktop}
|
||||
// ###BEGIN###{Mode-MeshCentral2}
|
||||
var currentMeshNode = null;
|
||||
@@ -8351,12 +8354,12 @@
|
||||
desktop.m.lowcolor = amtsysstate['IPS_KVMRedirectionSettingData'].response['GrayscalePixelFormatSupported'] && ((desktopsettings.encflags & 16) != 0);
|
||||
desktop.m.graymode = amtsysstate['IPS_KVMRedirectionSettingData'].response['GrayscalePixelFormatSupported'] && ((desktopsettings.encflags & 4) != 0);
|
||||
desktop.m.useZLib = amtsysstate['IPS_KVMRedirectionSettingData'].response['ZlibControlSupported'] && ((desktopsettings.encflags & 8) != 0);
|
||||
desktop.m.decimation = amtsysstate['IPS_KVMRedirectionSettingData'].response['InitialDecimationModeForLowRes'] && desktopsettings.decimation;
|
||||
desktop.m.decimationMode = ((amtsysstate['IPS_KVMRedirectionSettingData'].response['InitialDecimationModeForLowRes'] > 0) ? desktopsettings.decimationMode : 0);
|
||||
} else {
|
||||
desktop.m.lowcolor = false;
|
||||
desktop.m.graymode = false;
|
||||
desktop.m.useZLib = false;
|
||||
desktop.m.decimation = false;
|
||||
desktop.m.decimationMode = 0;
|
||||
}
|
||||
desktop.m.showmouse = desktopsettings.showmouse;
|
||||
desktop.m.onScreenSizeChange = center;
|
||||
@@ -8587,7 +8590,7 @@
|
||||
x = ", Soft-KVM";
|
||||
} else {
|
||||
if (desktop.m && desktop.m.kvmExt) {
|
||||
//if (desktop.m.kvmExt.decimation == 2) { x += ", Downscaled" }
|
||||
if (desktop.m.kvmExt.decimationState == 1) { x += ", Downscaled" }
|
||||
if (desktop.m.kvmExt.compression == 1) { x += ", Compressed" }
|
||||
}
|
||||
}
|
||||
@@ -8609,7 +8612,7 @@
|
||||
desktopsettings.encflags = parseInt(idx_d7desktopmode.value);
|
||||
// ###BEGIN###{DesktopFocus}
|
||||
desktopsettings.showfocus = d7showfocus.checked;
|
||||
if ((amtversion > 15) || (urlvars['kvmext'] != null)) { desktopsettings.decimation = d7decimation.checked; }
|
||||
if ((amtversion > 15) && (amtsysstate['IPS_KVMRedirectionSettingData'].response['InitialDecimationModeForLowRes'] > 0)) { desktopsettings.decimationMode = parseInt(d7decimation.value); }
|
||||
// ###END###{DesktopFocus}
|
||||
desktopsettings.showmouse = d7showcursor.checked;
|
||||
desktopsettings.showcad = d7showcad.checked;
|
||||
@@ -8631,8 +8634,8 @@
|
||||
function applyDesktopSettings() {
|
||||
// ###BEGIN###{DesktopFocus}
|
||||
d7showfocus.checked = desktopsettings.showfocus;
|
||||
d7decimation.checked = desktopsettings.decimation;
|
||||
// ###END###{DesktopFocus}
|
||||
d7decimation.value = desktopsettings.decimationMode;
|
||||
d7showcursor.checked = desktopsettings.showmouse;
|
||||
d7showcad.checked = desktopsettings.showcad;
|
||||
d7limitFrameRate.checked = desktopsettings.limitFrameRate;
|
||||
|
||||
Reference in New Issue
Block a user