New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GUACAMOLE-1026: Add support for FreeRDP3. #517
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple of initial comments - overall looks pretty clean!
configure.ac
Outdated
then | ||
AC_CHECK_MEMBERS([freerdp.VerifyCertificateEx],,, | ||
[[#include <freerdp/freerdp.h>]]) | ||
[[#include <freerdp/freerdp.h>]]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There seem to be some alignment issues throughout the configure.ac
file, now. If we're sticking to how things are generally done throughout the file, the start of this should be aligned with the [freerdp.VerifyCertificateEx]
line above, but it seems to be less indented, now.. There are several of these occurrences throughout the changes in the file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated formatting
Nevermind looks like my editor is rendering differently than github
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be cleaner now
src/protocols/rdp/settings.c
Outdated
|
||
} | ||
|
||
/* Set individual flags - some FreeRDP versions overwrite the above */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overwrite which things above?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The guac_rdp_get_performance_flags
function is called prior to this and that has some of the same settings.
guacamole-server/src/protocols/rdp/settings.c
Line 1493 in 32d232a
freerdp_settings_set_uint32(rdp_settings, FreeRDP_PerformanceFlags, guac_rdp_get_performance_flags(guac_settings)); |
guacamole-server/src/protocols/rdp/settings.c
Lines 1410 to 1441 in 32d232a
static int guac_rdp_get_performance_flags(guac_rdp_settings* guac_settings) { | |
/* No performance flags initially */ | |
int flags = PERF_FLAG_NONE; | |
/* Desktop wallpaper */ | |
if (!guac_settings->wallpaper_enabled) | |
flags |= PERF_DISABLE_WALLPAPER; | |
/* Theming of desktop/windows */ | |
if (!guac_settings->theming_enabled) | |
flags |= PERF_DISABLE_THEMING; | |
/* Font smoothing (ClearType) */ | |
if (guac_settings->font_smoothing_enabled) | |
flags |= PERF_ENABLE_FONT_SMOOTHING; | |
/* Full-window drag */ | |
if (!guac_settings->full_window_drag_enabled) | |
flags |= PERF_DISABLE_FULLWINDOWDRAG; | |
/* Desktop composition (Aero) */ | |
if (guac_settings->desktop_composition_enabled) | |
flags |= PERF_ENABLE_DESKTOP_COMPOSITION; | |
/* Menu animations */ | |
if (!guac_settings->menu_animations_enabled) | |
flags |= PERF_DISABLE_MENUANIMATIONS; | |
return flags; | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So "the above" means "flags set by guac_rdp_get_performance_flags() above"?
If so, mind updating the comment to be a bit more specific?
6d1b313
to
daceeaf
Compare
I need to pull the code down and actually run it through some testing before I'm good with it, I'll try to get that done this weekend. Currently this is targeted at the |
It doesn't drop compatibility with FreeRDP 2.x so I'm fine putting it in |
No objection from me for inclusion in 1.6.0 either as long as we maintain compatibility with FreeRDP 2.x. |
I've added this temporary build to help verify these changes against various 2.x and 3.x versions of FreeRDP: https://ci-builds.apache.org/job/Guacamole/job/guacamole-server-wip-freerdp3/ The above is identical to our existing build except that it builds against this |
Looks like the FreeRDP 3 test build failed: https://ci-builds.apache.org/job/Guacamole/job/guacamole-server-wip-freerdp3/FREERDP_BRANCH=3.5.1,JENKINS_LABEL_EXPRESSION=ubuntu/lastBuild/console |
Huh that shouldn't happen. I just pushed changes a little bit ago to resolve that |
Ah ok - looks like a new build did kick off a bit ago - maybe that'll fix it. |
Looks like it failed again... https://ci-builds.apache.org/job/Guacamole/job/guacamole-server-wip-freerdp3/2/FREERDP_BRANCH=3.5.1,JENKINS_LABEL_EXPRESSION=ubuntu/ |
Refactored to support both FreeRDP 2 and 3.
_aligned_free
and_aligned_malloc
renamed towinpr_aligned_free
andwinpr_aligned_malloc
ReadColor
andWriteColor
renamed toFreeRDPReadColor
andFreeRDPWriteColor
CLIPRDR
properties moved toCLIPRDR_HEADER common
struct forCLIPRDR
structs.rdpSettings
freerdp_settings_set_pointer
,freerdp_settings_set_bool
,freerdp_settings_set_string
, freerdp_settings_set_uint32,freerdp_settings_get_pointer_writable
,freerdp_settings_get_bool
,freerdp_settings_get_string
,freerdp_settings_get_uint32
freerdp_settings_set_pointer
andfreerdp_settings_get_pointer_writable
were only added for3.X
where as the rest were available within2.X
.3.X
now use updated enum types for keys prefixed withFreeRDP_
.rdpSettings* settings
,rdpInput* input
) to acontext
structure in thefreerdp* instance
.freerdp_shall_disconnect
renamed tofreerdp_shall_disconnect_context
.IDRDYNVC_ENTRY_POINTS.GetPluginData()
return now requiresconst
.glyph.New
andpointer.Set
no longer require arguments to beconst
.