Merge branch 'apache:main' into patch-add_russian_keyboard

This commit is contained in:
NickVStepin 2024-04-27 16:58:17 +03:00 committed by GitHub
commit c554006a8d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 46 additions and 1 deletions

View File

@ -179,7 +179,7 @@ int guac_rwlock_acquire_write_lock(guac_rwlock* reentrant_rwlock) {
* write lock by another function without the caller knowing about it. This
* shouldn't cause any issues, however.
*/
if (key_value == GUAC_REENTRANT_LOCK_READ_LOCK)
if (flag == GUAC_REENTRANT_LOCK_READ_LOCK)
pthread_rwlock_unlock(&(reentrant_rwlock->lock));
/* Acquire the write lock */

View File

@ -95,6 +95,8 @@ const char* GUAC_VNC_CLIENT_ARGS[] = {
"wol-wait-time",
"force-lossless",
"compress-level",
"quality-level",
NULL
};
@ -389,6 +391,18 @@ enum VNC_ARGS_IDX {
*/
IDX_FORCE_LOSSLESS,
/**
* The level of compression, on a scale of 0 (no compression) to 9 (maximum
* compression), that the connection will be configured for.
*/
IDX_COMPRESS_LEVEL,
/**
* The level of display quality, on a scale of 0 (worst quality) to 9 (best
* quality), that the connection will be configured for.
*/
IDX_QUALITY_LEVEL,
VNC_ARGS_COUNT
};
@ -453,6 +467,16 @@ guac_vnc_settings* guac_vnc_parse_args(guac_user* user,
guac_user_parse_args_boolean(user, GUAC_VNC_CLIENT_ARGS, argv,
IDX_FORCE_LOSSLESS, false);
/* Compression level */
settings->compress_level =
guac_user_parse_args_int(user, GUAC_VNC_CLIENT_ARGS, argv,
IDX_COMPRESS_LEVEL, -1);
/* Display quality */
settings->quality_level =
guac_user_parse_args_int(user, GUAC_VNC_CLIENT_ARGS, argv,
IDX_QUALITY_LEVEL, -1);
#ifdef ENABLE_VNC_REPEATER
/* Set repeater parameters if specified */
settings->dest_host =

View File

@ -82,6 +82,16 @@ typedef struct guac_vnc_settings {
*/
bool lossless;
/**
* The level of compression to ask the VNC client library to perform.
*/
int compress_level;
/**
* The quality level to ask the VNC client library to maintain.
*/
int quality_level;
#ifdef ENABLE_VNC_REPEATER
/**
* The VNC host to connect to, if using a repeater.

View File

@ -440,6 +440,13 @@ void* guac_vnc_client_thread(void* data) {
* heuristics) */
guac_common_display_set_lossless(vnc_client->display, settings->lossless);
/* If compression and display quality have been configured, set those. */
if (settings->compress_level >= 0 && settings->compress_level <= 9)
rfb_client->appData.compressLevel = settings->compress_level;
if (settings->quality_level >= 0 && settings->quality_level <= 9)
rfb_client->appData.qualityLevel = settings->quality_level;
/* If not read-only, set an appropriate cursor */
if (settings->read_only == 0) {
if (settings->remote_cursor)

View File

@ -1751,6 +1751,10 @@ int guac_terminal_send_key(guac_terminal* term, int keysym, int pressed) {
static int __guac_terminal_send_mouse(guac_terminal* term, guac_user* user,
int x, int y, int mask) {
/* Remove display margin from mouse position without going below 0 */
y = y >= term->display->margin ? y - term->display->margin : 0;
x = x >= term->display->margin ? x - term->display->margin : 0;
/* Ignore user input if terminal is not started */
if (!term->started) {
guac_client_log(term->client, GUAC_LOG_DEBUG, "Ignoring user input "