This is an automated email from the ASF dual-hosted git repository.
jmuehlner pushed a change to branch next
in repository https://gitbox.apache.org/repos/asf/guacamole-server.git
from b94dd5ad Merge main branch changes to next.
add 104006c6 GUACAMOLE-377: Establish public guac_display API for
efficient rendering via Guacamole protocol.
add 028fb58d GUACAMOLE-377: Tighten dirty rects down to the individual
pixel, rather than whole 64-pixel lines.
add 58140721 GUACAMOLE-377: Update layer list head upon layer removal only
if non-empty.
add b965c4dd GUACAMOLE-377: Do NOT acquire the ops lock before any frame
lock.
add 619eb2e5 GUACAMOLE-377: Correct logic and lock order around deferred
frame flushing (caused deadlock).
add f898ead9 GUACAMOLE-377: Clarify logic around opaque layers.
add 442b33ed GUACAMOLE-377: Ensure regions outside last frame bounds are
considered dirty.
add e396ed57 GUACAMOLE-377: Migrate guac_mem_*() assertions to
GUAC_ASSERT().
add 8afbeaec GUACAMOLE-377: Do not render frames while users are joining.
add 692400c0 GUACAMOLE-377: Flush an automatic frame for mouse changes
only if there are no other graphical changes pending.
add 335d5e24 GUACAMOLE-377: Updates to cursor must occur within the
boundary of their relevant frame (before "sync").
add 15e400e0 GUACAMOLE-377: Ensure all layers supporting transparency are
properly cleared before receiving data that also supports transparency
(including WebP).
add 4f3fccd7 GUACAMOLE-377: Add ability to "hint" that a drawing operation
copied data from another layer.
add c994b2e9 GUACAMOLE-377: Use 2 worker threads per available processor.
add 63ecfd81 GUACAMOLE-377: Do not use threaded WebP encoder given that
guac_display will already make use of a worker thread pool.
add d6447224 GUACAMOLE-377: Migrate VNC support to guac_display API.
add b030ced3 GUACAMOLE-377: Group all guac_display documentation together
under a shared Doxygen topic.
add 3f88d3eb GUACAMOLE-377: Migrate RDP to guac_display.
add d99c5c0b GUACAMOLE-377: Replace RDP settings string (rather than reuse
storage of unknown size).
add 28687cb8 GUACAMOLE-377: Use FreeRDP's built-in GDI handling of bitmap
cache.
add 1f0a3651 GUACAMOLE-377: Migrate terminal emulator to guac_display.
add 3b6173f7 GUACAMOLE-377: Work around libssh2 usage of strlen() on key
data (otherwise encumbering testing of terminal emulator refactor).
add 40eef95f GUACAMOLE-377: Increase maximum number of streams.
add dc133eae GUACAMOLE-377: Ignore directories and files used by Clang
compilation database.
add ba5511cc GUACAMOLE-377: Correct return value confusion in handling of
timeout vs. general failure of WaitForMultipleObjects().
add c48409c3 GUACAMOLE-377: Prefer GUAC_COMP_OVER to GUAC_COMP_SRC for
performance-critical operations (~3x faster).
add de30928a GUACAMOLE-377: Remove all old surface, display, cursor, and
rect code from src/common/.
add 8003836e GUACAMOLE-377: Ensure frame boundaries are sent even for
frames containing no graphics.
add 3aae6035 GUACAMOLE-377: Migrate from timer to thread for pending users.
add 7e593c00 GUACAMOLE-377: Restore heuristic detection of RDP frame
boundaries.
add dc833c74 GUACAMOLE-377: Restore heuristic detection of VNC frame
boundaries.
add cbfeae6c GUACAMOLE-377: Allow the pending frame buffer for a
guac_display_layer to be external.
add fa37f006 GUACAMOLE-377: Allow external guac_display buffers to be
replaced with NULL if necessary for external cleanup tasks.
add d31a96c6 GUACAMOLE-377: Migrate RDP to direct access of FreeRDP's GDI
buffer.
add b667f697 GUACAMOLE-377: Migrate VNC to direct access of RFB
framebuffer.
add 6a7eb6db GUACAMOLE-377: Wrap all VNC message handling within drawing
context.
add 8c341bcf GUACAMOLE-377: Remove unnecessary locking of last frame
during resize.
add ae52278b GUACAMOLE-377: Restore good ol' guac_common_surface and
guac_common_cursor for use by terminal.
add 4145f587 GUACAMOLE-377: Revert migration of terminal emulator to
guac_display.
add c6833a46 GUACAMOLE-377: Make vertical combination more likely by
limiting combinations to aligned boundaries.
add 540d2047 GUACAMOLE-377: Read lock should NOT be acquired at same time
as write lock.
add f3485066 GUACAMOLE-377: Do NOT combine display operations vertically
unless edges match exactly.
add 5ec7be13 GUACAMOLE-377: Do not allow "img" instructions to break
"rect" and "cfill" pairs.
add 260f959b GUACAMOLE-377: Reduce number of worker threads to one per
processor.
add 8f5c3e9c GUACAMOLE-377: Synchronize layer contents only if non-empty.
add f2f74c2d GUACAMOLE-377: Ignore alpha for rectangle operations on
opaque layers.
add 0da3354e GUACAMOLE-377: Add convenient, default render thread
implementation for guac_display.
add 98fd5e69 GUACAMOLE-377: Migrate RDP to default render thread.
add 5a12d96a GUACAMOLE-377: Migrate VNC to default render loop.
add db42844e GUACAMOLE-377: Remove superfluous bounds check (now part of
guac_pool).
add ed388631 GUACAMOLE-377: Restore original NULL returns for alloc
failures of streams/objects.
add 4220670d GUACAMOLE-377: Fix regression causing RDP connections to
always reconnect after closing.
add f5ecb6c8 GUACAMOLE-377: Stream/object sentinel must be assigned BEFORE
returning index to pool.
add b754d3f0 GUACAMOLE-377: Merge new libguac "guac_display" rendering
system.
add ec38a6a6 Merge 1.6.0 changes back to patch.
add 04e90157 Merge patch branch changes to main.
new e5967fb2 Merge main branch changes to next.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.gitignore | 4 +
configure.ac | 5 +
src/common-ssh/key.c | 13 +-
src/common/Makefile.am | 2 -
src/common/common/display.h | 293 --------
src/common/display.c | 422 -----------
src/libguac/Makefile.am | 109 ++-
src/libguac/client.c | 180 ++---
src/libguac/display-builtin-cursors.c | 149 ++++
src/libguac/display-builtin-cursors.h | 93 +++
src/libguac/display-cursor.c | 104 +++
src/libguac/display-flush.c | 391 ++++++++++
src/libguac/display-layer-list.c | 396 ++++++++++
src/libguac/display-layer.c | 324 ++++++++
src/libguac/display-plan-combine.c | 334 +++++++++
src/libguac/display-plan-rect.c | 240 ++++++
src/libguac/display-plan-search.c | 436 +++++++++++
src/libguac/display-plan.c | 441 +++++++++++
src/libguac/display-plan.h | 399 ++++++++++
src/libguac/display-priv.h | 813 +++++++++++++++++++++
src/libguac/display-render-thread.c | 173 +++++
src/libguac/display-worker.c | 522 +++++++++++++
src/libguac/display.c | 351 +++++++++
src/libguac/encode-webp.c | 2 +-
src/libguac/fifo.c | 210 ++++++
src/libguac/flag.c | 167 +++++
src/libguac/guacamole/assert.h | 47 ++
src/libguac/guacamole/client-constants.h | 2 +-
src/libguac/guacamole/client.h | 17 +-
.../{parser-constants.h => display-constants.h} | 33 +-
src/libguac/guacamole/display-types.h | 106 +++
src/libguac/guacamole/display.h | 780 ++++++++++++++++++++
.../{socket-constants.h => fifo-constants.h} | 33 +-
.../guacamole/fifo-types.h} | 47 +-
src/libguac/guacamole/fifo.h | 314 ++++++++
.../guacamole/{audio-types.h => flag-types.h} | 26 +-
src/libguac/guacamole/flag.h | 244 +++++++
src/libguac/guacamole/pool.h | 59 +-
.../png.h => libguac/guacamole/rect-types.h} | 15 +-
src/libguac/guacamole/rect.h | 271 +++++++
src/libguac/guacamole/user-constants.h | 2 +-
src/libguac/mem.c | 13 +-
src/libguac/pool.c | 112 ++-
src/libguac/rect.c | 178 +++++
src/libguac/tests/Makefile.am | 7 +
src/libguac/tests/fifo/fifo.c | 298 ++++++++
src/libguac/tests/flag/flag.c | 168 +++++
src/libguac/tests/rect/align.c | 70 ++
src/{common => libguac}/tests/rect/constrain.c | 25 +-
src/{common => libguac}/tests/rect/extend.c | 25 +-
src/{common => libguac}/tests/rect/init.c | 17 +-
src/libguac/tests/rect/intersects.c | 85 +++
src/libguac/user.c | 30 +-
src/protocols/kubernetes/user.c | 1 -
src/protocols/rdp/Makefile.am | 4 -
src/protocols/rdp/bitmap.c | 168 -----
src/protocols/rdp/bitmap.h | 133 ----
src/protocols/rdp/channels/disp.c | 26 +-
src/protocols/rdp/channels/disp.h | 16 +
src/protocols/rdp/channels/rdpei.c | 4 +-
src/protocols/rdp/client.c | 2 +-
src/protocols/rdp/client.h | 25 +-
src/protocols/rdp/fs.c | 2 +-
src/protocols/rdp/gdi.c | 453 ++----------
src/protocols/rdp/gdi.h | 135 +---
src/protocols/rdp/glyph.c | 170 -----
src/protocols/rdp/glyph.h | 224 ------
src/protocols/rdp/input.c | 6 +-
src/protocols/rdp/pointer.c | 106 ++-
src/protocols/rdp/pointer.h | 5 +-
src/protocols/rdp/rdp.c | 167 ++---
src/protocols/rdp/rdp.h | 27 +-
src/protocols/rdp/settings.c | 7 +-
src/protocols/rdp/user.c | 5 +-
src/protocols/ssh/input.c | 2 -
src/protocols/ssh/user.c | 1 -
src/protocols/vnc/client.c | 5 +-
src/protocols/vnc/client.h | 25 +-
src/protocols/vnc/cursor.c | 96 ++-
src/protocols/vnc/cursor.h | 4 +-
src/protocols/vnc/display.c | 182 +++--
src/protocols/vnc/display.h | 7 +-
src/protocols/vnc/input.c | 7 +-
src/protocols/vnc/log.c | 1 -
src/protocols/vnc/log.h | 1 -
src/protocols/vnc/user.c | 10 +-
src/protocols/vnc/vnc.c | 145 ++--
src/protocols/vnc/vnc.h | 23 +-
src/terminal/buffer.c | 460 ++++++++++--
src/terminal/common.c | 7 +
src/terminal/display.c | 120 +--
src/terminal/select.c | 100 +--
src/terminal/terminal-handlers.c | 196 ++++-
src/terminal/terminal.c | 420 +++--------
src/terminal/terminal/buffer.h | 193 +++--
src/terminal/terminal/terminal-priv.h | 96 +--
src/terminal/terminal/types.h | 16 +-
97 files changed, 9984 insertions(+), 3416 deletions(-)
delete mode 100644 src/common/common/display.h
delete mode 100644 src/common/display.c
create mode 100644 src/libguac/display-builtin-cursors.c
create mode 100644 src/libguac/display-builtin-cursors.h
create mode 100644 src/libguac/display-cursor.c
create mode 100644 src/libguac/display-flush.c
create mode 100644 src/libguac/display-layer-list.c
create mode 100644 src/libguac/display-layer.c
create mode 100644 src/libguac/display-plan-combine.c
create mode 100644 src/libguac/display-plan-rect.c
create mode 100644 src/libguac/display-plan-search.c
create mode 100644 src/libguac/display-plan.c
create mode 100644 src/libguac/display-plan.h
create mode 100644 src/libguac/display-priv.h
create mode 100644 src/libguac/display-render-thread.c
create mode 100644 src/libguac/display-worker.c
create mode 100644 src/libguac/display.c
create mode 100644 src/libguac/fifo.c
create mode 100644 src/libguac/flag.c
create mode 100644 src/libguac/guacamole/assert.h
copy src/libguac/guacamole/{parser-constants.h => display-constants.h} (58%)
create mode 100644 src/libguac/guacamole/display-types.h
create mode 100644 src/libguac/guacamole/display.h
copy src/libguac/guacamole/{socket-constants.h => fifo-constants.h} (55%)
copy src/{common/common/dot_cursor.h => libguac/guacamole/fifo-types.h} (50%)
create mode 100644 src/libguac/guacamole/fifo.h
copy src/libguac/guacamole/{audio-types.h => flag-types.h} (60%)
create mode 100644 src/libguac/guacamole/flag.h
copy src/{guacenc/png.h => libguac/guacamole/rect-types.h} (67%)
create mode 100644 src/libguac/guacamole/rect.h
create mode 100644 src/libguac/rect.c
create mode 100644 src/libguac/tests/fifo/fifo.c
create mode 100644 src/libguac/tests/flag/flag.c
create mode 100644 src/libguac/tests/rect/align.c
copy src/{common => libguac}/tests/rect/constrain.c (64%)
copy src/{common => libguac}/tests/rect/extend.c (63%)
copy src/{common => libguac}/tests/rect/init.c (73%)
create mode 100644 src/libguac/tests/rect/intersects.c
delete mode 100644 src/protocols/rdp/bitmap.c
delete mode 100644 src/protocols/rdp/bitmap.h
delete mode 100644 src/protocols/rdp/glyph.c
delete mode 100644 src/protocols/rdp/glyph.h