[ 
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)

Reply via email to