gnu: freerdp: Revert to version 1.1.
* gnu/packages/rdesktop.scm (freerdp) [version, source]: Revert to upstream branch 1.1. [inputs]: Use ffmpeg-2.8. * gnu/packages/gnome.scm (vinagre): Add patches required to build against freerdp branch 1.1. * gnu/packages/patches/vinagre-revert-1.patch, gnu/packages/patches/vinagre-revert-2.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them.
This commit is contained in:
		
							parent
							
								
									c5a856d551
								
							
						
					
					
						commit
						cc81f1c349
					
				
					 5 changed files with 558 additions and 46 deletions
				
			
		| 
						 | 
					@ -1081,6 +1081,8 @@ dist_patch_DATA =						\
 | 
				
			||||||
  %D%/packages/patches/util-linux-tests.patch			\
 | 
					  %D%/packages/patches/util-linux-tests.patch			\
 | 
				
			||||||
  %D%/packages/patches/upower-builddir.patch			\
 | 
					  %D%/packages/patches/upower-builddir.patch			\
 | 
				
			||||||
  %D%/packages/patches/valgrind-enable-arm.patch		\
 | 
					  %D%/packages/patches/valgrind-enable-arm.patch		\
 | 
				
			||||||
 | 
					  %D%/packages/patches/vinagre-revert-1.patch                   \
 | 
				
			||||||
 | 
					  %D%/packages/patches/vinagre-revert-2.patch                   \
 | 
				
			||||||
  %D%/packages/patches/virglrenderer-CVE-2017-6386.patch 	\
 | 
					  %D%/packages/patches/virglrenderer-CVE-2017-6386.patch 	\
 | 
				
			||||||
  %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch		\
 | 
					  %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch		\
 | 
				
			||||||
  %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch		\
 | 
					  %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch		\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2123,6 +2123,9 @@ selection and URL hints.")))
 | 
				
			||||||
              (uri (string-append "mirror://gnome/sources/" name "/"
 | 
					              (uri (string-append "mirror://gnome/sources/" name "/"
 | 
				
			||||||
                                  (version-major+minor version) "/"
 | 
					                                  (version-major+minor version) "/"
 | 
				
			||||||
                                  name "-" version ".tar.xz"))
 | 
					                                  name "-" version ".tar.xz"))
 | 
				
			||||||
 | 
					              (patches ; We have to revert 2 commits to build against freerdp 1.1.
 | 
				
			||||||
 | 
					               (search-patches "vinagre-revert-1.patch"
 | 
				
			||||||
 | 
					                               "vinagre-revert-2.patch"))
 | 
				
			||||||
              (sha256
 | 
					              (sha256
 | 
				
			||||||
               (base32
 | 
					               (base32
 | 
				
			||||||
                "10jya3jyrm18nbw3v410gbkc7677bqamax44pzgd3j15randn76d"))))
 | 
					                "10jya3jyrm18nbw3v410gbkc7677bqamax44pzgd3j15randn76d"))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										56
									
								
								gnu/packages/patches/vinagre-revert-1.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								gnu/packages/patches/vinagre-revert-1.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					Patch taken from Debian: revert changes that prevent building against freerdp
 | 
				
			||||||
 | 
					version 1.1 branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From 8ebc0685b85e0d1f70eb00171f2e7712de3d44bd Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Michael Biebl <biebl@debian.org>
 | 
				
			||||||
 | 
					Date: Thu, 22 Sep 2016 01:15:55 +0200
 | 
				
			||||||
 | 
					Subject: [PATCH 1/2] Revert "Improve FreeRDP authentication failure handling"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This reverts commit d7b4f88943e8615d252d27e1efc58cb64a9e1821.
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 plugins/rdp/vinagre-rdp-tab.c | 10 ++++++----
 | 
				
			||||||
 | 
					 1 file changed, 6 insertions(+), 4 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/plugins/rdp/vinagre-rdp-tab.c b/plugins/rdp/vinagre-rdp-tab.c
 | 
				
			||||||
 | 
					index b731f9b..8572bc3 100644
 | 
				
			||||||
 | 
					--- a/plugins/rdp/vinagre-rdp-tab.c
 | 
				
			||||||
 | 
					+++ b/plugins/rdp/vinagre-rdp-tab.c
 | 
				
			||||||
 | 
					@@ -1195,8 +1195,8 @@ open_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					   VinagreTab           *tab = VINAGRE_TAB (rdp_tab);
 | 
				
			||||||
 | 
					   GtkWindow            *window = GTK_WINDOW (vinagre_tab_get_window (tab));
 | 
				
			||||||
 | 
					   gboolean              success = TRUE;
 | 
				
			||||||
 | 
					+  gboolean              authentication_error = FALSE;
 | 
				
			||||||
 | 
					   gboolean              cancelled = FALSE;
 | 
				
			||||||
 | 
					-  guint                 authentication_errors = 0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   priv->events = g_queue_new ();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -1205,12 +1205,14 @@ open_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   do
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					+      authentication_error = FALSE;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					       /* Run FreeRDP session */
 | 
				
			||||||
 | 
					       success = freerdp_connect (priv->freerdp_session);
 | 
				
			||||||
 | 
					       if (!success)
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					-          authentication_errors += freerdp_get_last_error (priv->freerdp_session->context) == 0x20009 ||
 | 
				
			||||||
 | 
					-                                   freerdp_get_last_error (priv->freerdp_session->context) == 0x2000c;
 | 
				
			||||||
 | 
					+          authentication_error = freerdp_get_last_error (priv->freerdp_session->context) == 0x20009 ||
 | 
				
			||||||
 | 
					+                                 freerdp_get_last_error (priv->freerdp_session->context) == 0x2000c;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           cancelled = freerdp_get_last_error (priv->freerdp_session->context) == 0x2000b;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -1218,7 +1220,7 @@ open_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					           init_freerdp (rdp_tab);
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					-  while (!success && authentication_errors < 3);
 | 
				
			||||||
 | 
					+  while (!success && authentication_error);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   if (!success)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-- 
 | 
				
			||||||
 | 
					2.9.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										448
									
								
								gnu/packages/patches/vinagre-revert-2.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										448
									
								
								gnu/packages/patches/vinagre-revert-2.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,448 @@
 | 
				
			||||||
 | 
					Patch taken from Debian: revert changes that prevent building against freerdp
 | 
				
			||||||
 | 
					version 1.1 branch.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From bb1828b6b7eb29bb037bcc687cf10f916ddc7561 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Michael Biebl <biebl@debian.org>
 | 
				
			||||||
 | 
					Date: Thu, 22 Sep 2016 01:18:16 +0200
 | 
				
			||||||
 | 
					Subject: [PATCH 2/2] Revert "Store credentials for RDP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This reverts commit 60dea279a24c7f0e398b89a0a60d45e80087ed1d.
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 plugins/rdp/vinagre-rdp-connection.c |  22 +---
 | 
				
			||||||
 | 
					 plugins/rdp/vinagre-rdp-plugin.c     |  29 +----
 | 
				
			||||||
 | 
					 plugins/rdp/vinagre-rdp-tab.c        | 231 +++++++++++++++++------------------
 | 
				
			||||||
 | 
					 3 files changed, 123 insertions(+), 159 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/plugins/rdp/vinagre-rdp-connection.c b/plugins/rdp/vinagre-rdp-connection.c
 | 
				
			||||||
 | 
					index f0ff02b..c5f6ed1 100644
 | 
				
			||||||
 | 
					--- a/plugins/rdp/vinagre-rdp-connection.c
 | 
				
			||||||
 | 
					+++ b/plugins/rdp/vinagre-rdp-connection.c
 | 
				
			||||||
 | 
					@@ -127,25 +127,9 @@ rdp_parse_item (VinagreConnection *conn, xmlNode *root)
 | 
				
			||||||
 | 
					 static void
 | 
				
			||||||
 | 
					 rdp_parse_options_widget (VinagreConnection *conn, GtkWidget *widget)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-  const gchar *text;
 | 
				
			||||||
 | 
					-  GtkWidget   *u_entry, *d_entry, *spin_button, *scaling_button;
 | 
				
			||||||
 | 
					-  gboolean     scaling;
 | 
				
			||||||
 | 
					-  guint        width, height;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  d_entry = g_object_get_data (G_OBJECT (widget), "domain_entry");
 | 
				
			||||||
 | 
					-  if (!d_entry)
 | 
				
			||||||
 | 
					-    {
 | 
				
			||||||
 | 
					-      g_warning ("Wrong widget passed to rdp_parse_options_widget()");
 | 
				
			||||||
 | 
					-      return;
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  text = gtk_entry_get_text (GTK_ENTRY (d_entry));
 | 
				
			||||||
 | 
					-  vinagre_cache_prefs_set_string  ("rdp-connection", "domain", text);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  g_object_set (conn,
 | 
				
			||||||
 | 
					-		"domain", text != NULL && *text != '\0' ? text : NULL,
 | 
				
			||||||
 | 
					-		NULL);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					+  GtkWidget *u_entry, *spin_button, *scaling_button;
 | 
				
			||||||
 | 
					+  gboolean   scaling;
 | 
				
			||||||
 | 
					+  guint      width, height;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   u_entry = g_object_get_data (G_OBJECT (widget), "username_entry");
 | 
				
			||||||
 | 
					   if (!u_entry)
 | 
				
			||||||
 | 
					diff --git a/plugins/rdp/vinagre-rdp-plugin.c b/plugins/rdp/vinagre-rdp-plugin.c
 | 
				
			||||||
 | 
					index 4751102..f41da37 100644
 | 
				
			||||||
 | 
					--- a/plugins/rdp/vinagre-rdp-plugin.c
 | 
				
			||||||
 | 
					+++ b/plugins/rdp/vinagre-rdp-plugin.c
 | 
				
			||||||
 | 
					@@ -100,7 +100,7 @@ vinagre_rdp_plugin_init (VinagreRdpPlugin *plugin)
 | 
				
			||||||
 | 
					 static GtkWidget *
 | 
				
			||||||
 | 
					 impl_get_connect_widget (VinagreProtocol *plugin, VinagreConnection *conn)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-  GtkWidget *grid, *label, *u_entry, *d_entry, *spin_button, *check;
 | 
				
			||||||
 | 
					+  GtkWidget *grid, *label, *u_entry, *spin_button, *check;
 | 
				
			||||||
 | 
					   gchar     *str;
 | 
				
			||||||
 | 
					   gint       width, height;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -146,29 +146,10 @@ impl_get_connect_widget (VinagreProtocol *plugin, VinagreConnection *conn)
 | 
				
			||||||
 | 
					   g_free (str);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  label = gtk_label_new_with_mnemonic (_("_Domain:"));
 | 
				
			||||||
 | 
					-  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 | 
				
			||||||
 | 
					-  gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 1, 1);
 | 
				
			||||||
 | 
					-  gtk_widget_set_margin_left (label, 12);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  d_entry = gtk_entry_new ();
 | 
				
			||||||
 | 
					-  /* Translators: This is the tooltip for the domain field in a RDP connection */
 | 
				
			||||||
 | 
					-  gtk_widget_set_tooltip_text (d_entry, _("Optional."));
 | 
				
			||||||
 | 
					-  g_object_set_data (G_OBJECT (grid), "domain_entry", d_entry);
 | 
				
			||||||
 | 
					-  gtk_grid_attach (GTK_GRID (grid), d_entry, 1, 3, 1, 1);
 | 
				
			||||||
 | 
					-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), d_entry);
 | 
				
			||||||
 | 
					-  str = g_strdup (VINAGRE_IS_CONNECTION (conn) ?
 | 
				
			||||||
 | 
					-		  vinagre_connection_get_domain (conn) :
 | 
				
			||||||
 | 
					-		  vinagre_cache_prefs_get_string  ("rdp-connection", "domain", ""));
 | 
				
			||||||
 | 
					-  gtk_entry_set_text (GTK_ENTRY (d_entry), str);
 | 
				
			||||||
 | 
					-  gtk_entry_set_activates_default (GTK_ENTRY (d_entry), TRUE);
 | 
				
			||||||
 | 
					-  g_free (str);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					   /* Host width */
 | 
				
			||||||
 | 
					   label = gtk_label_new_with_mnemonic (_("_Width:"));
 | 
				
			||||||
 | 
					   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 | 
				
			||||||
 | 
					-  gtk_grid_attach (GTK_GRID (grid), label, 0, 4, 1, 1);
 | 
				
			||||||
 | 
					+  gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 1, 1);
 | 
				
			||||||
 | 
					   gtk_widget_set_margin_left (label, 12);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   spin_button = gtk_spin_button_new_with_range (MIN_SIZE, MAX_SIZE, 1);
 | 
				
			||||||
 | 
					@@ -176,7 +157,7 @@ impl_get_connect_widget (VinagreProtocol *plugin, VinagreConnection *conn)
 | 
				
			||||||
 | 
					   gtk_widget_set_tooltip_text (spin_button, _("Set width of the remote desktop"));
 | 
				
			||||||
 | 
					   gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), DEFAULT_WIDTH);
 | 
				
			||||||
 | 
					   g_object_set_data (G_OBJECT (grid), "width_spin_button", spin_button);
 | 
				
			||||||
 | 
					-  gtk_grid_attach (GTK_GRID (grid), spin_button, 1, 4, 1, 1);
 | 
				
			||||||
 | 
					+  gtk_grid_attach (GTK_GRID (grid), spin_button, 1, 3, 1, 1);
 | 
				
			||||||
 | 
					   gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button);
 | 
				
			||||||
 | 
					   width = VINAGRE_IS_CONNECTION (conn) ?
 | 
				
			||||||
 | 
					           vinagre_connection_get_width (conn) :
 | 
				
			||||||
 | 
					@@ -188,7 +169,7 @@ impl_get_connect_widget (VinagreProtocol *plugin, VinagreConnection *conn)
 | 
				
			||||||
 | 
					   /* Host height */
 | 
				
			||||||
 | 
					   label = gtk_label_new_with_mnemonic (_("_Height:"));
 | 
				
			||||||
 | 
					   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
 | 
				
			||||||
 | 
					-  gtk_grid_attach (GTK_GRID (grid), label, 0, 5, 1, 1);
 | 
				
			||||||
 | 
					+  gtk_grid_attach (GTK_GRID (grid), label, 0, 4, 1, 1);
 | 
				
			||||||
 | 
					   gtk_widget_set_margin_left (label, 12);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   spin_button = gtk_spin_button_new_with_range (MIN_SIZE, MAX_SIZE, 1);
 | 
				
			||||||
 | 
					@@ -196,7 +177,7 @@ impl_get_connect_widget (VinagreProtocol *plugin, VinagreConnection *conn)
 | 
				
			||||||
 | 
					   gtk_widget_set_tooltip_text (spin_button, _("Set height of the remote desktop"));
 | 
				
			||||||
 | 
					   gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), DEFAULT_HEIGHT);
 | 
				
			||||||
 | 
					   g_object_set_data (G_OBJECT (grid), "height_spin_button", spin_button);
 | 
				
			||||||
 | 
					-  gtk_grid_attach (GTK_GRID (grid), spin_button, 1, 5, 1, 1);
 | 
				
			||||||
 | 
					+  gtk_grid_attach (GTK_GRID (grid), spin_button, 1, 4, 1, 1);
 | 
				
			||||||
 | 
					   gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button);
 | 
				
			||||||
 | 
					   height = VINAGRE_IS_CONNECTION (conn) ?
 | 
				
			||||||
 | 
					            vinagre_connection_get_height (conn) :
 | 
				
			||||||
 | 
					diff --git a/plugins/rdp/vinagre-rdp-tab.c b/plugins/rdp/vinagre-rdp-tab.c
 | 
				
			||||||
 | 
					index 8572bc3..f3d9c08 100644
 | 
				
			||||||
 | 
					--- a/plugins/rdp/vinagre-rdp-tab.c
 | 
				
			||||||
 | 
					+++ b/plugins/rdp/vinagre-rdp-tab.c
 | 
				
			||||||
 | 
					@@ -70,8 +70,6 @@ struct _VinagreRdpTabPrivate
 | 
				
			||||||
 | 
					   gboolean         scaling;
 | 
				
			||||||
 | 
					   double           scale;
 | 
				
			||||||
 | 
					   double           offset_x, offset_y;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  guint            authentication_attempts;
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 G_DEFINE_TYPE (VinagreRdpTab, vinagre_rdp_tab, VINAGRE_TYPE_TAB)
 | 
				
			||||||
 | 
					@@ -611,7 +609,6 @@ frdp_post_connect (freerdp *instance)
 | 
				
			||||||
 | 
					                               0, 0,
 | 
				
			||||||
 | 
					                               gdi->width, gdi->height);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  vinagre_tab_save_credentials_in_keyring (VINAGRE_TAB (rdp_tab));
 | 
				
			||||||
 | 
					   vinagre_tab_add_recent_used (VINAGRE_TAB (rdp_tab));
 | 
				
			||||||
 | 
					   vinagre_tab_set_state (VINAGRE_TAB (rdp_tab), VINAGRE_TAB_STATE_CONNECTED);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -862,76 +859,114 @@ frdp_mouse_moved (GtkWidget      *widget,
 | 
				
			||||||
 | 
					   return TRUE;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+static void
 | 
				
			||||||
 | 
					+entry_text_changed_cb (GtkEntry   *entry,
 | 
				
			||||||
 | 
					+                       GtkBuilder *builder)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+  const gchar *text;
 | 
				
			||||||
 | 
					+  GtkWidget   *widget;
 | 
				
			||||||
 | 
					+  gsize        username_length;
 | 
				
			||||||
 | 
					+  gsize        password_length;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "username_entry"));
 | 
				
			||||||
 | 
					+  text = gtk_entry_get_text (GTK_ENTRY (widget));
 | 
				
			||||||
 | 
					+  username_length = strlen (text);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "password_entry"));
 | 
				
			||||||
 | 
					+  text = gtk_entry_get_text (GTK_ENTRY (widget));
 | 
				
			||||||
 | 
					+  password_length = strlen (text);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "ok_button"));
 | 
				
			||||||
 | 
					+  gtk_widget_set_sensitive (widget, password_length > 0 && username_length > 0);
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 static gboolean
 | 
				
			||||||
 | 
					 frdp_authenticate (freerdp  *instance,
 | 
				
			||||||
 | 
					                    char    **username,
 | 
				
			||||||
 | 
					                    char    **password,
 | 
				
			||||||
 | 
					                    char    **domain)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-  VinagreTab           *tab = VINAGRE_TAB (((frdpContext *) instance->context)->rdp_tab);
 | 
				
			||||||
 | 
					-  VinagreRdpTab        *rdp_tab = VINAGRE_RDP_TAB (tab);
 | 
				
			||||||
 | 
					-  VinagreRdpTabPrivate *priv = rdp_tab->priv;
 | 
				
			||||||
 | 
					-  VinagreConnection    *conn = vinagre_tab_get_conn (tab);
 | 
				
			||||||
 | 
					-  GtkWindow            *window = GTK_WINDOW (vinagre_tab_get_window (tab));
 | 
				
			||||||
 | 
					-  gboolean              save_in_keyring = FALSE;
 | 
				
			||||||
 | 
					-  gchar                *keyring_domain = NULL;
 | 
				
			||||||
 | 
					-  gchar                *keyring_username = NULL;
 | 
				
			||||||
 | 
					-  gchar                *keyring_password = NULL;
 | 
				
			||||||
 | 
					+  VinagreTab        *tab = VINAGRE_TAB (((frdpContext *) instance->context)->rdp_tab);
 | 
				
			||||||
 | 
					+  VinagreConnection *conn = vinagre_tab_get_conn (tab);
 | 
				
			||||||
 | 
					+  const gchar       *user_name;
 | 
				
			||||||
 | 
					+  const gchar       *domain_name;
 | 
				
			||||||
 | 
					+  GtkBuilder        *builder;
 | 
				
			||||||
 | 
					+  GtkWidget         *dialog;
 | 
				
			||||||
 | 
					+  GtkWidget         *widget;
 | 
				
			||||||
 | 
					+  GtkWidget         *username_entry;
 | 
				
			||||||
 | 
					+  GtkWidget         *password_entry;
 | 
				
			||||||
 | 
					+  GtkWidget         *domain_entry;
 | 
				
			||||||
 | 
					+  gboolean           save_credential_check_visible;
 | 
				
			||||||
 | 
					+  gboolean           domain_label_visible;
 | 
				
			||||||
 | 
					+  gboolean           domain_entry_visible;
 | 
				
			||||||
 | 
					+  gint               response;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  priv->authentication_attempts++;
 | 
				
			||||||
 | 
					+  builder = vinagre_utils_get_builder ();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  if (priv->authentication_attempts == 1)
 | 
				
			||||||
 | 
					-    {
 | 
				
			||||||
 | 
					-      vinagre_tab_find_credentials_in_keyring (tab, &keyring_domain, &keyring_username, &keyring_password);
 | 
				
			||||||
 | 
					-      if (keyring_password != NULL && keyring_username != NULL)
 | 
				
			||||||
 | 
					-        {
 | 
				
			||||||
 | 
					-          *domain = keyring_domain;
 | 
				
			||||||
 | 
					-          *username = keyring_username;
 | 
				
			||||||
 | 
					-          *password = keyring_password;
 | 
				
			||||||
 | 
					+  dialog = GTK_WIDGET (gtk_builder_get_object (builder, "auth_required_dialog"));
 | 
				
			||||||
 | 
					+  gtk_window_set_modal ((GtkWindow *) dialog, TRUE);
 | 
				
			||||||
 | 
					+  gtk_window_set_transient_for ((GtkWindow *) dialog, GTK_WINDOW (vinagre_tab_get_window (tab)));
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-          return TRUE;
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					-      else
 | 
				
			||||||
 | 
					-        {
 | 
				
			||||||
 | 
					-          g_free (keyring_domain);
 | 
				
			||||||
 | 
					-          g_free (keyring_username);
 | 
				
			||||||
 | 
					-          g_free (keyring_password);
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "host_label"));
 | 
				
			||||||
 | 
					+  gtk_label_set_text (GTK_LABEL (widget), vinagre_connection_get_host (conn));
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  username_entry = GTK_WIDGET (gtk_builder_get_object (builder, "username_entry"));
 | 
				
			||||||
 | 
					+  password_entry = GTK_WIDGET (gtk_builder_get_object (builder, "password_entry"));
 | 
				
			||||||
 | 
					+  domain_entry = GTK_WIDGET (gtk_builder_get_object (builder, "domain_entry"));
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (*username != NULL && *username[0] != '\0')
 | 
				
			||||||
 | 
					+    {
 | 
				
			||||||
 | 
					+      gtk_entry_set_text (GTK_ENTRY (username_entry), *username);
 | 
				
			||||||
 | 
					+      gtk_widget_grab_focus (password_entry);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-  if (vinagre_utils_request_credential (window,
 | 
				
			||||||
 | 
					-                                        "RDP",
 | 
				
			||||||
 | 
					-                                        vinagre_connection_get_host (conn),
 | 
				
			||||||
 | 
					-                                        vinagre_connection_get_domain (conn),
 | 
				
			||||||
 | 
					-                                        vinagre_connection_get_username (conn),
 | 
				
			||||||
 | 
					-                                        TRUE,
 | 
				
			||||||
 | 
					-                                        TRUE,
 | 
				
			||||||
 | 
					-                                        TRUE,
 | 
				
			||||||
 | 
					-                                        20,
 | 
				
			||||||
 | 
					-                                        domain,
 | 
				
			||||||
 | 
					-                                        username,
 | 
				
			||||||
 | 
					-                                        password,
 | 
				
			||||||
 | 
					-                                        &save_in_keyring))
 | 
				
			||||||
 | 
					+  g_signal_connect (username_entry, "changed", G_CALLBACK (entry_text_changed_cb), builder);
 | 
				
			||||||
 | 
					+  g_signal_connect (password_entry, "changed", G_CALLBACK (entry_text_changed_cb), builder);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "save_credential_check"));
 | 
				
			||||||
 | 
					+  save_credential_check_visible = gtk_widget_get_visible (widget);
 | 
				
			||||||
 | 
					+  gtk_widget_set_visible (widget, FALSE);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "domain_label"));
 | 
				
			||||||
 | 
					+  domain_label_visible = gtk_widget_get_visible (widget);
 | 
				
			||||||
 | 
					+  gtk_widget_set_visible (widget, TRUE);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  domain_entry_visible = gtk_widget_get_visible (domain_entry);
 | 
				
			||||||
 | 
					+  gtk_widget_set_visible (domain_entry, TRUE);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  response = gtk_dialog_run (GTK_DIALOG (dialog));
 | 
				
			||||||
 | 
					+  gtk_widget_hide (dialog);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "save_credential_check"));
 | 
				
			||||||
 | 
					+  gtk_widget_set_visible (widget, save_credential_check_visible);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "domain_label"));
 | 
				
			||||||
 | 
					+  gtk_widget_set_visible (widget, domain_label_visible);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  gtk_widget_set_visible (domain_entry, domain_entry_visible);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+  if (response == GTK_RESPONSE_OK)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-      if (*domain && **domain != '\0')
 | 
				
			||||||
 | 
					-        vinagre_connection_set_domain (conn, *domain);
 | 
				
			||||||
 | 
					+      domain_name = gtk_entry_get_text (GTK_ENTRY (domain_entry));
 | 
				
			||||||
 | 
					+      if (g_strcmp0 (*domain, domain_name) != 0)
 | 
				
			||||||
 | 
					+        *domain = g_strdup (domain_name);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-      if (*username && **username != '\0')
 | 
				
			||||||
 | 
					-        vinagre_connection_set_username (conn, *username);
 | 
				
			||||||
 | 
					+      user_name = gtk_entry_get_text (GTK_ENTRY (username_entry));
 | 
				
			||||||
 | 
					+      if (g_strcmp0 (*username, user_name) != 0)
 | 
				
			||||||
 | 
					+        *username = g_strdup (user_name);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-      if (*password && **password != '\0')
 | 
				
			||||||
 | 
					-        vinagre_connection_set_password (conn, *password);
 | 
				
			||||||
 | 
					+      *password = g_strdup (gtk_entry_get_text (GTK_ENTRY (password_entry)));
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-      vinagre_tab_set_save_credentials (tab, save_in_keyring);
 | 
				
			||||||
 | 
					+      return TRUE;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-      vinagre_tab_remove_from_notebook (tab);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					       return FALSE;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  return TRUE;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static BOOL
 | 
				
			||||||
 | 
					@@ -1028,25 +1063,30 @@ frdp_changed_certificate_verify (freerdp *instance,
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 static void
 | 
				
			||||||
 | 
					-init_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					+open_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   VinagreRdpTabPrivate *priv = rdp_tab->priv;
 | 
				
			||||||
 | 
					-  rdpSettings          *settings;
 | 
				
			||||||
 | 
					   VinagreTab           *tab = VINAGRE_TAB (rdp_tab);
 | 
				
			||||||
 | 
					   VinagreConnection    *conn = vinagre_tab_get_conn (tab);
 | 
				
			||||||
 | 
					-  gboolean              scaling;
 | 
				
			||||||
 | 
					-  gchar                *hostname;
 | 
				
			||||||
 | 
					-  gint                  width, height;
 | 
				
			||||||
 | 
					-  gint                  port;
 | 
				
			||||||
 | 
					+  rdpSettings          *settings;
 | 
				
			||||||
 | 
					+  GtkWindow            *window = GTK_WINDOW (vinagre_tab_get_window (tab));
 | 
				
			||||||
 | 
					+  gboolean              success = TRUE;
 | 
				
			||||||
 | 
					+  gboolean              fullscreen, scaling;
 | 
				
			||||||
 | 
					+  gchar                *hostname, *username;
 | 
				
			||||||
 | 
					+  gint                  port, width, height;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   g_object_get (conn,
 | 
				
			||||||
 | 
					                 "port", &port,
 | 
				
			||||||
 | 
					                 "host", &hostname,
 | 
				
			||||||
 | 
					                 "width", &width,
 | 
				
			||||||
 | 
					                 "height", &height,
 | 
				
			||||||
 | 
					+                "fullscreen", &fullscreen,
 | 
				
			||||||
 | 
					                 "scaling", &scaling,
 | 
				
			||||||
 | 
					+                "username", &username,
 | 
				
			||||||
 | 
					                 NULL);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+  priv->events = g_queue_new ();
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					   /* Setup FreeRDP session */
 | 
				
			||||||
 | 
					   priv->freerdp_session = freerdp_new ();
 | 
				
			||||||
 | 
					   priv->freerdp_session->PreConnect = frdp_pre_connect;
 | 
				
			||||||
 | 
					@@ -1111,6 +1151,17 @@ init_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					   settings->port = port;
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+  /* Set username */
 | 
				
			||||||
 | 
					+  username = g_strstrip (username);
 | 
				
			||||||
 | 
					+  if (username != NULL && username[0] != '\0')
 | 
				
			||||||
 | 
					+    {
 | 
				
			||||||
 | 
					+#if HAVE_FREERDP_1_1
 | 
				
			||||||
 | 
					+      settings->Username = g_strdup (username);
 | 
				
			||||||
 | 
					+#else
 | 
				
			||||||
 | 
					+      settings->username = g_strdup (username);
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+    }
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					   /* Set keyboard layout */
 | 
				
			||||||
 | 
					 #if HAVE_FREERDP_1_1
 | 
				
			||||||
 | 
					   freerdp_keyboard_init (KBD_US);
 | 
				
			||||||
 | 
					@@ -1120,24 +1171,6 @@ init_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   /* Allow font smoothing by default */
 | 
				
			||||||
 | 
					   settings->AllowFontSmoothing = TRUE;
 | 
				
			||||||
 | 
					-}
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-static void
 | 
				
			||||||
 | 
					-init_display (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					-{
 | 
				
			||||||
 | 
					-  VinagreRdpTabPrivate *priv = rdp_tab->priv;
 | 
				
			||||||
 | 
					-  VinagreTab           *tab = VINAGRE_TAB (rdp_tab);
 | 
				
			||||||
 | 
					-  VinagreConnection    *conn = vinagre_tab_get_conn (tab);
 | 
				
			||||||
 | 
					-  GtkWindow            *window = GTK_WINDOW (vinagre_tab_get_window (tab));
 | 
				
			||||||
 | 
					-  gboolean              fullscreen, scaling;
 | 
				
			||||||
 | 
					-  gint                  width, height;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  g_object_get (conn,
 | 
				
			||||||
 | 
					-                "width", &width,
 | 
				
			||||||
 | 
					-                "height", &height,
 | 
				
			||||||
 | 
					-                "fullscreen", &fullscreen,
 | 
				
			||||||
 | 
					-                "scaling", &scaling,
 | 
				
			||||||
 | 
					-                NULL);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   /* Setup display for FreeRDP session */
 | 
				
			||||||
 | 
					   priv->display = gtk_drawing_area_new ();
 | 
				
			||||||
 | 
					@@ -1186,54 +1219,20 @@ init_display (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					   priv->key_release_handler_id = g_signal_connect (GTK_WIDGET (tab), "key-release-event",
 | 
				
			||||||
 | 
					                                                    G_CALLBACK (frdp_key_pressed),
 | 
				
			||||||
 | 
					                                                    rdp_tab);
 | 
				
			||||||
 | 
					-}
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-static void
 | 
				
			||||||
 | 
					-open_freerdp (VinagreRdpTab *rdp_tab)
 | 
				
			||||||
 | 
					-{
 | 
				
			||||||
 | 
					-  VinagreRdpTabPrivate *priv = rdp_tab->priv;
 | 
				
			||||||
 | 
					-  VinagreTab           *tab = VINAGRE_TAB (rdp_tab);
 | 
				
			||||||
 | 
					-  GtkWindow            *window = GTK_WINDOW (vinagre_tab_get_window (tab));
 | 
				
			||||||
 | 
					-  gboolean              success = TRUE;
 | 
				
			||||||
 | 
					-  gboolean              authentication_error = FALSE;
 | 
				
			||||||
 | 
					-  gboolean              cancelled = FALSE;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  priv->events = g_queue_new ();
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  init_freerdp (rdp_tab);
 | 
				
			||||||
 | 
					-  init_display (rdp_tab);
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-  do
 | 
				
			||||||
 | 
					-    {
 | 
				
			||||||
 | 
					-      authentication_error = FALSE;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-      /* Run FreeRDP session */
 | 
				
			||||||
 | 
					-      success = freerdp_connect (priv->freerdp_session);
 | 
				
			||||||
 | 
					-      if (!success)
 | 
				
			||||||
 | 
					-        {
 | 
				
			||||||
 | 
					-          authentication_error = freerdp_get_last_error (priv->freerdp_session->context) == 0x20009 ||
 | 
				
			||||||
 | 
					-                                 freerdp_get_last_error (priv->freerdp_session->context) == 0x2000c;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-          cancelled = freerdp_get_last_error (priv->freerdp_session->context) == 0x2000b;
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					-          freerdp_free (priv->freerdp_session);
 | 
				
			||||||
 | 
					-          init_freerdp (rdp_tab);
 | 
				
			||||||
 | 
					-        }
 | 
				
			||||||
 | 
					-    }
 | 
				
			||||||
 | 
					-  while (!success && authentication_error);
 | 
				
			||||||
 | 
					+  /* Run FreeRDP session */
 | 
				
			||||||
 | 
					+  success = freerdp_connect (priv->freerdp_session);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   if (!success)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					       gtk_window_unfullscreen (window);
 | 
				
			||||||
 | 
					-      if (!cancelled)
 | 
				
			||||||
 | 
					-        vinagre_utils_show_error_dialog (_("Error connecting to host."),
 | 
				
			||||||
 | 
					-                                         NULL,
 | 
				
			||||||
 | 
					-                                         window);
 | 
				
			||||||
 | 
					+      vinagre_utils_show_error_dialog (_("Error connecting to host."),
 | 
				
			||||||
 | 
					+                                       NULL,
 | 
				
			||||||
 | 
					+                                       window);
 | 
				
			||||||
 | 
					       g_idle_add ((GSourceFunc) idle_close, rdp_tab);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   else
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					-      priv->authentication_attempts = 0;
 | 
				
			||||||
 | 
					       priv->update_id = g_idle_add ((GSourceFunc) update, rdp_tab);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					-- 
 | 
				
			||||||
 | 
					2.9.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,51 +70,54 @@ to remotely control a user's Windows desktop.")
 | 
				
			||||||
    (license license:gpl3+)))
 | 
					    (license license:gpl3+)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public freerdp
 | 
					(define-public freerdp
 | 
				
			||||||
  (package
 | 
					  (let ((commit "03ab68318966c3a22935a02838daaea7b7fbe96c"))
 | 
				
			||||||
    (name "freerdp")
 | 
					    (package
 | 
				
			||||||
    (version "2.0.0-rc0")
 | 
					      (name "freerdp")
 | 
				
			||||||
    (source (origin
 | 
					      (version (git-version "1.1" "1" commit))
 | 
				
			||||||
              (method url-fetch)
 | 
					      (source (origin
 | 
				
			||||||
              (uri (string-append "https://github.com/FreeRDP/FreeRDP/archive/"
 | 
					                (method git-fetch)
 | 
				
			||||||
                                  version ".tar.gz"))
 | 
					                (uri (git-reference
 | 
				
			||||||
              (file-name (string-append name "-" version ".tar.gz"))
 | 
					                      ;; We need the 1.1 branch for RDP support in vinagre.
 | 
				
			||||||
              (sha256
 | 
					                      (url "git://github.com/FreeRDP/FreeRDP.git")
 | 
				
			||||||
               (base32 "0r36zwhl7fhmdng5pvl2a106gqbcqq184g2i2klz6ilna8pxjcml"))))
 | 
					                      (commit commit)))
 | 
				
			||||||
    (build-system cmake-build-system)
 | 
					                (file-name (git-file-name name version))
 | 
				
			||||||
    (native-inputs
 | 
					                (sha256
 | 
				
			||||||
     `(("pkg-config" ,pkg-config)
 | 
					                 (base32 "07ish8rmvbk2zd99k91qybmmh5h4afly75l5kbvslhq1r6k8pbmp"))))
 | 
				
			||||||
       ("xmlto" ,xmlto)))
 | 
					      (build-system cmake-build-system)
 | 
				
			||||||
    (inputs
 | 
					      (native-inputs
 | 
				
			||||||
     `(("libx11" ,libx11)
 | 
					       `(("pkg-config" ,pkg-config)
 | 
				
			||||||
       ("libxkbfile" ,libxkbfile)
 | 
					         ("xmlto" ,xmlto)))
 | 
				
			||||||
       ("libxcursor" ,libxcursor)
 | 
					      (inputs
 | 
				
			||||||
       ("libxext" ,libxext)
 | 
					       `(("libx11" ,libx11)
 | 
				
			||||||
       ("libxi" ,libxi)
 | 
					         ("libxkbfile" ,libxkbfile)
 | 
				
			||||||
       ("libxv" ,libxv)
 | 
					         ("libxcursor" ,libxcursor)
 | 
				
			||||||
       ("libxrandr" ,libxrandr)
 | 
					         ("libxext" ,libxext)
 | 
				
			||||||
       ("libxrender" ,libxrender)
 | 
					         ("libxi" ,libxi)
 | 
				
			||||||
       ("libxinerama" ,libxinerama)
 | 
					         ("libxv" ,libxv)
 | 
				
			||||||
       ("libxshmfence" ,libxshmfence)
 | 
					         ("libxrandr" ,libxrandr)
 | 
				
			||||||
       ("libxml2" ,libxml2)
 | 
					         ("libxrender" ,libxrender)
 | 
				
			||||||
       ("libxslt" ,libxslt)
 | 
					         ("libxinerama" ,libxinerama)
 | 
				
			||||||
       ("cups" ,cups)
 | 
					         ("libxshmfence" ,libxshmfence)
 | 
				
			||||||
       ("ffmpeg" ,ffmpeg)
 | 
					         ("libxml2" ,libxml2)
 | 
				
			||||||
       ("pulseaudio" ,pulseaudio)
 | 
					         ("libxslt" ,libxslt)
 | 
				
			||||||
       ("alsa-lib" ,alsa-lib)
 | 
					         ("cups" ,cups)
 | 
				
			||||||
       ("gstreamer" ,gstreamer)
 | 
					         ("ffmpeg" ,ffmpeg-2.8)
 | 
				
			||||||
       ("gst-plugins-base" ,gst-plugins-base)
 | 
					         ("pulseaudio" ,pulseaudio)
 | 
				
			||||||
       ("zlib" ,zlib)
 | 
					         ("alsa-lib" ,alsa-lib)
 | 
				
			||||||
       ("openssl" ,openssl)))
 | 
					         ("gstreamer" ,gstreamer)
 | 
				
			||||||
    (arguments
 | 
					         ("gst-plugins-base" ,gst-plugins-base)
 | 
				
			||||||
     `(#:configure-flags
 | 
					         ("zlib" ,zlib)
 | 
				
			||||||
       '("-DCMAKE_INSTALL_LIBDIR=lib"
 | 
					         ("openssl" ,openssl)))
 | 
				
			||||||
         "-DWITH_PULSE=ON"
 | 
					      (arguments
 | 
				
			||||||
         "-DWITH_CUPS=ON")
 | 
					       `(#:configure-flags
 | 
				
			||||||
       #:tests? #f))                              ; no 'test' target
 | 
					         '("-DCMAKE_INSTALL_LIBDIR=lib"
 | 
				
			||||||
    (home-page "https://www.freerdp.com")
 | 
					           "-DWITH_PULSE=ON"
 | 
				
			||||||
    (synopsis "Remote Desktop Protocol implementation")
 | 
					           "-DWITH_CUPS=ON")
 | 
				
			||||||
    (description "FreeRDP implements Microsoft's Remote Desktop Protocol.  It
 | 
					         #:tests? #f))                              ; no 'test' target
 | 
				
			||||||
consists of the @code{xfreerdp} client, libraries for client and server
 | 
					      (home-page "https://www.freerdp.com")
 | 
				
			||||||
 | 
					      (synopsis "Remote Desktop Protocol implementation")
 | 
				
			||||||
 | 
					      (description "FreeRDP implements Microsoft's Remote Desktop Protocol.
 | 
				
			||||||
 | 
					It consists of the @code{xfreerdp} client, libraries for client and server
 | 
				
			||||||
functionality, and Windows Portable Runtime (WinPR), a portable implementation
 | 
					functionality, and Windows Portable Runtime (WinPR), a portable implementation
 | 
				
			||||||
of parts of the Windows API.")
 | 
					of parts of the Windows API.")
 | 
				
			||||||
    (license license:asl2.0)))
 | 
					    (license license:asl2.0))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue