Factor out xup_client_info for xorgxrdp

The data in 'struct xrdp_client_info' which is shared with xorgxrdp
is separated out into a separate structure. This makes it simpler to
change 'struct xrdp_client_info' without affecting xorgxrdp.
This commit is contained in:
matt335672
2025-05-28 11:25:49 +01:00
parent 322b6c2642
commit b2892fbe5e
7 changed files with 163 additions and 43 deletions
+26 -31
View File
@@ -99,18 +99,31 @@ enum unicode_input_state
UIS_SUPPORTED, ///< Client supports Unicode, but it's not active
UIS_ACTIVE ///< Unicode input is active
};
enum xrdp_encoder_flags
{
NONE = 0,
ENCODE_COMPLETE = 1 << 0,
GFX_PROGRESSIVE_RFX = 1 << 1,
GFX_H264 = 1 << 2,
KEY_FRAME_REQUESTED = 1 << 3
};
/* Size definitions for some arrays in xrdp_client_info */
enum
{
CI_KBD_MODEL_SIZE = 16,
CI_KBD_LAYOUT_SIZE = 16,
CI_KBD_VARIANT_SIZE = 16,
CI_KBD_OPTIONS_SIZE = 256,
CI_KBD_XKB_RULES_SIZE = 32
};
/**
* Information about the xrdp client
*
* @note This structure is shared with xorgxrdp. If you change anything
* above the 'private to xrdp below this line' comment, you MUST
* bump the CLIENT_INFO_CURRENT_VERSION number so that the mismatch
* can be detected.
*/
struct xrdp_client_info
{
int size; /* bytes for this structure */
int version; /* Should be CLIENT_INFO_CURRENT_VERSION */
int bpp;
/* bitmap cache info */
int cache1_entries;
@@ -173,7 +186,7 @@ struct xrdp_client_info
char jpeg_prop[64];
int v3_codec_id;
int rfx_min_pixel;
char orders[32];
char orders[XR_PRIMARY_ORDER_COUNT];
int order_flags_ex;
int use_bulk_comp;
int pointer_flags; /* 0 color, 1 new, 2 no new */
@@ -197,18 +210,17 @@ struct xrdp_client_info
int mcs_early_capability_flags;
int max_fastpath_frag_bytes;
int pad0; /* unused */
int capture_format;
char certificate[1024];
char key_file[1024];
/* X11 keyboard layout - inferred from keyboard type/subtype */
char model[16];
char layout[16];
char variant[16];
char options[256];
char xkb_rules[32];
char model[CI_KBD_MODEL_SIZE];
char layout[CI_KBD_LAYOUT_SIZE];
char variant[CI_KBD_VARIANT_SIZE];
char options[CI_KBD_OPTIONS_SIZE];
char xkb_rules[CI_KBD_XKB_RULES_SIZE];
// A few x11 keycodes are needed by the xup module
int x11_keycode_caps_lock;
int x11_keycode_num_lock;
@@ -219,10 +231,6 @@ struct xrdp_client_info
int h264_frame_interval;
int normal_frame_interval;
/* ==================================================================== */
/* Private to xrdp below this line */
/* ==================================================================== */
/* codec */
int h264_codec_id;
int h264_prop_len;
@@ -270,23 +278,10 @@ struct xrdp_client_info
enum xrdp_capture_code capture_code;
};
enum xrdp_encoder_flags
{
NONE = 0,
ENCODE_COMPLETE = 1 << 0,
GFX_PROGRESSIVE_RFX = 1 << 1,
GFX_H264 = 1 << 2,
KEY_FRAME_REQUESTED = 1 << 3
};
/*
* Return true if output is suppressed for a particular reason
*/
#define OUTPUT_SUPPRESSED_FOR_REASON(ci,reason) \
(((ci)->suppress_output_mask & (unsigned int)reason) != 0)
/* yyyymmdd of last incompatible change to xrdp_client_info */
/* also used for changes to all the xrdp installed headers */
#define CLIENT_INFO_CURRENT_VERSION 20241118
#endif