[vinagre/wip/oholy/fix-rdp-build] Fix build with recent FreeRDP versions
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vinagre/wip/oholy/fix-rdp-build] Fix build with recent FreeRDP versions
- Date: Wed, 21 Nov 2018 08:22:15 +0000 (UTC)
commit 98dea5ac9d12cf1b97a6a06d6872114969c54dfd
Author: Ondrej Holy <oholy redhat com>
Date: Tue Nov 20 14:57:17 2018 +0100
Fix build with recent FreeRDP versions
Vinagre is not buildable with recent FreeRDP versions and various patches
are used by distributions to fix that. This patch is based on patch from
Arch Linux. I have also removed some old compatibility codes, because it
wasn't buildable against 1.0, nor 1.1 anyway and 1.2 has never been
officially released and is superseded by 2.0.
https://gitlab.gnome.org/GNOME/vinagre/issues/4
configure.ac | 7 +--
plugins/rdp/vinagre-rdp-tab.c | 129 ++++++++----------------------------------
2 files changed, 27 insertions(+), 109 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 5b51a82..61617f1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,16 +58,15 @@ AS_IF([test "x$have_ssh" = "xyes"],
AM_CONDITIONAL([VINAGRE_ENABLE_SSH], [test "x$have_ssh" = "xyes"])
# Whether to enable support for RDP.
-RDP_DEPS="freerdp x11"
+RDP_DEPS="freerdp2 x11"
+
AC_ARG_ENABLE([rdp],
[AS_HELP_STRING([--disable-rdp],
[Disable Remote Desktop Protocol (RDP) support])])
AS_IF([test "x$enable_rdp" != "xno"],
[PKG_CHECK_EXISTS([$RDP_DEPS],
- [have_rdp=yes
- PKG_CHECK_EXISTS(freerdp >= 1.1,
- [AC_DEFINE([HAVE_FREERDP_1_1], [1], [FreeRDP is of version 1.1 or newer])], [])],
+ [have_rdp=yes],
[have_rdp=no])],
[have_rdp=no])
diff --git a/plugins/rdp/vinagre-rdp-tab.c b/plugins/rdp/vinagre-rdp-tab.c
index 5b98c24..28e3eb6 100644
--- a/plugins/rdp/vinagre-rdp-tab.c
+++ b/plugins/rdp/vinagre-rdp-tab.c
@@ -29,12 +29,7 @@
#include <freerdp/types.h>
#include <freerdp/freerdp.h>
#include <freerdp/gdi/gdi.h>
-#if HAVE_FREERDP_1_1
#include <freerdp/locale/keyboard.h>
-#else
-#include <freerdp/kbd/vkcodes.h>
-#include <gdk/gdkx.h>
-#endif
#include "vinagre-rdp-tab.h"
#include "vinagre-rdp-connection.h"
@@ -44,12 +39,6 @@
#define SELECT_TIMEOUT 50
-#if !HAVE_FREERDP_1_1
-typedef boolean BOOL;
-typedef uint8 UINT8;
-typedef uint16 UINT16;
-#endif
-
struct _VinagreRdpTabPrivate
{
freerdp *freerdp_session;
@@ -476,16 +465,18 @@ frdp_drawing_area_draw (GtkWidget *area,
return TRUE;
}
-static void
+static BOOL
frdp_begin_paint (rdpContext *context)
{
rdpGdi *gdi = context->gdi;
gdi->primary->hdc->hwnd->invalid->null = 1;
gdi->primary->hdc->hwnd->ninvalid = 0;
+
+ return TRUE;
}
-static void
+static BOOL
frdp_end_paint (rdpContext *context)
{
VinagreRdpTab *rdp_tab = ((frdpContext *) context)->rdp_tab;
@@ -495,7 +486,7 @@ frdp_end_paint (rdpContext *context)
gint x, y, w, h;
if (gdi->primary->hdc->hwnd->invalid->null)
- return;
+ return TRUE;
x = gdi->primary->hdc->hwnd->invalid->x;
y = gdi->primary->hdc->hwnd->invalid->y;
@@ -517,6 +508,8 @@ frdp_end_paint (rdpContext *context)
{
gtk_widget_queue_draw_area (priv->display, x, y, w, h);
}
+
+ return TRUE;
}
static BOOL
@@ -524,7 +517,6 @@ frdp_pre_connect (freerdp *instance)
{
rdpSettings *settings = instance->settings;
-#if HAVE_FREERDP_1_1
settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE;
settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE;
settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE;
@@ -549,32 +541,6 @@ frdp_pre_connect (freerdp *instance)
settings->OrderSupport[NEG_POLYGON_CB_INDEX] = FALSE;
settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = FALSE;
settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = FALSE;
-#else
- settings->order_support[NEG_DSTBLT_INDEX] = true;
- settings->order_support[NEG_PATBLT_INDEX] = true;
- settings->order_support[NEG_SCRBLT_INDEX] = true;
- settings->order_support[NEG_OPAQUE_RECT_INDEX] = true;
- settings->order_support[NEG_DRAWNINEGRID_INDEX] = false;
- settings->order_support[NEG_MULTIDSTBLT_INDEX] = false;
- settings->order_support[NEG_MULTIPATBLT_INDEX] = false;
- settings->order_support[NEG_MULTISCRBLT_INDEX] = false;
- settings->order_support[NEG_MULTIOPAQUERECT_INDEX] = true;
- settings->order_support[NEG_MULTI_DRAWNINEGRID_INDEX] = false;
- settings->order_support[NEG_LINETO_INDEX] = true;
- settings->order_support[NEG_POLYLINE_INDEX] = true;
- settings->order_support[NEG_MEMBLT_INDEX] = true;
- settings->order_support[NEG_MEM3BLT_INDEX] = false;
- settings->order_support[NEG_MEMBLT_V2_INDEX] = true;
- settings->order_support[NEG_MEM3BLT_V2_INDEX] = false;
- settings->order_support[NEG_SAVEBITMAP_INDEX] = false;
- settings->order_support[NEG_GLYPH_INDEX_INDEX] = true;
- settings->order_support[NEG_FAST_INDEX_INDEX] = true;
- settings->order_support[NEG_FAST_GLYPH_INDEX] = false;
- settings->order_support[NEG_POLYGON_SC_INDEX] = false;
- settings->order_support[NEG_POLYGON_CB_INDEX] = false;
- settings->order_support[NEG_ELLIPSE_SC_INDEX] = false;
- settings->order_support[NEG_ELLIPSE_CB_INDEX] = false;
-#endif
return TRUE;
}
@@ -587,15 +553,7 @@ frdp_post_connect (freerdp *instance)
rdpGdi *gdi;
int stride;
- gdi_init (instance,
-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \
- !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && \
- FREERDP_VERSION_MINOR >= 2))
- CLRBUF_24BPP,
-#else
- CLRBUF_32BPP,
-#endif
- NULL);
+ gdi_init (instance, PIXEL_FORMAT_BGRA32);
gdi = instance->context->gdi;
instance->update->BeginPaint = frdp_begin_paint;
@@ -705,21 +663,15 @@ frdp_key_pressed (GtkWidget *widget,
VinagreRdpTab *rdp_tab = (VinagreRdpTab *) user_data;
VinagreRdpTabPrivate *priv = rdp_tab->priv;
frdpEventKey *frdp_event;
-#if HAVE_FREERDP_1_1
UINT16 scancode;
-#endif
frdp_event = g_new0 (frdpEventKey, 1);
frdp_event->type = FRDP_EVENT_TYPE_KEY;
frdp_event->flags = event->type == GDK_KEY_PRESS ? KBD_FLAGS_DOWN : KBD_FLAGS_RELEASE;
-#if HAVE_FREERDP_1_1
scancode = freerdp_keyboard_get_rdp_scancode_from_x11_keycode (event->hardware_keycode);
frdp_event->code = RDP_SCANCODE_CODE(scancode);
frdp_event->extended = RDP_SCANCODE_EXTENDED(scancode);
-#else
- frdp_event->code = freerdp_kbd_get_scancode_by_keycode (event->hardware_keycode, &frdp_event->extended);
-#endif
if (frdp_event->extended)
frdp_event->flags |= KBD_FLAGS_EXTENDED;
@@ -934,11 +886,13 @@ frdp_authenticate (freerdp *instance,
return TRUE;
}
-static BOOL
+static DWORD
frdp_certificate_verify (freerdp *instance,
- char *subject,
- char *issuer,
- char *fingerprint)
+ const char *common_name,
+ const char *subject,
+ const char *issuer,
+ const char *fingerprint,
+ BOOL host_mismatch)
{
VinagreTab *tab = VINAGRE_TAB (((frdpContext *) instance->context)->rdp_tab);
GtkBuilder *builder;
@@ -968,17 +922,18 @@ frdp_certificate_verify (freerdp *instance,
gtk_widget_hide (dialog);
- return response == GTK_RESPONSE_YES;
+ return (response == GTK_RESPONSE_YES) ? 1 : 0;
}
-
-#if HAVE_FREERDP_1_1
-static BOOL
+static DWORD
frdp_changed_certificate_verify (freerdp *instance,
- char *subject,
- char *issuer,
- char *new_fingerprint,
- char *old_fingerprint)
+ const char *common_name,
+ const char *subject,
+ const char *issuer,
+ const char *new_fingerprint,
+ const char *old_subject,
+ const char *old_issuer,
+ const char *old_fingerprint)
{
VinagreTab *tab = VINAGRE_TAB (((frdpContext *) instance->context)->rdp_tab);
GtkBuilder *builder;
@@ -1023,9 +978,8 @@ frdp_changed_certificate_verify (freerdp *instance,
gtk_widget_hide (dialog);
- return response == GTK_RESPONSE_YES;
+ return (response == GTK_RESPONSE_YES) ? 1 : 0;
}
-#endif
static void
init_freerdp (VinagreRdpTab *rdp_tab)
@@ -1053,15 +1007,9 @@ init_freerdp (VinagreRdpTab *rdp_tab)
priv->freerdp_session->PostConnect = frdp_post_connect;
priv->freerdp_session->Authenticate = frdp_authenticate;
priv->freerdp_session->VerifyCertificate = frdp_certificate_verify;
-#if HAVE_FREERDP_1_1
priv->freerdp_session->VerifyChangedCertificate = frdp_changed_certificate_verify;
-#endif
-#if HAVE_FREERDP_1_1
priv->freerdp_session->ContextSize = sizeof (frdpContext);
-#else
- priv->freerdp_session->context_size = sizeof (frdpContext);
-#endif
freerdp_context_new (priv->freerdp_session);
((frdpContext *) priv->freerdp_session->context)->rdp_tab = rdp_tab;
@@ -1070,53 +1018,24 @@ init_freerdp (VinagreRdpTab *rdp_tab)
settings = priv->freerdp_session->settings;
/* Security settings */
-#if HAVE_FREERDP_1_1
settings->RdpSecurity = TRUE;
settings->TlsSecurity = TRUE;
settings->NlaSecurity = TRUE;
settings->EncryptionMethods = ENCRYPTION_METHOD_40BIT | ENCRYPTION_METHOD_128BIT | ENCRYPTION_METHOD_FIPS;
settings->EncryptionLevel = ENCRYPTION_LEVEL_CLIENT_COMPATIBLE;
-#else
- settings->rdp_security = true;
- settings->tls_security = true;
- settings->nla_security = true;
- settings->encryption = true;
- settings->encryption_method = ENCRYPTION_METHOD_40BIT | ENCRYPTION_METHOD_128BIT | ENCRYPTION_METHOD_FIPS;
- settings->encryption_level = ENCRYPTION_LEVEL_CLIENT_COMPATIBLE;
-#endif
-#include <freerdp/version.h>
-#if (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2 && FREERDP_VERSION_REVISION >= 1) ||
(FREERDP_VERSION_MAJOR == 2)
settings->UseRdpSecurityLayer = FALSE;
-#else
- settings->DisableEncryption = FALSE;
-#endif
/* Set display size */
-#if HAVE_FREERDP_1_1
settings->DesktopWidth = width;
settings->DesktopHeight = height;
-#else
- settings->width = width;
- settings->height = height;
-#endif
/* Set hostname */
-#if HAVE_FREERDP_1_1
settings->WindowTitle = g_strdup (hostname);
settings->ServerHostname = g_strdup (hostname);
settings->ServerPort = port;
-#else
- settings->window_title = g_strdup (hostname);
- settings->hostname = g_strdup (hostname);
- settings->port = port;
-#endif
/* Set keyboard layout */
-#if HAVE_FREERDP_1_1
freerdp_keyboard_init (KBD_US);
-#else
- freerdp_kbd_init (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), KBD_US);
-#endif
/* Allow font smoothing by default */
settings->AllowFontSmoothing = TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]