[
https://issues.apache.org/jira/browse/GUACAMOLE-2063?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Jumper closed GUACAMOLE-2063.
----------------------------------
Resolution: Fixed
There were several issues ultimately addressed here:
* Repeated checking of the {{ops}} lock within the render thread leads to
unnecessary contention when {{GUAC_DISPLAY_RENDER_THREAD_STATE_FRAME_MODIFIED}}
is typically signaled frequently within a single frame. We can instead sleep
between checks when there is no explicit frame boundary.
* The {{message_lock}} leads to contention with handling of instructions like
"mouse" and "sync", leading to a feedback loop of lag adjustments. Using our
own event queue for this (instead of immediately sending RDP PDUs) solved this.
* We were erroneously _not_ resetting FreeRDP's invalid region (dirty rect)
within the GDI, leading to unnecessary reevaluation of regions of the display
that have not changed.
* We were letting explicit frame boundaries override any lag adjustments that
may be necessary to avoid inundating the client with data.
* "FastPath" input and output were not enabled by default, and it is no longer
necessary to disable specific, unsupported RDP orders (we're using FreeRDP's
GDI implementation for low-level drawing).
* Network data may be received and still waiting handling after a pair of
"wait for messages" and "handle messages" calls have completed. We needed to
instead ensure that _all_ received data is handled before returning control.
Should now be fixed.
> RDP message_lock can block processing of "sync"
> -----------------------------------------------
>
> Key: GUACAMOLE-2063
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-2063
> Project: Guacamole
> Issue Type: Bug
> Components: RDP
> Affects Versions: 1.6.0
> Reporter: Mike Jumper
> Assignee: Mike Jumper
> Priority: Blocker
> Fix For: 1.6.0
>
>
> Similar to GUACAMOLE-2061, the {{message_lock}} used within the RDP support
> to control concurrent attempts to send RDP messages appears to contribute to
> delays in processing of "sync", indirectly tying progress of output
> processing to processing of input.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)