Michael Jumper
2621d65eab
GUACAMOLE-2063: Avoid wait calculations when no timeout is provided for timedwait.
2025-05-28 11:52:03 -07:00
Michael Jumper
5af5711fc3
GUACAMOLE-2063: Accumulate frame count while render thread is combining frames.
2025-05-28 11:51:33 -07:00
Michael Jumper
82e970d25a
GUACAMOLE-2063: Ensure state flag lock is acquired before checking flag value.
2025-05-28 11:50:58 -07:00
Michael Jumper
3f5d0b49cd
GUACAMOLE-2063: Enable support for RDP orders that are enabled by default in FreeRDP.
2025-05-20 15:35:45 -07:00
Michael Jumper
95466a1ae9
GUACAMOLE-2063: Use event queue for RDP input events.
2025-05-20 15:19:59 -07:00
Michael Jumper
3361969661
GUACAMOLE-2063: Ensure all received data from remote desktop server is handled each attempted frame.
2025-05-20 01:47:38 -07:00
Michael Jumper
509641bf56
GUACAMOLE-2063: Consider processing lag even when frame boundaries are explicit.
2025-05-19 15:35:55 -07:00
Michael Jumper
cb4074ac15
GUACAMOLE-2063: Move client processing lag compensation to render thread.
...
Handling this within the worker threads appears to cause contention that
can affect performance.
2025-05-19 15:35:55 -07:00
Michael Jumper
fe35de5459
GUACAMOLE-2063: Decouple render thread updates from FreeRDP GDI updates.
...
Doing otherwise tends to result in slower RDP updates being flushed as
frames, amplifying the slowdown of those updates.
2025-05-19 15:35:50 -07:00
Michael Jumper
50f5b5f937
GUACAMOLE-2063: Reset GDI invalid region after each draw (required for tracking within FreeRDP).
...
If this is not done, the invalid region will gradually grow over time.
2025-05-12 13:19:19 -07:00
Michael Jumper
6ea524ed6b
GUACAMOLE-2063: Explicitly sleep during wait in render thread to avoid contention on render state flag.
2025-05-12 12:24:52 -07:00
Virtually Nick
acb6973535
GUACAMOLE-2061: Merge report mouse movement as part of frame via render thread.
2025-05-06 18:05:42 -05:00
Michael Jumper
11eaa37830
GUACAMOLE-2061: Report mouse movement as part of frame via render thread.
...
Doing this decouples reporting of mouse movement from the display locks
and display processing, ensuring that any delays from processing the
pending frame do not cause delays in processing further instructions
(like "sync").
If delays in processing "sync" are tied to server-side processing, the
assumptions behind the client processing lag calculations cause a
feedback loop of further delays. Measurable delays in "sync" need to be
purely due to client-side processing.
2025-05-06 14:48:29 -07:00
Virtually Nick
a7455796a4
GUACAMOLE-2062: Adjust log level for display resize messages.
2025-05-06 09:57:48 -04:00
Michael Jumper
6377e8b381
GUACAMOLE-1980: Bump libguac-terminal soversion to reflect interface changes.
2025-05-02 13:51:20 -07:00
Michael Jumper
1c2bde4342
GUACAMOLE-1980: Bump libguac soversion for changes since 1.5.5 (interfaces changed).
2025-05-02 09:29:10 -07:00
Alexander Leitner
d37a2f2a48
GUACAMOLE-1026: Set ConnectionType to LAN to prevent auto-detection in FreeRDP from overriding performance flags.
2025-05-01 22:57:12 -04:00
Michael Jumper
0cce3ceb55
GUACAMOLE-377: Remove use of END_FRAME operation from guac_display.
...
The END_FRAME operation was previously used to notify workers that the
frame has ended, but since the receiving worker needs to check and push
that operation back onto the queue if other workers are still busy, it's
essentially unnecessary _and_ results in several workers spinning as
they pass END_FRAME around until all others are done.
It's sufficient to simply check whether the operation queue is empty and
no other workers are active.
2025-05-01 15:31:53 -07:00
Michael Jumper
8e6aa05f76
GUACAMOLE-377: Correct race condition in guac_display flush planning.
...
The actual addition of operations to the ops FIFO has to happen
atomically, or else an earlier frame's operations may end up in the FIFO
_after_ a later frame's operations.
2025-04-30 21:18:20 -07:00
Michael Jumper
d9ff15e679
GUACAMOLE-1374: Broaden Docker build to cover additional architectures (not necessarily tested, especially 32-bit).
2025-04-22 00:20:07 -07:00
Michael Jumper
f4921296b7
GUACAMOLE-1374: Deprecate GUACD_LOG_LEVEL in favor of LOG_LEVEL.
2025-04-22 00:01:05 -07:00
Michael Jumper
e4cd4e5716
GUACAMOLE-1374: Migrate to modular, parallelizable Docker build.
2025-04-22 00:01:01 -07:00
Virtually Nick
79843f5149
GUACAMOLE-377: Merge address performance regression primarily affecting RDP.
2025-04-21 10:56:39 -05:00
Michael Jumper
37ac16f09f
GUACAMOLE-1026: Correct inverted performance flag logic.
2025-03-23 23:30:48 -07:00
Michael Jumper
91b31a288a
GUACAMOLE-377: Set TCP_NODELAY on socket to avoid unnecessary latency.
2025-01-29 10:07:44 -08:00
Michael Jumper
6a68177374
GUACAMOLE-377: Do NOT send extra frames just to allow copies to move forward.
...
This seems to induce latency and possibly negatively affects tracking of
client-side processing lag.
2025-01-29 10:05:12 -08:00
Michael Jumper
bb0c5b634d
GUACAMOLE-377: Avoid flushing empty frames purely for updated mouse positions.
2025-01-13 13:03:56 -08:00
Michael Jumper
6e8d28925d
GUACAMOLE-377: Always update to latest dirty rect state, including if that state is empty.
2025-01-13 12:55:23 -08:00
Virtually Nick
32067616c9
GUACAMOLE-1196: Correct VNC resize support to conform to the RFB standard.
2024-12-20 11:42:30 -05:00
Corentin SORIANO
9bde8b9988
GUACAMOLE-1256: Fix a display issue when scrolling up in vi as well as latency in less.
2024-12-04 10:35:01 +01:00
Corentin SORIANO
11ea330feb
GUACAMOLE-1997: Fix issue on screen resize with freerdp >= 3.8.0.
2024-11-05 08:24:16 +01:00
Mike Jumper
be51ad165e
GUACAMOLE-377: Merge correction to handling of display redraw following terminal buffer switch.
2024-10-01 09:52:05 -07:00
corentin-soriano
ab3cda9930
GUACAMOLE-377: Fix issue where display content is not updated when switching back to normal buffer.
2024-10-01 10:58:51 +02:00
Virtually Nick
c056b74094
GUACAMOLE-377: Merge add missing include for errno.
2024-09-30 09:14:54 -04:00
corentin-soriano
a3b9458b33
GUACAMOLE-1256: Fix latency when dumping big text file.
2024-09-30 11:21:34 +02:00
Michael Jumper
e9fcf00cb7
GUACAMOLE-377: Add missing include for errno.
2024-09-30 00:56:53 -07:00
Michael Jumper
8146e171f7
GUACAMOLE-377: Correct regression in terminal assertion (too strict by one column).
2024-09-29 13:58:07 -07:00
Michael Jumper
f5ecb6c8f9
GUACAMOLE-377: Stream/object sentinel must be assigned BEFORE returning index to pool.
...
Doing otherwise results in a race condition where the index of a valid
stream is changed to -1 by a different thread, breaking assertions and
causing the connection to disconnect.
2024-09-28 10:16:59 -07:00
Michael Jumper
4220670dac
GUACAMOLE-377: Fix regression causing RDP connections to always reconnect after closing.
2024-09-27 23:32:38 -07:00
Michael Jumper
ed388631b5
GUACAMOLE-377: Restore original NULL returns for alloc failures of streams/objects.
2024-09-27 23:32:38 -07:00
Michael Jumper
db42844ec9
GUACAMOLE-377: Remove superfluous bounds check (now part of guac_pool).
2024-09-27 23:32:38 -07:00
Michael Jumper
5a12d96ac5
GUACAMOLE-377: Migrate VNC to default render loop.
2024-09-27 23:32:38 -07:00
Michael Jumper
98fd5e69a9
GUACAMOLE-377: Migrate RDP to default render thread.
2024-09-27 23:32:38 -07:00
Michael Jumper
0da3354e82
GUACAMOLE-377: Add convenient, default render thread implementation for guac_display.
2024-09-27 23:32:38 -07:00
Michael Jumper
f2f74c2d03
GUACAMOLE-377: Ignore alpha for rectangle operations on opaque layers.
2024-09-27 23:32:38 -07:00
Michael Jumper
8f5c3e9cc9
GUACAMOLE-377: Synchronize layer contents only if non-empty.
2024-09-27 23:32:38 -07:00
Michael Jumper
260f959b19
GUACAMOLE-377: Reduce number of worker threads to one per processor.
...
Testing doesn't seem to support an increase in throughput or
responsiveness from doubling up on worker threads.
2024-09-27 23:32:38 -07:00
Michael Jumper
5ec7be130c
GUACAMOLE-377: Do not allow "img" instructions to break "rect" and "cfill" pairs.
...
Other instructions that occur between "rect" and "cfill" may disrupt the
path set by "rect", resulting in "cfill" having no effect, resulting in
graphical artifacts.
This also has the side effect of reducing thread contention by flushing
the simple operations early (it is now less likely that multiple worker
threads will be free for further tasks at nearly exactly the same time).
2024-09-27 23:32:38 -07:00
Michael Jumper
f348506656
GUACAMOLE-377: Do NOT combine display operations vertically unless edges match exactly.
...
Doing otherwise can result in display operations overlapping. This is
because combining two vertically adjacent operations that have different
widths causes additional cells to be included that are not covered by
either original operation. If other operations are within those
additional cells, then the operations flushed for the frame will
overlap, consuming unnecessary additional processing and bandwidth.
2024-09-27 23:32:38 -07:00
Michael Jumper
540d20474b
GUACAMOLE-377: Read lock should NOT be acquired at same time as write lock.
...
Acquiring the read lock first and then reentrantly acquiring the write
lock may result in other existing readers getting promoted to writers.
2024-09-27 23:32:38 -07:00