Merge branch 'apache:main' into patch-add_russian_keyboard
This commit is contained in:
commit
c554006a8d
@ -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 */
|
||||
|
||||
@ -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 =
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 "
|
||||
|
||||
Loading…
Reference in New Issue
Block a user