Blame SOURCES/vinagre-3.22.0-freerdp-check.patch

5d97d9
--- vinagre-3.22.0/configure.ac
5d97d9
+++ vinagre-3.22.0/configure.ac
5d97d9
@@ -65,14 +65,19 @@ AC_ARG_ENABLE([rdp],
5d97d9
     [Disable Remote Desktop Protocol (RDP) support])])
5d97d9
 
5d97d9
 AS_IF([test "x$enable_rdp" != "xno"],
5d97d9
-  [PKG_CHECK_EXISTS([$RDP_DEPS],
5d97d9
+  [PKG_CHECK_EXISTS([$RDP_2_DEPS],
5d97d9
     [have_rdp=yes
5d97d9
-     PKG_CHECK_EXISTS(freerdp >= 1.1,
5d97d9
-       [AC_DEFINE([HAVE_FREERDP_1_1], [1], [FreeRDP is of version 1.1 or newer])], [])],
5d97d9
-    [PKG_CHECK_EXISTS([$RDP_2_DEPS],
5d97d9
+     RDP_DEPS=$RDP_2_DEPS
5d97d9
+     AC_DEFINE([HAVE_FREERDP_2], [1], [FreeRDP is of version 2 or newer])
5d97d9
+     AC_DEFINE([HAVE_FREERDP_1_1], [1], [FreeRDP is of version 1.1 or newer])
5d97d9
+     AC_DEFINE([HAVE_FREERDP_1_2], [1], [FreeRDP is of version 1.2 or newer])],
5d97d9
+    [PKG_CHECK_EXISTS([$RDP_DEPS],
5d97d9
        [have_rdp=yes
5d97d9
-        RDP_DEPS=$RDP_2_DEPS
5d97d9
-        AC_DEFINE([HAVE_FREERDP_1_1], [1], [FreeRDP is of version 1.1 or newer])], [have_rdp=no])])],
5d97d9
+        PKG_CHECK_EXISTS(freerdp >= 1.1,
5d97d9
+          [AC_DEFINE([HAVE_FREERDP_1_1], [1], [FreeRDP is of version 1.1 or newer])], [])
5d97d9
+        PKG_CHECK_EXISTS(freerdp >= 1.2,
5d97d9
+          [AC_DEFINE([HAVE_FREERDP_1_2], [1], [FreeRDP is of version 1.2 or newer])], [])],
5d97d9
+       [have_rdp=no])])],
5d97d9
   [have_rdp=no])
5d97d9
 
5d97d9
 AS_IF([test "x$have_rdp" = "xyes"],
5d97d9
--- vinagre-3.22.0/plugins/rdp/vinagre-rdp-tab.c
5d97d9
+++ vinagre-3.22.0/plugins/rdp/vinagre-rdp-tab.c
5d97d9
@@ -29,7 +29,7 @@
5d97d9
 #include <freerdp/types.h>
5d97d9
 #include <freerdp/freerdp.h>
5d97d9
 #include <freerdp/gdi/gdi.h>
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
 #include <freerdp/locale/keyboard.h>
5d97d9
 #else
5d97d9
 #include <freerdp/kbd/vkcodes.h>
5d97d9
@@ -44,7 +44,7 @@
5d97d9
 
5d97d9
 #define SELECT_TIMEOUT 50
5d97d9
 
5d97d9
-#if !HAVE_FREERDP_1_1
5d97d9
+#ifndef HAVE_FREERDP_1_1
5d97d9
 typedef boolean BOOL;
5d97d9
 typedef uint8   UINT8;
5d97d9
 typedef uint16  UINT16;
5d97d9
@@ -476,16 +476,28 @@ frdp_drawing_area_draw (GtkWidget *area,
5d97d9
   return TRUE;
5d97d9
 }
5d97d9
 
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+static BOOL
5d97d9
+#else
5d97d9
 static void
5d97d9
+#endif
5d97d9
 frdp_begin_paint (rdpContext *context)
5d97d9
 {
5d97d9
   rdpGdi *gdi = context->gdi;
5d97d9
 
5d97d9
   gdi->primary->hdc->hwnd->invalid->null = 1;
5d97d9
   gdi->primary->hdc->hwnd->ninvalid = 0;
5d97d9
+
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+  return TRUE;
5d97d9
+#endif
5d97d9
 }
5d97d9
 
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+static BOOL
5d97d9
+#else
5d97d9
 static void
5d97d9
+#endif
5d97d9
 frdp_end_paint (rdpContext *context)
5d97d9
 {
5d97d9
   VinagreRdpTab        *rdp_tab = ((frdpContext *) context)->rdp_tab;
5d97d9
@@ -495,7 +507,13 @@ frdp_end_paint (rdpContext *context)
5d97d9
   gint                  x, y, w, h;
5d97d9
 
5d97d9
   if (gdi->primary->hdc->hwnd->invalid->null)
5d97d9
-    return;
5d97d9
+    {
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+      return TRUE;
5d97d9
+#else
5d97d9
+      return;
5d97d9
+#endif
5d97d9
+    }
5d97d9
 
5d97d9
   x = gdi->primary->hdc->hwnd->invalid->x;
5d97d9
   y = gdi->primary->hdc->hwnd->invalid->y;
5d97d9
@@ -517,6 +535,10 @@ frdp_end_paint (rdpContext *context)
5d97d9
     {
5d97d9
       gtk_widget_queue_draw_area (priv->display, x, y, w, h);
5d97d9
     }
5d97d9
+
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+  return TRUE;
5d97d9
+#endif
5d97d9
 }
5d97d9
 
5d97d9
 static BOOL
5d97d9
@@ -524,7 +546,7 @@ frdp_pre_connect (freerdp *instance)
5d97d9
 {
5d97d9
   rdpSettings *settings = instance->settings;
5d97d9
 
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE;
5d97d9
   settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE;
5d97d9
   settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE;
5d97d9
@@ -587,15 +609,14 @@ frdp_post_connect (freerdp *instance)
5d97d9
   rdpGdi               *gdi;
5d97d9
   int                   stride;
5d97d9
 
5d97d9
-  gdi_init (instance,
5d97d9
-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \
5d97d9
-    !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && \
5d97d9
-    FREERDP_VERSION_MINOR >= 2))
5d97d9
-                    CLRBUF_24BPP,
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+  gdi_init (instance, PIXEL_FORMAT_BGRX32);
5d97d9
+#elif defined(HAVE_FREERDP_1_1)
5d97d9
+  gdi_init (instance, CLRBUF_32BPP, NULL);
5d97d9
 #else
5d97d9
-                    CLRBUF_32BPP,
5d97d9
+  gdi_init (instance, CLRBUF_24BPP, NULL);
5d97d9
 #endif
5d97d9
-                    NULL);
5d97d9
+
5d97d9
   gdi = instance->context->gdi;
5d97d9
 
5d97d9
   instance->update->BeginPaint = frdp_begin_paint;
5d97d9
@@ -705,7 +726,7 @@ frdp_key_pressed (GtkWidget   *widget,
5d97d9
   VinagreRdpTab        *rdp_tab = (VinagreRdpTab *) user_data;
5d97d9
   VinagreRdpTabPrivate *priv = rdp_tab->priv;
5d97d9
   frdpEventKey         *frdp_event;
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   UINT16                scancode;
5d97d9
 #endif
5d97d9
 
5d97d9
@@ -713,7 +734,7 @@ frdp_key_pressed (GtkWidget   *widget,
5d97d9
   frdp_event->type = FRDP_EVENT_TYPE_KEY;
5d97d9
   frdp_event->flags = event->type == GDK_KEY_PRESS ? KBD_FLAGS_DOWN : KBD_FLAGS_RELEASE;
5d97d9
 
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   scancode = freerdp_keyboard_get_rdp_scancode_from_x11_keycode (event->hardware_keycode);
5d97d9
   frdp_event->code = RDP_SCANCODE_CODE(scancode);
5d97d9
   frdp_event->extended = RDP_SCANCODE_EXTENDED(scancode);
5d97d9
@@ -934,11 +955,21 @@ frdp_authenticate (freerdp  *instance,
5d97d9
   return TRUE;
5d97d9
 }
5d97d9
 
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+static DWORD
5d97d9
+frdp_certificate_verify (freerdp    *instance,
5d97d9
+                         const char *common_name,
5d97d9
+                         const char *subject,
5d97d9
+                         const char *issuer,
5d97d9
+                         const char *fingerprint,
5d97d9
+                         BOOL        host_mismatch)
5d97d9
+#else
5d97d9
 static BOOL
5d97d9
 frdp_certificate_verify (freerdp *instance,
5d97d9
                          char    *subject,
5d97d9
                          char    *issuer,
5d97d9
                          char    *fingerprint)
5d97d9
+#endif
5d97d9
 {
5d97d9
   VinagreTab *tab = VINAGRE_TAB (((frdpContext *) instance->context)->rdp_tab);
5d97d9
   GtkBuilder *builder;
5d97d9
@@ -968,17 +999,33 @@ frdp_certificate_verify (freerdp *instan
5d97d9
   gtk_widget_hide (dialog);
5d97d9
 
5d97d9
 
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+  return response == GTK_RESPONSE_YES ? 1 : 0;
5d97d9
+#else
5d97d9
   return response == GTK_RESPONSE_YES;
5d97d9
+#endif
5d97d9
 }
5d97d9
 
5d97d9
 
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+static DWORD
5d97d9
+frdp_changed_certificate_verify (freerdp    *instance,
5d97d9
+                                 const char *common_name,
5d97d9
+                                 const char *subject,
5d97d9
+                                 const char *issuer,
5d97d9
+                                 const char *new_fingerprint,
5d97d9
+                                 const char *old_subject,
5d97d9
+                                 const char *old_issuer,
5d97d9
+                                 const char *old_fingerprint)
5d97d9
+#else
5d97d9
 static BOOL
5d97d9
 frdp_changed_certificate_verify (freerdp *instance,
5d97d9
                                  char    *subject,
5d97d9
                                  char    *issuer,
5d97d9
                                  char    *new_fingerprint,
5d97d9
                                  char    *old_fingerprint)
5d97d9
+#endif
5d97d9
 {
5d97d9
   VinagreTab *tab = VINAGRE_TAB (((frdpContext *) instance->context)->rdp_tab);
5d97d9
   GtkBuilder *builder;
5d97d9
@@ -1023,7 +1070,11 @@ frdp_changed_certificate_verify (freerdp
5d97d9
   gtk_widget_hide (dialog);
5d97d9
 
5d97d9
 
5d97d9
+#ifdef HAVE_FREERDP_2
5d97d9
+  return response == GTK_RESPONSE_YES ? 1 : 0;
5d97d9
+#else
5d97d9
   return response == GTK_RESPONSE_YES;
5d97d9
+#endif
5d97d9
 }
5d97d9
 #endif
5d97d9
 
5d97d9
@@ -1053,11 +1104,11 @@ init_freerdp (VinagreRdpTab *rdp_tab)
5d97d9
   priv->freerdp_session->PostConnect = frdp_post_connect;
5d97d9
   priv->freerdp_session->Authenticate = frdp_authenticate;
5d97d9
   priv->freerdp_session->VerifyCertificate = frdp_certificate_verify;
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   priv->freerdp_session->VerifyChangedCertificate = frdp_changed_certificate_verify;
5d97d9
 #endif
5d97d9
 
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   priv->freerdp_session->ContextSize = sizeof (frdpContext);
5d97d9
 #else
5d97d9
   priv->freerdp_session->context_size = sizeof (frdpContext);
5d97d9
@@ -1070,7 +1121,7 @@ init_freerdp (VinagreRdpTab *rdp_tab)
5d97d9
   settings = priv->freerdp_session->settings;
5d97d9
 
5d97d9
   /* Security settings */
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   settings->RdpSecurity = TRUE;
5d97d9
   settings->TlsSecurity = TRUE;
5d97d9
   settings->NlaSecurity = TRUE;
5d97d9
@@ -1092,7 +1143,7 @@ init_freerdp (VinagreRdpTab *rdp_tab)
5d97d9
 #endif
5d97d9
 
5d97d9
   /* Set display size */
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   settings->DesktopWidth = width;
5d97d9
   settings->DesktopHeight = height;
5d97d9
 #else
5d97d9
@@ -1101,7 +1152,7 @@ init_freerdp (VinagreRdpTab *rdp_tab)
5d97d9
 #endif
5d97d9
 
5d97d9
   /* Set hostname */
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   settings->WindowTitle = g_strdup (hostname);
5d97d9
   settings->ServerHostname = g_strdup (hostname);
5d97d9
   settings->ServerPort = port;
5d97d9
@@ -1112,7 +1163,7 @@ init_freerdp (VinagreRdpTab *rdp_tab)
5d97d9
 #endif
5d97d9
 
5d97d9
   /* Set keyboard layout */
5d97d9
-#if HAVE_FREERDP_1_1
5d97d9
+#ifdef HAVE_FREERDP_1_1
5d97d9
   freerdp_keyboard_init (KBD_US);
5d97d9
 #else
5d97d9
   freerdp_kbd_init (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), KBD_US);