Resolution switching without reconnecting.
- Based on https://github.com/jsorg71/xrdp/tree/dynamic_monitor - Tested with xorgxrdp - Tested with vnc - Only works with single monitor. - Update documentation to clarify the difference between MSTSC and Microsoft Remote Desktop. - Does not include compatibility with /gfx at this time, which is still in testing. - Updates to include ms-rdpedisp.h header for the 2.2.2 specification of the protocol. - Adds new dynamic_monitor_layout struct that shares the number of monitors with xrdp_client_info.h - Does not allow for BPP changes because the RDP protocol doesn't support it. - Option to disable feature as NeutrinoRDP doesn't support it (It was based on FreeRDP 1.0.1 which didn't yet have this feature.) - Add CLIENT_MONITOR_DATA_MAXIMUM_MONITORS constant and reference spec definition. Depends on https://github.com/neutrinolabs/xorgxrdp/pull/183
This commit is contained in:
@@ -14,6 +14,7 @@ include_HEADERS = \
|
||||
ms-rdpegdi.h \
|
||||
ms-rdpele.h \
|
||||
ms-rdperp.h \
|
||||
ms-rdpedisp.h \
|
||||
ms-smb2.h \
|
||||
xrdp_client_info.h \
|
||||
xrdp_constants.h \
|
||||
|
||||
+6
-1
@@ -78,7 +78,12 @@
|
||||
/* This isn't explicitly named in MS-RDPBCGR */
|
||||
#define CHANNEL_NAME_LEN 7
|
||||
|
||||
/* Oprions field */
|
||||
/* 2.2.1.3.6 Client Monitor Data - */
|
||||
/* monitorCount (4 bytes): A 32-bit, unsigned integer. The number of display */
|
||||
/* monitor definitions in the monitorDefArray field (the maximum allowed is 16). */
|
||||
#define CLIENT_MONITOR_DATA_MAXIMUM_MONITORS 16
|
||||
|
||||
/* Options field */
|
||||
/* NOTE: XR_ prefixed to avoid conflict with FreeRDP */
|
||||
#define XR_CHANNEL_OPTION_INITIALIZED 0x80000000
|
||||
#define XR_CHANNEL_OPTION_ENCRYPT_RDP 0x40000000
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* xrdp: A Remote Desktop Protocol server.
|
||||
*
|
||||
* MS-RDPEDISP : Definitions from [MS-RDPEDISP]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* References to MS-RDPEDISP are currently correct for v20201030 of that
|
||||
* document
|
||||
*/
|
||||
|
||||
#if !defined(MS_RDPEDISP_H)
|
||||
#define MS_RDPEDISP_H
|
||||
|
||||
/* Display Control Messages: Display Virtual Channel Extension (2.2.2) */
|
||||
#define DISPLAYCONTROL_PDU_TYPE_MONITOR_LAYOUT 0x00000002
|
||||
#define DISPLAYCONTROL_PDU_TYPE_CAPS 0x00000005
|
||||
|
||||
#endif /* MS_RDPEDISP_H */
|
||||
@@ -19,6 +19,7 @@
|
||||
*/
|
||||
|
||||
#include "xrdp_constants.h"
|
||||
#include "ms-rdpbcgr.h"
|
||||
|
||||
#if !defined(XRDP_CLIENT_INFO_H)
|
||||
#define XRDP_CLIENT_INFO_H
|
||||
@@ -120,8 +121,8 @@ struct xrdp_client_info
|
||||
int security_layer; /* 0 = rdp, 1 = tls , 2 = hybrid */
|
||||
int multimon; /* 0 = deny , 1 = allow */
|
||||
int monitorCount; /* number of monitors detected (max = 16) */
|
||||
struct monitor_info minfo[16]; /* client monitor data */
|
||||
struct monitor_info minfo_wm[16]; /* client monitor data, non-negative values */
|
||||
struct monitor_info minfo[CLIENT_MONITOR_DATA_MAXIMUM_MONITORS]; /* client monitor data */
|
||||
struct monitor_info minfo_wm[CLIENT_MONITOR_DATA_MAXIMUM_MONITORS]; /* client monitor data, non-negative values */
|
||||
|
||||
int keyboard_type;
|
||||
int keyboard_subtype;
|
||||
|
||||
Reference in New Issue
Block a user