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