aboutsummaryrefslogtreecommitdiffstats
path: root/main/remmina
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2014-11-06 18:21:06 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2014-11-06 18:21:06 +0000
commit3bb55faf0c0fcf1398369110fb9256fe2459f7e4 (patch)
treed0e2964d8ffe875f01426321c522fb7d200581a6 /main/remmina
parentfdb615aa5746665529b9ca10414569b0799a2695 (diff)
downloadaports-3bb55faf0c0fcf1398369110fb9256fe2459f7e4.tar.bz2
aports-3bb55faf0c0fcf1398369110fb9256fe2459f7e4.tar.xz
main/remmina: upgrade to 1.1.1
Diffstat (limited to 'main/remmina')
-rw-r--r--main/remmina/APKBUILD77
-rw-r--r--main/remmina/remmina-1.0.0-add-clipboard-support.patch663
-rw-r--r--main/remmina/remmina-1.0.0-clipboard-bugfix.patch73
-rw-r--r--main/remmina/remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch53
-rw-r--r--main/remmina/remmina-1.0.0-fix-library-name.patch25
-rw-r--r--main/remmina/remmina-1.0.0-fix-memory-leak.patch24
-rw-r--r--main/remmina/remmina-1.0.0-linker-error.patch262
-rw-r--r--main/remmina/remmina-1.0.0-some-more-clipboard-fixes.patch180
-rw-r--r--main/remmina/remmina-1.0.0-vte2.91.patch50
-rw-r--r--main/remmina/vte3.patch55
10 files changed, 131 insertions, 1331 deletions
diff --git a/main/remmina/APKBUILD b/main/remmina/APKBUILD
index d50001d49e..2f62600ad1 100644
--- a/main/remmina/APKBUILD
+++ b/main/remmina/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=remmina
-pkgver=1.0.0
-pkgrel=10
+pkgver=1.1.1
+pkgrel=0
pkgdesc="Remmina is a remote desktop client written in GTK+"
url="http://remmina.sourceforge.net/"
arch="all"
@@ -9,25 +9,19 @@ license="GPL"
depends=
makedepends="gtk+3.0-dev intltool zlib-dev libjpeg-turbo-dev gnutls-dev
vte3-dev libgcrypt-dev libssh-dev libxkbfile-dev freerdp-dev
- avahi-ui-dev cmake"
+ avahi-ui-dev libvncserver-dev cmake"
install=
replaces="remmina-plugins"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://github.com/downloads/FreeRDP/Remmina/Remmina-$pkgver.tar.gz
+source="Remmina-$pkgver.tar.gz::https://github.com/FreeRDP/Remmina/archive/v$pkgver.tar.gz
no-gnome-keyring.patch
- remmina-1.0.0-add-clipboard-support.patch
- remmina-1.0.0-clipboard-bugfix.patch
- remmina-1.0.0-some-more-clipboard-fixes.patch
- remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch
- remmina-1.0.0-fix-memory-leak.patch
- remmina-1.0.0-linker-error.patch
remmina-1.0.0-dsofix.patch
- remmina-1.0.0-fix-library-name.patch
libintl-underlink.patch
+ vte3.patch
"
prepare() {
- cd "$srcdir"/FreeRDP-Remmina-*
+ cd "$srcdir"/Remmina-$pkgver
for patch in $source; do
case $patch in
*.patch)
@@ -39,59 +33,40 @@ prepare() {
}
build() {
- cd "$srcdir"/FreeRDP-Remmina-*
+ cd "$srcdir"/Remmina-$pkgver
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DWITH_PTHREAD=ON \
- -DWITH_TELEPATHY=OFF \
+ -DCMAKE_INSTALL_LIBDIR=lib \
-DWITH_APPINDICATOR=OFF \
-DWITH_AVAHI=ON \
+ -DWITH_FREERDP=ON \
+ -DWITH_GCRYPT=ON \
+ -DWITH_LIBSSH=ON \
+ -DWITH_PTHREAD=ON \
+ -DWITH_TELEPATHY=OFF \
+ -DWITH_VTE=ON \
+ -DWITH_ZLIB=ON \
|| return 1
make || return 1
}
package() {
- cd "$srcdir"/FreeRDP-Remmina-*
- make DESTDIR="$pkgdir" install
- # dirty hack
- mkdir -p "$pkgdir"/usr/share/applications
- sed 's,^_,,g' remmina/desktop/remmina.desktop.in \
- > "$pkgdir"/usr/share/applications/remmina.desktop \
- || return 1
- mv "$pkgdir"/usr/share/remmina/icons "$pkgdir"/usr/share/icons \
- || return 1
+ cd "$srcdir"/Remmina-$pkgver
+ make DESTDIR="$pkgdir" install || return 1
}
-md5sums="701c540acaab961bc3adf130a2ddb8b1 Remmina-1.0.0.tar.gz
+md5sums="481dd96ebf7b14e4fd4df8648040b725 Remmina-1.1.1.tar.gz
178d55f7aa59d6dc73b19e03201ad1e4 no-gnome-keyring.patch
-9312b5bf953a63e6203f0d0be6cb8134 remmina-1.0.0-add-clipboard-support.patch
-65bfcc39ae51343b90928ea329cc4900 remmina-1.0.0-clipboard-bugfix.patch
-42b971116f887657fc210da70c3afba5 remmina-1.0.0-some-more-clipboard-fixes.patch
-04b5bc1190b53211747e097897d1d19c remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch
-3bc1a4e50cdd864c0e2d7c91a1e02e32 remmina-1.0.0-fix-memory-leak.patch
-b23b424509e968332be1b83c1063a252 remmina-1.0.0-linker-error.patch
144e8f4127ccec7282060800147a48ea remmina-1.0.0-dsofix.patch
-82b5007ed3bcb57b4f98b16eb9725ba8 remmina-1.0.0-fix-library-name.patch
-e5af6b49e42462550f51843ef8326076 libintl-underlink.patch"
-sha256sums="7cd0d2d6adbd96c7139da8c4bfc4cf4821e1fa97242bb9cc9db32a53df289731 Remmina-1.0.0.tar.gz
+e5af6b49e42462550f51843ef8326076 libintl-underlink.patch
+d1d0e9a581d53ca7f49ce47ffb3db0f8 vte3.patch"
+sha256sums="c96485a919848d9c1602c38075359b10417f4285659588b115b75d2cd5a4e884 Remmina-1.1.1.tar.gz
fb6094af599b64a1944f9a13a767e846d8bf772470690073da76cfd5eed799c2 no-gnome-keyring.patch
-7a1b539d4fc72e1be0792855396f78b1f64faeb5ff05a8c21309e842a23ef6be remmina-1.0.0-add-clipboard-support.patch
-a826dcd93f5fb38285389294c0097c76086cdd14b49ac05622a0c2d5b448c149 remmina-1.0.0-clipboard-bugfix.patch
-4e95f6404e937f5e24ee21620ee0700643b5f519796cc4ae8e78e24a4bdd5e68 remmina-1.0.0-some-more-clipboard-fixes.patch
-3319a85e0bd7dce27b02007b2030189f2fb9b67f4e76f7e51bf3bd12b8bf641d remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch
-79477964423c03b50663cae76035474c208989bb5c25b3b5c16afa0b0921ba0b remmina-1.0.0-fix-memory-leak.patch
-199ba96f3a20f3679e53419eb4d5aa99ec16c80a4ddace6a9b2427a5cb0200d7 remmina-1.0.0-linker-error.patch
701cf9b0d6560ae9eee375f3c2828e449666190664fb28c9ccd95627db5d92e4 remmina-1.0.0-dsofix.patch
-9a996b1c203089917711af9ec5c7b9f9af668afe226c84e1cfa8ddb007d1b66d remmina-1.0.0-fix-library-name.patch
-a8065f8bef88417bdfd8631441da19c9f945e0cc7131382e33a9f2c26f4e6017 libintl-underlink.patch"
-sha512sums="585fff5eb4585978ee321e481fafa057052d39ca01690a4e3bb7e9add94bb968373ab30001ef18c7578bc98b24df25ff4ab7a0fc882d99770b2dce079c4d39a6 Remmina-1.0.0.tar.gz
+a8065f8bef88417bdfd8631441da19c9f945e0cc7131382e33a9f2c26f4e6017 libintl-underlink.patch
+43d6ae0141beafde8f1e40160f885ff465576c40effd9935d986b78d58da0392 vte3.patch"
+sha512sums="09bacd725522e0a57a1e387db778fe735d0f0d4ce62a63ad4f02799e225296509d075c56fb0c81d6b0c16ab2242889104271e1ecd508417e0aaeed7a35eea594 Remmina-1.1.1.tar.gz
5e0d26e799c9b85ae0c5bd7b9e6f07fd4a2da15c12b2a649098603c84d7dda6bfa518b0295edecc7522ab06c1a84d444083634d9fedb7d44b65b86dfc2eef65b no-gnome-keyring.patch
-e84de833b76b5796c21829a410e46287cd268ecdd34cf453a8b56afdab1e991390e0dbc54d3ea60a2378cfd5a43907b0901b8cd9bf362d9354619554cc5e9934 remmina-1.0.0-add-clipboard-support.patch
-8233f41a50f9e4ddd172af5644a34dc1e9c7675d678c1fcb5fb02f38ff7238ffabbebbe241aa3bbcad4429c93fa29d6ffcd78b85ddd0c63631d31230b95b13c9 remmina-1.0.0-clipboard-bugfix.patch
-d31b26006acc45da8fb4a785c67c1252c924cb39a3437d2b3893bdb25bface7ca05f63a00d07e1ce82afcf7c05d5d810caf9ffb06f0a658a7a5a5d4c1b643591 remmina-1.0.0-some-more-clipboard-fixes.patch
-5c103a73d7c16022b526c21d710fef189e8058010f0553cf2da1676f4992bb89a5003b2268903d4d28b64cf3a9fe5797dfa991863e4f24045942aeda6371aa40 remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch
-b836a73cba79a7e8357066e84a1d751843867d858bcbb48c731308b222826f6cf82788462a8e95b07a2617c835fe57ac14e6b291919b85bd8a1e13281ac17902 remmina-1.0.0-fix-memory-leak.patch
-175b2538540fdf32cdf5b217852683a5ce3833fd5ec08a4e1c9a85145aeaada2c280afb2912476fb45e5283ca27ffdea73684c8e49650f7b809317fa948a2465 remmina-1.0.0-linker-error.patch
4b8299c65b9a1bc529fd44fdb05033d5dfd7e5589daea7056d275011a6f01f4154141ae9b787581de646019c9f15b0493da39484850b2df052df33824c67dd91 remmina-1.0.0-dsofix.patch
-eb26b108b1cf27ac6c71200e121f0b3276f4aeb1e4938bd13f332a228fe5a001adafffa3297ac1cf545d8a302fdb6c3f9457de766d07b92347758ae4822184e1 remmina-1.0.0-fix-library-name.patch
-43fa8caf186bac447921aa13c89ebf378f72d00a2d9c6bc76b4408c70fea3205e450e8cc7b145f4d5b3c6719e667be983d6e9f5b52fda00e10ecf7a48696c88b libintl-underlink.patch"
+43fa8caf186bac447921aa13c89ebf378f72d00a2d9c6bc76b4408c70fea3205e450e8cc7b145f4d5b3c6719e667be983d6e9f5b52fda00e10ecf7a48696c88b libintl-underlink.patch
+46357e5e407db83704efd8270bd6a86d07aad17f6adf2183551ddd82efccb169124e3b85b146248dc74b6bdd360df606f346c557f36782e15838bedca3212340 vte3.patch"
diff --git a/main/remmina/remmina-1.0.0-add-clipboard-support.patch b/main/remmina/remmina-1.0.0-add-clipboard-support.patch
deleted file mode 100644
index b5fd340c90..0000000000
--- a/main/remmina/remmina-1.0.0-add-clipboard-support.patch
+++ /dev/null
@@ -1,663 +0,0 @@
-From 3ebdd6e7b0ee53ecdaf0d14bada6b92e7334b12a Mon Sep 17 00:00:00 2001
-From: Jean-Louis Dupond <jean-louis@dupond.be>
-Date: Mon, 30 Apr 2012 23:10:04 +0200
-Subject: [PATCH] Add clipboard support
-
----
- remmina-plugins/rdp/CMakeLists.txt | 2 +
- remmina-plugins/rdp/rdp_cliprdr.c | 459 ++++++++++++++++++++++++++++++++++++
- remmina-plugins/rdp/rdp_cliprdr.h | 33 +++
- remmina-plugins/rdp/rdp_event.c | 19 ++
- remmina-plugins/rdp/rdp_plugin.c | 15 ++
- remmina-plugins/rdp/rdp_plugin.h | 6 +-
- 6 files changed, 533 insertions(+), 1 deletion(-)
- create mode 100644 remmina-plugins/rdp/rdp_cliprdr.c
- create mode 100644 remmina-plugins/rdp/rdp_cliprdr.h
-
-diff --git a/remmina-plugins/rdp/CMakeLists.txt b/remmina-plugins/rdp/CMakeLists.txt
-index e3ec20b..8ae4a4d 100644
---- a/remmina-plugins/rdp/CMakeLists.txt
-+++ b/remmina-plugins/rdp/CMakeLists.txt
-@@ -33,6 +33,8 @@ set(REMMINA_PLUGIN_RDP_SRCS
- rdp_gdi.h
- rdp_graphics.c
- rdp_graphics.h
-+ rdp_cliprdr.c
-+ rdp_cliprdr.h
- )
-
- add_library(remmina-plugin-rdp ${REMMINA_PLUGIN_RDP_SRCS})
-diff --git a/remmina-plugins/rdp/rdp_cliprdr.c b/remmina-plugins/rdp/rdp_cliprdr.c
-new file mode 100644
-index 0000000..0821ffa
---- /dev/null
-+++ b/remmina-plugins/rdp/rdp_cliprdr.c
-@@ -0,0 +1,459 @@
-+/*
-+ * Remmina - The GTK+ Remote Desktop Client
-+ * Copyright (C) 2012-2012 Jean-Louis Dupond
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+#include "rdp_plugin.h"
-+#include "rdp_cliprdr.h"
-+
-+#include <freerdp/freerdp.h>
-+#include <freerdp/utils/memory.h>
-+#include <freerdp/channels/channels.h>
-+#include <freerdp/plugins/cliprdr.h>
-+
-+/*
-+ * Get the formats we can export based on the current clipboard data.
-+ */
-+void remmina_rdp_cliprdr_get_target_types(uint32** dst_formats, uint16* size, GdkAtom* types, int count)
-+{
-+ int i;
-+ gboolean image = FALSE;
-+ gboolean text = FALSE;
-+ gboolean textutf8 = FALSE;
-+ int matches = 1;
-+ uint32* formats = (uint32*) xmalloc(sizeof(uint32) * 10);
-+
-+ formats[0] = CB_FORMAT_RAW;
-+ for (i = 0; i < count; i++)
-+ {
-+ GdkAtom atom = GDK_POINTER_TO_ATOM(types[i]);
-+ gchar* name = gdk_atom_name(atom);
-+ if (g_strcmp0("UTF8_STRING", name) == 0 || g_strcmp0("text/plain;charset=utf-8", name) == 0)
-+ {
-+ textutf8 = TRUE;
-+ }
-+ if (g_strcmp0("TEXT", name) == 0 || g_strcmp0("text/plain", name) == 0)
-+ {
-+ text = TRUE;
-+ }
-+ if (g_strcmp0("text/html", name) == 0)
-+ {
-+ formats[matches] = CB_FORMAT_HTML;
-+ matches++;
-+ }
-+ if (g_strcmp0("image/png", name) == 0)
-+ {
-+ formats[matches] = CB_FORMAT_PNG;
-+ image = TRUE;
-+ matches++;
-+ }
-+ if (g_strcmp0("image/jpeg", name) == 0)
-+ {
-+ formats[matches] = CB_FORMAT_JPEG;
-+ image = TRUE;
-+ matches++;
-+ }
-+ if (g_strcmp0("image/bmp", name) == 0)
-+ {
-+ formats[matches] = CB_FORMAT_DIB;
-+ image = TRUE;
-+ matches++;
-+ }
-+ }
-+ //Only add text formats if we don't have image formats
-+ if (!image)
-+ {
-+ if (textutf8)
-+ {
-+ formats[matches] = CB_FORMAT_UNICODETEXT;
-+ matches++;
-+ }
-+ if (text)
-+ {
-+ formats[matches] = CB_FORMAT_TEXT;
-+ matches++;
-+ }
-+ }
-+
-+ *size = (uint16)matches;
-+ *dst_formats = (uint32*) xmalloc(sizeof(uint32) * matches);
-+ memcpy(*dst_formats, formats, sizeof(uint32) * matches);
-+ g_free(formats);
-+}
-+
-+int remmina_rdp_cliprdr_send_format_list_event(RemminaProtocolWidget* gp)
-+{
-+ GtkClipboard* clipboard;
-+ GdkAtom* targets;
-+ gboolean result = 0;
-+ gint count;
-+ RDP_EVENT* rdp_event;
-+ RDP_CB_FORMAT_LIST_EVENT* format_list_event;
-+ rfContext* rfi = GET_DATA(gp);
-+
-+ /* Lets see if we have something in our clipboard */
-+ THREADS_ENTER
-+ clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
-+ if (clipboard)
-+ {
-+ result = gtk_clipboard_wait_for_targets(clipboard, &targets, &count);
-+ }
-+ THREADS_LEAVE
-+
-+ if (!result)
-+ return 1;
-+
-+ int i;
-+ for (i = 0; i < count; i++)
-+ {
-+ g_printf("Target %d: %s\n", i, gdk_atom_name(targets[i]));
-+ }
-+
-+ rdp_event = (RDP_EVENT*) xnew(RDP_CB_FORMAT_LIST_EVENT);
-+ rdp_event->event_class = RDP_EVENT_CLASS_CLIPRDR;
-+ rdp_event->event_type = RDP_EVENT_TYPE_CB_FORMAT_LIST;
-+ format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) rdp_event;
-+
-+ remmina_rdp_cliprdr_get_target_types(&format_list_event->formats, &format_list_event->num_formats, targets, count);
-+ g_free(targets);
-+
-+ int num_formats = format_list_event->num_formats;
-+ g_printf("Sending %d formats\n", num_formats);
-+ for (i = 0; i < num_formats; i++)
-+ {
-+ g_printf("Sending format %#X\n", format_list_event->formats[i]);
-+ }
-+
-+ return freerdp_channels_send_event(rfi->channels, (RDP_EVENT*) format_list_event);
-+}
-+
-+static uint8* lf2crlf(uint8* data, int* size)
-+{
-+ uint8 c;
-+ uint8* outbuf;
-+ uint8* out;
-+ uint8* in_end;
-+ uint8* in;
-+ int out_size;
-+
-+ out_size = (*size) * 2 + 1;
-+ outbuf = (uint8*) xmalloc(out_size);
-+ out = outbuf;
-+ in = data;
-+ in_end = data + (*size);
-+
-+ while (in < in_end)
-+ {
-+ c = *in++;
-+ if (c == '\n')
-+ {
-+ *out++ = '\r';
-+ *out++ = '\n';
-+ }
-+ else
-+ {
-+ *out++ = c;
-+ }
-+ }
-+
-+ *out++ = 0;
-+ *size = out - outbuf;
-+
-+ return outbuf;
-+}
-+
-+static void crlf2lf(uint8* data, int* size)
-+{
-+ uint8 c;
-+ uint8* out;
-+ uint8* in;
-+ uint8* in_end;
-+
-+ out = data;
-+ in = data;
-+ in_end = data + (*size);
-+
-+ while (in < in_end)
-+ {
-+ c = *in++;
-+
-+ if (c != '\r')
-+ *out++ = c;
-+ }
-+
-+ *size = out - data;
-+}
-+
-+uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, int* size)
-+{
-+ g_printf("GetData: Requested Format: %#X\n", format);
-+ rfContext* rfi = GET_DATA(gp);
-+ GtkClipboard* clipboard;
-+ uint8* inbuf = NULL;
-+ uint8* outbuf = NULL;
-+ GdkPixbuf *image = NULL;
-+
-+ THREADS_ENTER
-+ clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
-+ if (clipboard)
-+ {
-+ if (format == CB_FORMAT_TEXT || format == CB_FORMAT_UNICODETEXT || format == CB_FORMAT_HTML)
-+ {
-+ inbuf = (uint8*)gtk_clipboard_wait_for_text(clipboard);
-+ }
-+ if (format == CB_FORMAT_PNG || format == CB_FORMAT_JPEG || format == CB_FORMAT_DIB)
-+ {
-+ image = gtk_clipboard_wait_for_image(clipboard);
-+ }
-+ }
-+ THREADS_LEAVE
-+
-+ if (format == CB_FORMAT_TEXT || format == CB_FORMAT_HTML || format == CB_FORMAT_UNICODETEXT)
-+ {
-+ lf2crlf(inbuf, size);
-+ if (format == CB_FORMAT_TEXT)
-+ {
-+ outbuf = inbuf;
-+ }
-+ if (format == CB_FORMAT_HTML)
-+ {
-+ //TODO: check if we need special handling for HTML
-+ outbuf = inbuf;
-+ }
-+ if (format == CB_FORMAT_UNICODETEXT)
-+ {
-+ size_t out_size;
-+ UNICONV* uniconv;
-+
-+ uniconv = freerdp_uniconv_new();
-+ outbuf = (uint8*) freerdp_uniconv_out(uniconv, (char*) inbuf, &out_size);
-+ freerdp_uniconv_free(uniconv);
-+ *size = out_size + 2;
-+ }
-+ }
-+ if (format == CB_FORMAT_PNG || format == CB_FORMAT_JPEG || format == CB_FORMAT_DIB)
-+ {
-+ gchar* data;
-+ gsize buffersize;
-+ if (format == CB_FORMAT_PNG)
-+ {
-+ gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "png", NULL, NULL);
-+ memcpy(outbuf, data, buffersize);
-+ }
-+ if (format == CB_FORMAT_JPEG)
-+ {
-+ gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "jpeg", NULL, NULL);
-+ memcpy(outbuf, data, buffersize);
-+ }
-+ if (format == CB_FORMAT_DIB)
-+ {
-+ gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "bmp", NULL, NULL);
-+ *size = buffersize - 14;
-+ g_printf("Size of pixels: %d\n", *size);
-+ outbuf = (uint8*) xmalloc(*size);
-+ memcpy(outbuf, data + 14, *size);
-+ }
-+ }
-+
-+ if (!outbuf)
-+ outbuf = (uint8*)"";
-+
-+ return outbuf;
-+}
-+
-+void remmina_rdp_cliprdr_parse_response_event(RemminaProtocolWidget* gp, RDP_EVENT* event)
-+{
-+ g_printf("Received RDP_EVENT_TYPE_CB_DATA_RESPONSE\n");
-+
-+ GtkClipboard* clipboard;
-+ GdkPixbuf *image = NULL;
-+ uint8* data;
-+ int size;
-+ gboolean text = FALSE;
-+ gboolean img = FALSE;
-+ rfContext* rfi = GET_DATA(gp);
-+ RDP_CB_DATA_RESPONSE_EVENT* data_response_event;
-+
-+ data_response_event = (RDP_CB_DATA_RESPONSE_EVENT*) event;
-+ data = data_response_event->data;
-+ size = data_response_event->size;
-+
-+ g_printf("Requested format was: 0x%x\n", rfi->requested_format);
-+
-+ if (rfi->requested_format == CB_FORMAT_TEXT || rfi->requested_format == CB_FORMAT_UNICODETEXT || rfi->requested_format == CB_FORMAT_HTML)
-+ {
-+ if (rfi->requested_format == CB_FORMAT_UNICODETEXT)
-+ {
-+ UNICONV* uniconv;
-+
-+ uniconv = freerdp_uniconv_new();
-+ data = (uint8*) freerdp_uniconv_in(uniconv, data, size);
-+ size = strlen((char*) data);
-+ freerdp_uniconv_free(uniconv);
-+ }
-+ crlf2lf(data, &size);
-+ text = TRUE;
-+ }
-+ if (rfi->requested_format == CB_FORMAT_DIB || rfi->requested_format == CB_FORMAT_PNG || rfi->requested_format == CB_FORMAT_JPEG)
-+ {
-+ /* Reconstruct header */
-+ if (rfi->requested_format == CB_FORMAT_DIB)
-+ {
-+ STREAM* s;
-+ uint16 bpp;
-+ uint32 offset;
-+ uint32 ncolors;
-+
-+ s = stream_new(0);
-+ stream_attach(s, data, size);
-+ stream_seek(s, 14);
-+ stream_read_uint16(s, bpp);
-+ stream_read_uint32(s, ncolors);
-+ offset = 14 + 40 + (bpp <= 8 ? (ncolors == 0 ? (1 << bpp) : ncolors) * 4 : 0);
-+ stream_detach(s);
-+ stream_free(s);
-+
-+ s = stream_new(14 + size);
-+ stream_write_uint8(s, 'B');
-+ stream_write_uint8(s, 'M');
-+ stream_write_uint32(s, 14 + size);
-+ stream_write_uint32(s, 0);
-+ stream_write_uint32(s, offset);
-+ stream_write(s, data, size);
-+
-+ data = stream_get_head(s);
-+ size = stream_get_length(s);
-+ stream_detach(s);
-+ stream_free(s);
-+ }
-+ GdkPixbufLoader *pixbuf;
-+ pixbuf = gdk_pixbuf_loader_new();
-+ gdk_pixbuf_loader_write(pixbuf, data, size, NULL);
-+ image = gdk_pixbuf_loader_get_pixbuf(pixbuf);
-+ img = TRUE;
-+ }
-+
-+ THREADS_ENTER
-+ clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
-+ if (clipboard)
-+ {
-+ if (text || img)
-+ rfi->clipboard_wait = TRUE;
-+ if (text)
-+ gtk_clipboard_set_text(clipboard, (gchar*)data, size);
-+ if (img)
-+ gtk_clipboard_set_image(clipboard, image);
-+ }
-+ THREADS_LEAVE
-+
-+}
-+
-+void remmina_handle_channel_event(RemminaProtocolWidget* gp, RDP_EVENT* event)
-+{
-+ RDP_EVENT* rdp_event = NULL;
-+ rfContext* rfi = GET_DATA(gp);
-+
-+ switch (event->event_class)
-+ {
-+ case RDP_EVENT_CLASS_CLIPRDR:
-+ g_printf("Event ID: %d\n", event->event_type);
-+ if (event->event_type == RDP_EVENT_TYPE_CB_MONITOR_READY)
-+ {
-+ g_printf("Received CB_MONITOR_READY - Sending RDP_EVENT_TYPE_CB_FORMAT_LIST\n");
-+ /* Sending our format list */
-+ remmina_rdp_cliprdr_send_format_list_event(gp);
-+ }
-+ if (event->event_type == RDP_EVENT_TYPE_CB_FORMAT_LIST)
-+ {
-+ /* We received a FORMAT_LIST from the server, update our clipboard */
-+ g_printf("Received RDP_EVENT_TYPE_CB_FORMAT_LIST\n");
-+ int i;
-+ uint32 format = CB_FORMAT_RAW;
-+ RDP_CB_FORMAT_LIST_EVENT* format_list_event;
-+
-+ format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
-+
-+ g_printf("Format List Size: %d\n", format_list_event->num_formats);
-+ for (i = 0; i < format_list_event->num_formats; i++)
-+ {
-+ g_printf("Format: 0x%X\n", format_list_event->formats[i]);
-+ if (format_list_event->formats[i] == CB_FORMAT_UNICODETEXT)
-+ {
-+ format = CB_FORMAT_UNICODETEXT;
-+ break;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_DIB)
-+ {
-+ format = CB_FORMAT_DIB;
-+ break;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_JPEG)
-+ {
-+ format = CB_FORMAT_JPEG;
-+ break;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_PNG)
-+ {
-+ format = CB_FORMAT_PNG;
-+ break;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_TEXT)
-+ {
-+ format = CB_FORMAT_TEXT;
-+ break;
-+ }
-+ }
-+ rfi->requested_format = format;
-+
-+ g_printf("Format Requested: 0x%X\n", format);
-+ /* Request Clipboard data of the server */
-+ RDP_CB_DATA_REQUEST_EVENT* data_request_event;
-+ rdp_event = (RDP_EVENT*) xnew(RDP_CB_DATA_REQUEST_EVENT);
-+ rdp_event->event_class = RDP_EVENT_CLASS_CLIPRDR;
-+ rdp_event->event_type = RDP_EVENT_TYPE_CB_DATA_REQUEST;
-+ data_request_event = (RDP_CB_DATA_REQUEST_EVENT*) rdp_event;
-+ data_request_event->format = format;
-+ freerdp_channels_send_event(rfi->channels, (RDP_EVENT*) data_request_event);
-+ }
-+ if (event->event_type == RDP_EVENT_TYPE_CB_DATA_REQUEST)
-+ {
-+ g_printf("Received RDP_EVENT_TYPE_CB_DATA_REQUEST\n");
-+
-+ uint8* data;
-+ int size;
-+ RDP_CB_DATA_REQUEST_EVENT* data_request_event = (RDP_CB_DATA_REQUEST_EVENT*) event;
-+ RDP_CB_DATA_RESPONSE_EVENT* data_response_event;
-+
-+ g_printf("Event Format: %d\n", data_request_event->format);
-+
-+ /* Send Data */
-+ rdp_event = (RDP_EVENT*) xnew(RDP_CB_DATA_RESPONSE_EVENT);
-+ rdp_event->event_class = RDP_EVENT_CLASS_CLIPRDR;
-+ rdp_event->event_type = RDP_EVENT_TYPE_CB_DATA_RESPONSE;
-+ data_response_event = (RDP_CB_DATA_RESPONSE_EVENT*) rdp_event;
-+ data = remmina_rdp_cliprdr_get_data(gp, data_request_event->format, &size);
-+ data_response_event->data = data;
-+ data_response_event->size = size;
-+ freerdp_channels_send_event(rfi->channels, rdp_event);
-+ }
-+ if (event->event_type == RDP_EVENT_TYPE_CB_DATA_RESPONSE)
-+ {
-+ remmina_rdp_cliprdr_parse_response_event(gp, event);
-+ }
-+ }
-+}
-diff --git a/remmina-plugins/rdp/rdp_cliprdr.h b/remmina-plugins/rdp/rdp_cliprdr.h
-new file mode 100644
-index 0000000..ed6bf70
---- /dev/null
-+++ b/remmina-plugins/rdp/rdp_cliprdr.h
-@@ -0,0 +1,33 @@
-+/*
-+ * Remmina - The GTK+ Remote Desktop Client
-+ * Copyright (C) 2010-2011 Vic Lee
-+ * Copyright (C) 2012-2012 Jean-Louis Dupond
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifndef __REMMINA_RDP_CLIPRDR_H__
-+#define __REMMINA_RDP_CLIPRDR_H__
-+
-+G_BEGIN_DECLS
-+
-+RDP_EVENT* remmina_rdp_cliprdr_get_event(uint16 event_type);
-+int remmina_rdp_cliprdr_send_format_list_event(RemminaProtocolWidget* gp);
-+void remmina_handle_channel_event(RemminaProtocolWidget* gp, RDP_EVENT* event);
-+
-+G_END_DECLS
-+
-+#endif
-diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c
-index f77f5f1..a936fb1 100644
---- a/remmina-plugins/rdp/rdp_event.c
-+++ b/remmina-plugins/rdp/rdp_event.c
-@@ -461,6 +461,16 @@ static gboolean remmina_rdp_event_on_key(GtkWidget* widget, GdkEventKey* event,
- return TRUE;
- }
-
-+static gboolean remmina_rdp_event_on_clipboard(GtkClipboard *clipboard, GdkEvent *event, RemminaProtocolWidget *gp)
-+{
-+ RemminaPluginRdpEvent rdp_event = { 0 };
-+
-+ rdp_event.type = REMMINA_RDP_EVENT_TYPE_CLIPBOARD;
-+ remmina_rdp_event_event_push(gp, &rdp_event);
-+
-+ return TRUE;
-+}
-+
- void remmina_rdp_event_init(RemminaProtocolWidget* gp)
- {
- gint n;
-@@ -470,6 +480,7 @@ void remmina_rdp_event_init(RemminaProtocolWidget* gp)
- XPixmapFormatValues* pf;
- XPixmapFormatValues* pfs;
- rfContext* rfi;
-+ GtkClipboard* clipboard;
-
- rfi = GET_DATA(gp);
- rfi->drawing_area = gtk_drawing_area_new();
-@@ -508,6 +519,14 @@ void remmina_rdp_event_init(RemminaProtocolWidget* gp)
- g_signal_connect(G_OBJECT(rfi->drawing_area), "key-release-event",
- G_CALLBACK(remmina_rdp_event_on_key), gp);
-
-+ RemminaFile* remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
-+ if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE))
-+ {
-+ clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
-+ g_signal_connect(clipboard, "owner-change",
-+ G_CALLBACK(remmina_rdp_event_on_clipboard), gp);
-+ }
-+
- rfi->pressed_keys = g_array_new(FALSE, TRUE, sizeof (gint));
- rfi->event_queue = g_async_queue_new_full(g_free);
- rfi->ui_queue = g_async_queue_new();
-diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c
-index 08874e6..fd0fe08 100644
---- a/remmina-plugins/rdp/rdp_plugin.c
-+++ b/remmina-plugins/rdp/rdp_plugin.c
-@@ -24,6 +24,7 @@
- #include "rdp_graphics.h"
- #include "rdp_file.h"
- #include "rdp_settings.h"
-+#include "rdp_cliprdr.h"
-
- #include <errno.h>
- #include <pthread.h>
-@@ -31,6 +32,7 @@
- #include <freerdp/freerdp.h>
- #include <freerdp/constants.h>
- #include <freerdp/utils/memory.h>
-+#include <freerdp/plugins/cliprdr.h>
-
- #define REMMINA_RDP_FEATURE_TOOL_REFRESH 1
- #define REMMINA_RDP_FEATURE_SCALE 2
-@@ -128,6 +130,11 @@ boolean rf_check_fds(RemminaProtocolWidget* gp)
- input->MouseEvent(input, event->mouse_event.flags,
- event->mouse_event.x, event->mouse_event.y);
- break;
-+ case REMMINA_RDP_EVENT_TYPE_CLIPBOARD:
-+ if (!rfi->clipboard_wait)
-+ remmina_rdp_cliprdr_send_format_list_event(gp);
-+ rfi->clipboard_wait = FALSE;
-+ break;
- }
-
- g_free(event);
-@@ -503,6 +510,7 @@ static boolean remmina_rdp_verify_certificate(freerdp* instance, char* subject,
-
- static int remmina_rdp_receive_channel_data(freerdp* instance, int channelId, uint8* data, int size, int flags, int total_size)
- {
-+ g_printf("EVENT RECEIVED -> DATA: %s\nSIZE: %d\nFLAGS: %d\n", (char*)data, size, flags);
- return freerdp_channels_data(instance, channelId, data, size, flags, total_size);
- }
-
-@@ -518,6 +526,7 @@ static void remmina_rdp_main_loop(RemminaProtocolWidget* gp)
- fd_set rfds_set;
- fd_set wfds_set;
- rfContext* rfi;
-+ RDP_EVENT* event;
-
- memset(rfds, 0, sizeof(rfds));
- memset(wfds, 0, sizeof(wfds));
-@@ -591,6 +600,12 @@ static void remmina_rdp_main_loop(RemminaProtocolWidget* gp)
- {
- break;
- }
-+ else
-+ {
-+ event = freerdp_channels_pop_event(rfi->channels);
-+ if (event)
-+ remmina_handle_channel_event(gp, event);
-+ }
- /* check ui */
- if (!rf_check_fds(gp))
- {
-diff --git a/remmina-plugins/rdp/rdp_plugin.h b/remmina-plugins/rdp/rdp_plugin.h
-index a3774d9..1931384 100644
---- a/remmina-plugins/rdp/rdp_plugin.h
-+++ b/remmina-plugins/rdp/rdp_plugin.h
-@@ -133,12 +133,16 @@ struct rf_context
- GArray* pressed_keys;
- GAsyncQueue* event_queue;
- gint event_pipe[2];
-+
-+ gboolean clipboard_wait;
-+ uint32 requested_format;
- };
-
- typedef enum
- {
- REMMINA_RDP_EVENT_TYPE_SCANCODE,
-- REMMINA_RDP_EVENT_TYPE_MOUSE
-+ REMMINA_RDP_EVENT_TYPE_MOUSE,
-+ REMMINA_RDP_EVENT_TYPE_CLIPBOARD
- } RemminaPluginRdpEventType;
-
- struct remmina_plugin_rdp_event
---
-1.7.10
-
diff --git a/main/remmina/remmina-1.0.0-clipboard-bugfix.patch b/main/remmina/remmina-1.0.0-clipboard-bugfix.patch
deleted file mode 100644
index c564c8e730..0000000000
--- a/main/remmina/remmina-1.0.0-clipboard-bugfix.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 97c2af8ccc913b0850ed4a54ed6c477cfbd7b475 Mon Sep 17 00:00:00 2001
-From: Jean-Louis Dupond <jean-louis@dupond.be>
-Date: Tue, 1 May 2012 17:37:21 +0200
-Subject: [PATCH] clipboard bugfix + cleanup of memory
-
----
- remmina-plugins/rdp/rdp_cliprdr.c | 20 ++++++++++++++++----
- 1 file changed, 16 insertions(+), 4 deletions(-)
-
-diff --git a/remmina-plugins/rdp/rdp_cliprdr.c b/remmina-plugins/rdp/rdp_cliprdr.c
-index 0821ffa..b9b37ad 100644
---- a/remmina-plugins/rdp/rdp_cliprdr.c
-+++ b/remmina-plugins/rdp/rdp_cliprdr.c
-@@ -225,7 +225,7 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
-
- if (format == CB_FORMAT_TEXT || format == CB_FORMAT_HTML || format == CB_FORMAT_UNICODETEXT)
- {
-- lf2crlf(inbuf, size);
-+ inbuf = lf2crlf(inbuf, size);
- if (format == CB_FORMAT_TEXT)
- {
- outbuf = inbuf;
-@@ -269,6 +269,11 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
- memcpy(outbuf, data + 14, *size);
- }
- }
-+
-+ if (inbuf)
-+ g_free(inbuf);
-+ if (G_IS_OBJECT(image))
-+ g_object_unref(image);
-
- if (!outbuf)
- outbuf = (uint8*)"";
-@@ -288,7 +293,7 @@ void remmina_rdp_cliprdr_parse_response_event(RemminaProtocolWidget* gp, RDP_EVE
- gboolean img = FALSE;
- rfContext* rfi = GET_DATA(gp);
- RDP_CB_DATA_RESPONSE_EVENT* data_response_event;
--
-+ GdkPixbufLoader *pixbuf;
- data_response_event = (RDP_CB_DATA_RESPONSE_EVENT*) event;
- data = data_response_event->data;
- size = data_response_event->size;
-@@ -341,7 +346,6 @@ void remmina_rdp_cliprdr_parse_response_event(RemminaProtocolWidget* gp, RDP_EVE
- stream_detach(s);
- stream_free(s);
- }
-- GdkPixbufLoader *pixbuf;
- pixbuf = gdk_pixbuf_loader_new();
- gdk_pixbuf_loader_write(pixbuf, data, size, NULL);
- image = gdk_pixbuf_loader_get_pixbuf(pixbuf);
-@@ -355,9 +359,17 @@ void remmina_rdp_cliprdr_parse_response_event(RemminaProtocolWidget* gp, RDP_EVE
- if (text || img)
- rfi->clipboard_wait = TRUE;
- if (text)
-- gtk_clipboard_set_text(clipboard, (gchar*)data, size);
-+ {
-+ gtk_clipboard_set_text(clipboard, (gchar*)data, size);
-+ gtk_clipboard_store(clipboard);
-+ }
- if (img)
-+ {
- gtk_clipboard_set_image(clipboard, image);
-+ gtk_clipboard_store(clipboard);
-+ gdk_pixbuf_loader_close(pixbuf, NULL);
-+ g_object_unref(pixbuf);
-+ }
- }
- THREADS_LEAVE
-
---
-1.7.10
-
diff --git a/main/remmina/remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch b/main/remmina/remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch
deleted file mode 100644
index dc4ae33310..0000000000
--- a/main/remmina/remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From c1ef3a162622942d7c556c5a4352e626c7bcb28f Mon Sep 17 00:00:00 2001
-From: Jean-Louis Dupond <jean-louis@dupond.be>
-Date: Tue, 8 May 2012 14:44:16 +0200
-Subject: [PATCH] Disconnect signal handler after disconnect
-
----
- remmina-plugins/rdp/rdp_event.c | 10 ++++++++--
- remmina-plugins/rdp/rdp_plugin.h | 1 +
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c
-index a936fb1..2c050c6 100644
---- a/remmina-plugins/rdp/rdp_event.c
-+++ b/remmina-plugins/rdp/rdp_event.c
-@@ -523,8 +523,7 @@ void remmina_rdp_event_init(RemminaProtocolWidget* gp)
- if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE))
- {
- clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
-- g_signal_connect(clipboard, "owner-change",
-- G_CALLBACK(remmina_rdp_event_on_clipboard), gp);
-+ rfi->clipboard_handler = g_signal_connect(clipboard, "owner-change", G_CALLBACK(remmina_rdp_event_on_clipboard), gp);
- }
-
- rfi->pressed_keys = g_array_new(FALSE, TRUE, sizeof (gint));
-@@ -575,6 +574,13 @@ void remmina_rdp_event_uninit(RemminaProtocolWidget* gp)
-
- rfi = GET_DATA(gp);
-
-+
-+ /* unregister the clipboard monitor */
-+ if (rfi->clipboard_handler)
-+ {
-+ g_signal_handler_disconnect(G_OBJECT(gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD)), rfi->clipboard_handler);
-+ rfi->clipboard_handler = NULL;
-+ }
- if (rfi->scale_handler)
- {
- g_source_remove(rfi->scale_handler);
-diff --git a/remmina-plugins/rdp/rdp_plugin.h b/remmina-plugins/rdp/rdp_plugin.h
-index ff66906..08b8891 100644
---- a/remmina-plugins/rdp/rdp_plugin.h
-+++ b/remmina-plugins/rdp/rdp_plugin.h
-@@ -134,6 +134,7 @@ struct rf_context
- GAsyncQueue* event_queue;
- gint event_pipe[2];
-
-+ gint clipboard_handler;
- gint clipboard_wait;
- uint32 requested_format;
- };
---
-1.7.10
-
diff --git a/main/remmina/remmina-1.0.0-fix-library-name.patch b/main/remmina/remmina-1.0.0-fix-library-name.patch
deleted file mode 100644
index 1774dd63a2..0000000000
--- a/main/remmina/remmina-1.0.0-fix-library-name.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 503a008e4aedc74b775c785f96292b8f5c448137 Mon Sep 17 00:00:00 2001
-From: Andrey <gankov@opensuse.org>
-Date: Sat, 10 Mar 2012 01:00:32 +0400
-Subject: [PATCH] fix library name mistake
-
----
- cmake/FindGTK3.cmake | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/cmake/FindGTK3.cmake b/cmake/FindGTK3.cmake
-index c1b019e..f73b64d 100644
---- a/cmake/FindGTK3.cmake
-+++ b/cmake/FindGTK3.cmake
-@@ -48,7 +48,7 @@ find_path(GDKPIXBUF_INCLUDE_DIR gdk-pixbuf/gdk-pixbuf.h
- HINTS ${PC_GDKPIXBUF_INCLUDEDIR} ${PC_GDKPIXBUF_INCLUDE_DIRS}
- PATH_SUFFIXES gdk-pixbuf-2.0)
-
--find_library(GDKPIXBUF_LIBRARY NAMES gdk-3
-+find_library(GDKPIXBUF_LIBRARY NAMES gdk_pixbuf-2.0
- HINTS ${PC_GDKPIXBUF_LIBDIR} ${PC_GDKPIXBUF_LIBRARY_DIRS})
-
- # Glib
---
-1.7.5.4
-
diff --git a/main/remmina/remmina-1.0.0-fix-memory-leak.patch b/main/remmina/remmina-1.0.0-fix-memory-leak.patch
deleted file mode 100644
index a0aac1a88f..0000000000
--- a/main/remmina/remmina-1.0.0-fix-memory-leak.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From b22778270ad05fed21797d5a5d4b782d6e273a59 Mon Sep 17 00:00:00 2001
-From: Jean-Louis Dupond <jean-louis@dupond.be>
-Date: Sat, 5 May 2012 17:15:29 +0200
-Subject: [PATCH] Fix memory leak
-
----
- remmina-plugins/rdp/rdp_cliprdr.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/remmina-plugins/rdp/rdp_cliprdr.c b/remmina-plugins/rdp/rdp_cliprdr.c
-index 772709c..ea8baa0 100644
---- a/remmina-plugins/rdp/rdp_cliprdr.c
-+++ b/remmina-plugins/rdp/rdp_cliprdr.c
-@@ -74,6 +74,7 @@ void remmina_rdp_cliprdr_get_target_types(uint32** dst_formats, uint16* size, Gd
- image = TRUE;
- matches++;
- }
-+ g_free(name);
- }
- //Only add text formats if we don't have image formats
- if (!image)
---
-1.7.10
-
diff --git a/main/remmina/remmina-1.0.0-linker-error.patch b/main/remmina/remmina-1.0.0-linker-error.patch
deleted file mode 100644
index 298767c48b..0000000000
--- a/main/remmina/remmina-1.0.0-linker-error.patch
+++ /dev/null
@@ -1,262 +0,0 @@
-From 13f203672155cd52278655f03da7ff8dcff75c29 Mon Sep 17 00:00:00 2001
-From: Andrey Gankov <gankov@opensuse.org>
-Date: Sat, 10 Mar 2012 02:55:32 +0400
-Subject: [PATCH] Fix Issue #9: linker error
-
----
- cmake/FindGLIB2.cmake | 120 ++++++++++++++++++++++++++++++++++++++++++++++++
- cmake/FindGTK2.cmake | 21 ++-------
- cmake/FindGTK3.cmake | 24 +++-------
- remmina/CMakeLists.txt | 9 ++++
- 4 files changed, 140 insertions(+), 34 deletions(-)
- create mode 100644 cmake/FindGLIB2.cmake
-
-diff --git a/cmake/FindGLIB2.cmake b/cmake/FindGLIB2.cmake
-new file mode 100644
-index 0000000..8208ded
---- /dev/null
-+++ b/cmake/FindGLIB2.cmake
-@@ -0,0 +1,120 @@
-+# Remmina - The GTK+ Remote Desktop Client
-+#
-+# Copyright (C) 2012 Andrey Gankov
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330,
-+# Boston, MA 02111-1307, USA.
-+
-+set(_GLIB_found_all true)
-+
-+# Glib
-+
-+pkg_check_modules(PC_GLIB2 glib-2.0)
-+
-+if(NOT PC_GLIB2_FOUND)
-+ set(_GLIB_found_all false)
-+endif()
-+
-+find_path(GLIB2_INCLUDE_DIR_PART1 NAMES glib.h
-+ HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-+ PATH_SUFFIXES glib-2.0)
-+
-+find_path(GLIB2_INCLUDE_DIR_PART2 NAMES glibconfig.h
-+ HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-+ PATH_SUFFIXES glib-2.0/include)
-+
-+set(GLIB2_INCLUDE_DIR ${GLIB2_INCLUDE_DIR_PART1} ${GLIB2_INCLUDE_DIR_PART2})
-+
-+find_library(GLIB2_LIBRARY NAMES glib-2.0)
-+
-+# GIO
-+
-+pkg_check_modules(PC_GIO gio-2.0)
-+
-+if(NOT PC_GIO_FOUND)
-+ set(_GLIB_found_all false)
-+endif()
-+
-+find_path(GIO_INCLUDE_DIR gio/gio.h
-+ HINTS ${PC_GIO_INCLUDEDIR} ${PC_GIO_INCLUDE_DIRS}
-+ PATH_SUFFIXES gio-2.0)
-+
-+find_library(GIO_LIBRARY NAMES gio-2.0
-+ HINTS ${PC_GIO_LIBDIR} ${PC_GIO_LIBRARY_DIRS})
-+
-+# gobject
-+
-+pkg_check_modules(PC_GOBJECT gobject-2.0)
-+
-+if(NOT PC_GOBJECT_FOUND)
-+ set(_GLIB_found_all false)
-+endif()
-+
-+find_path(GOBJECT_INCLUDE_DIR gobject/gobject.h
-+ HINTS ${PC_GOBJECT_INCLUDEDIR} ${PC_GOBJECT_INCLUDE_DIRS}
-+ PATH_SUFFIXES gobject-2.0)
-+
-+find_library(GOBJECT_LIBRARY NAMES gobject-2.0
-+ HINTS ${PC_GOBJECT_LIBDIR} ${PC_GOBJECT_LIBRARY_DIRS})
-+
-+# gmodule
-+
-+pkg_check_modules(PC_GMODULE gmodule-2.0)
-+
-+if(NOT PC_GMODULE_FOUND)
-+ set(_GLIB_found_all false)
-+endif()
-+
-+find_path(GMODULE_INCLUDE_DIR gmodule.h
-+ HINTS ${PC_GMODULE_INCLUDEDIR} ${PC_GMODULE_INCLUDE_DIRS}
-+ PATH_SUFFIXES gmodule-2.0)
-+
-+find_library(GMODULE_LIBRARY NAMES gmodule-2.0
-+ HINTS ${PC_GMODULE_LIBDIR} ${PC_GMODULE_LIBRARY_DIRS})
-+
-+# gthread
-+
-+pkg_check_modules(PC_GTHREAD gthread-2.0)
-+
-+if(NOT PC_GTHREAD_FOUND)
-+ set(_GLIB_found_all false)
-+endif()
-+
-+find_path(GTHREAD_INCLUDE_DIR glib/gthread.h
-+ HINTS ${PC_GTHREAD_INCLUDEDIR} ${PC_GTHREAD_INCLUDE_DIRS}
-+ PATH_SUFFIXES gthread-2.0)
-+
-+find_library(GTHREAD_LIBRARY NAMES gthread-2.0
-+ HINTS ${PC_GTHREAD_LIBDIR} ${PC_GTHREAD_LIBRARY_DIRS})
-+
-+# Finalize
-+
-+if(_GLIB_found_all)
-+ include(FindPackageHandleStandardArgs)
-+
-+ find_package_handle_standard_args(GLIB2 DEFAULT_MSG GLIB2_LIBRARY GLIB2_INCLUDE_DIR)
-+
-+ set(GLIB2_LIBRARIES ${GLIB2_LIBRARY} ${GIO_LIBRARY} ${GOBJECT_LIBRARY} ${GMODULE_LIBRARY} ${GTHREAD_LIBRARY})
-+ set(GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIR} ${GIO_INCLUDE_DIR} ${GOBJECT_INCLUDE_DIR} ${GMODULE_INCLUDE_DIR} ${GTHREAD_INCLUDE_DIR})
-+
-+ mark_as_advanced(GLIB2_INCLUDE_DIR GLIB2_LIBRARY)
-+
-+ set(GLIB_FOUND true)
-+else()
-+ unset(GLIB2_LIBRARY)
-+ unset(GLIB2_INCLUDE_DIR)
-+
-+ set(GLIB_FOUND false)
-+endif()
-diff --git a/cmake/FindGTK2.cmake b/cmake/FindGTK2.cmake
-index b33966e..caf0295 100644
---- a/cmake/FindGTK2.cmake
-+++ b/cmake/FindGTK2.cmake
-@@ -63,24 +63,11 @@ find_library(GDKPIXBUF_LIBRARY NAMES gdk_pixbuf-2.0
-
- # Glib
-
--pkg_check_modules(PC_GLIB2 glib-2.0)
--
--if(NOT PC_GLIB2_FOUND)
-+find_required_package(GLIB2)
-+if(NOT GLIB2_FOUND)
- set(_GTK2_found_all false)
- endif()
-
--find_path(GLIB2_INCLUDE_DIR_PART1 NAMES glib.h
-- HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-- PATH_SUFFIXES glib-2.0)
--
--find_path(GLIB2_INCLUDE_DIR_PART2 NAMES glibconfig.h
-- HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-- PATH_SUFFIXES glib-2.0/include)
--
--set(GLIB2_INCLUDE_DIR ${GLIB2_INCLUDE_DIR_PART1} ${GLIB2_INCLUDE_DIR_PART2})
--
--find_library(GLIB2_LIBRARY NAMES glib-2.0)
--
- # Pango
-
- pkg_check_modules(PC_PANGO pango)
-@@ -129,8 +116,8 @@ if(_GTK2_found_all)
-
- find_package_handle_standard_args(GTK2 DEFAULT_MSG GTK2_LIBRARY GTK2_INCLUDE_DIR)
-
-- set(GTK2_LIBRARIES ${GTK2_LIBRARY} ${GDK2_LIBRARY} ${GLIB2_LIBRARY} ${PANGO_LIBRARY} ${CAIRO_LIBRARY} ${GDKPIXBUF_LIBRARY} ${ATK_LIBRARY})
-- set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIR} ${GDK2_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${PANGO_INCLUDE_DIR} ${CAIRO_INCLUDE_DIR} ${GDKPIXBUF_INCLUDE_DIR} ${ATK_INCLUDE_DIR})
-+ set(GTK2_LIBRARIES ${GTK2_LIBRARY} ${GDK2_LIBRARY} ${GLIB2_LIBRARIES} ${PANGO_LIBRARY} ${CAIRO_LIBRARY} ${GDKPIXBUF_LIBRARY} ${ATK_LIBRARY})
-+ set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIR} ${GDK2_INCLUDE_DIR} ${GLIB2_INCLUDE_DIRS} ${PANGO_INCLUDE_DIR} ${CAIRO_INCLUDE_DIR} ${GDKPIXBUF_INCLUDE_DIR} ${ATK_INCLUDE_DIR})
-
- mark_as_advanced(GTK2_INCLUDE_DIR GTK2_LIBRARY)
-
-diff --git a/cmake/FindGTK3.cmake b/cmake/FindGTK3.cmake
-index f73b64d..decb00a 100644
---- a/cmake/FindGTK3.cmake
-+++ b/cmake/FindGTK3.cmake
-@@ -53,24 +53,11 @@ find_library(GDKPIXBUF_LIBRARY NAMES gdk_pixbuf-2.0
-
- # Glib
-
--pkg_check_modules(PC_GLIB2 glib-2.0)
--
--if(NOT PC_GLIB2_FOUND)
-+find_required_package(GLIB2)
-+if(NOT GLIB2_FOUND)
- set(_GTK3_found_all false)
- endif()
-
--find_path(GLIB2_INCLUDE_DIR_PART1 NAMES glib.h
-- HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-- PATH_SUFFIXES glib-2.0)
--
--find_path(GLIB2_INCLUDE_DIR_PART2 NAMES glibconfig.h
-- HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-- PATH_SUFFIXES glib-2.0/include)
--
--set(GLIB2_INCLUDE_DIR ${GLIB2_INCLUDE_DIR_PART1} ${GLIB2_INCLUDE_DIR_PART2})
--
--find_library(GLIB2_LIBRARY NAMES glib-2.0)
--
- # Pango
-
- pkg_check_modules(PC_PANGO pango)
-@@ -119,14 +106,17 @@ if(_GTK3_found_all)
-
- find_package_handle_standard_args(GTK3 DEFAULT_MSG GTK3_LIBRARY GTK3_INCLUDE_DIR)
-
-- set(GTK3_LIBRARIES ${GTK3_LIBRARY} ${GDK3_LIBRARY} ${GLIB2_LIBRARY} ${PANGO_LIBRARY} ${CAIRO_LIBRARY} ${GDKPIXBUF_LIBRARY} ${ATK_LIBRARY})
-- set(GTK3_INCLUDE_DIRS ${GTK3_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${PANGO_INCLUDE_DIR} ${CAIRO_INCLUDE_DIR} ${GDKPIXBUF_INCLUDE_DIR} ${ATK_INCLUDE_DIR})
-+ set(GTK3_LIBRARIES ${GTK3_LIBRARY} ${GDK3_LIBRARY} ${GLIB2_LIBRARIES} ${PANGO_LIBRARY} ${CAIRO_LIBRARY} ${GDKPIXBUF_LIBRARY} ${ATK_LIBRARY})
-+ set(GTK3_INCLUDE_DIRS ${GTK3_INCLUDE_DIR} ${GLIB2_INCLUDE_DIRS} ${PANGO_INCLUDE_DIR} ${CAIRO_INCLUDE_DIR} ${GDKPIXBUF_INCLUDE_DIR} ${ATK_INCLUDE_DIR})
-
- mark_as_advanced(GTK3_INCLUDE_DIR GTK3_LIBRARY)
-
- set(GTK3_FOUND true)
- else()
- unset(GTK3_LIBRARY)
-+ unset(GTK3_INCLUDE_DIR)
-+
-+ unset(GDK3_LIBRARY)
- unset(GDK3_INCLUDE_DIR)
-
- set(GTK3_FOUND false)
-diff --git a/remmina/CMakeLists.txt b/remmina/CMakeLists.txt
-index 0fe7bbf..9e7c982 100644
---- a/remmina/CMakeLists.txt
-+++ b/remmina/CMakeLists.txt
-@@ -93,6 +93,10 @@ add_executable(remmina ${REMMINA_SRCS})
- include_directories(${GTK_INCLUDE_DIRS})
- target_link_libraries(remmina ${GTK_LIBRARIES})
-
-+find_package(X11)
-+include_directories(${X11_INCLUDE_DIR})
-+target_link_libraries(remmina ${X11_LIBRARIES})
-+
- find_suggested_package(LIBSSH)
- if(LIBSSH_FOUND)
- add_definitions(-DHAVE_LIBSSH)
-@@ -100,6 +104,11 @@ if(LIBSSH_FOUND)
- target_link_libraries(remmina ${LIBSSH_LIBRARIES})
- endif()
-
-+if(PTHREAD_FOUND)
-+ include_directories(${PTHREAD_INCLUDE_DIRS})
-+ target_link_libraries(remmina ${PTHREAD_LIBRARIES})
-+endif()
-+
- if(GCRYPT_FOUND)
- include_directories(${GCRYPT_INCLUDE_DIRS})
- target_link_libraries(remmina ${GCRYPT_LIBRARIES})
---
-1.7.5.4
-
diff --git a/main/remmina/remmina-1.0.0-some-more-clipboard-fixes.patch b/main/remmina/remmina-1.0.0-some-more-clipboard-fixes.patch
deleted file mode 100644
index ad31d512b5..0000000000
--- a/main/remmina/remmina-1.0.0-some-more-clipboard-fixes.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From 84327f81995b4efe56503b94216e35eb9e99f243 Mon Sep 17 00:00:00 2001
-From: Jean-Louis Dupond <jean-louis@dupond.be>
-Date: Thu, 3 May 2012 15:25:02 +0200
-Subject: [PATCH] Some more clipboard fixes
-
----
- remmina-plugins/rdp/rdp_cliprdr.c | 68 ++++++++++++++++++++++---------------
- remmina-plugins/rdp/rdp_plugin.c | 9 +++--
- remmina-plugins/rdp/rdp_plugin.h | 2 +-
- 3 files changed, 48 insertions(+), 31 deletions(-)
-
-diff --git a/remmina-plugins/rdp/rdp_cliprdr.c b/remmina-plugins/rdp/rdp_cliprdr.c
-index b9b37ad..1424ac9 100644
---- a/remmina-plugins/rdp/rdp_cliprdr.c
-+++ b/remmina-plugins/rdp/rdp_cliprdr.c
-@@ -204,7 +204,7 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
- g_printf("GetData: Requested Format: %#X\n", format);
- rfContext* rfi = GET_DATA(gp);
- GtkClipboard* clipboard;
-- uint8* inbuf = NULL;
-+ uint8* inbuf = (uint8*)"";
- uint8* outbuf = NULL;
- GdkPixbuf *image = NULL;
-
-@@ -225,6 +225,8 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
-
- if (format == CB_FORMAT_TEXT || format == CB_FORMAT_HTML || format == CB_FORMAT_UNICODETEXT)
- {
-+ if (inbuf == NULL)
-+ inbuf = (uint8*)"";
- inbuf = lf2crlf(inbuf, size);
- if (format == CB_FORMAT_TEXT)
- {
-@@ -243,6 +245,7 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
- uniconv = freerdp_uniconv_new();
- outbuf = (uint8*) freerdp_uniconv_out(uniconv, (char*) inbuf, &out_size);
- freerdp_uniconv_free(uniconv);
-+ g_free(inbuf);
- *size = out_size + 2;
- }
- }
-@@ -253,11 +256,13 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
- if (format == CB_FORMAT_PNG)
- {
- gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "png", NULL, NULL);
-+ outbuf = (uint8*) xmalloc(buffersize);
- memcpy(outbuf, data, buffersize);
- }
- if (format == CB_FORMAT_JPEG)
- {
- gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "jpeg", NULL, NULL);
-+ outbuf = (uint8*) xmalloc(buffersize);
- memcpy(outbuf, data, buffersize);
- }
- if (format == CB_FORMAT_DIB)
-@@ -268,13 +273,9 @@ uint8* remmina_rdp_cliprdr_get_data(RemminaProtocolWidget* gp, uint32 format, in
- outbuf = (uint8*) xmalloc(*size);
- memcpy(outbuf, data + 14, *size);
- }
-+ g_object_unref(image);
- }
-
-- if (inbuf)
-- g_free(inbuf);
-- if (G_IS_OBJECT(image))
-- g_object_unref(image);
--
- if (!outbuf)
- outbuf = (uint8*)"";
-
-@@ -357,7 +358,10 @@ void remmina_rdp_cliprdr_parse_response_event(RemminaProtocolWidget* gp, RDP_EVE
- if (clipboard)
- {
- if (text || img)
-- rfi->clipboard_wait = TRUE;
-+ {
-+ rfi->clipboard_wait = 2;
-+ g_printf("Setting Clipboard Wait\n");
-+ }
- if (text)
- {
- gtk_clipboard_set_text(clipboard, (gchar*)data, size);
-@@ -404,31 +408,39 @@ void remmina_handle_channel_event(RemminaProtocolWidget* gp, RDP_EVENT* event)
- for (i = 0; i < format_list_event->num_formats; i++)
- {
- g_printf("Format: 0x%X\n", format_list_event->formats[i]);
-- if (format_list_event->formats[i] == CB_FORMAT_UNICODETEXT)
-- {
-- format = CB_FORMAT_UNICODETEXT;
-- break;
-- }
-- if (format_list_event->formats[i] == CB_FORMAT_DIB)
-- {
-- format = CB_FORMAT_DIB;
-- break;
-- }
-- if (format_list_event->formats[i] == CB_FORMAT_JPEG)
-+ }
-+
-+ for (i = 0; i < format_list_event->num_formats; i++)
-+ {
-+ g_printf("Format: 0x%X\n", format_list_event->formats[i]);
-+ if (format_list_event->formats[i] > format)
- {
-- format = CB_FORMAT_JPEG;
-- break;
-+ g_printf("Format 0x%X is bigger!\n", format_list_event->formats[i]);
-+ if (format_list_event->formats[i] == CB_FORMAT_UNICODETEXT)
-+ {
-+ format = CB_FORMAT_UNICODETEXT;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_DIB)
-+ {
-+ format = CB_FORMAT_DIB;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_JPEG)
-+ {
-+ format = CB_FORMAT_JPEG;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_PNG)
-+ {
-+ format = CB_FORMAT_PNG;
-+ }
-+ if (format_list_event->formats[i] == CB_FORMAT_TEXT)
-+ {
-+ format = CB_FORMAT_TEXT;
-+ }
- }
-- if (format_list_event->formats[i] == CB_FORMAT_PNG)
-+ else
- {
-- format = CB_FORMAT_PNG;
-- break;
-+ g_printf("Format 0x%X is smaller!\n", format_list_event->formats[i]);
- }
-- if (format_list_event->formats[i] == CB_FORMAT_TEXT)
-- {
-- format = CB_FORMAT_TEXT;
-- break;
-- }
- }
- rfi->requested_format = format;
-
-diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c
-index fd0fe08..3c7fc0a 100644
---- a/remmina-plugins/rdp/rdp_plugin.c
-+++ b/remmina-plugins/rdp/rdp_plugin.c
-@@ -131,9 +131,14 @@ boolean rf_check_fds(RemminaProtocolWidget* gp)
- event->mouse_event.x, event->mouse_event.y);
- break;
- case REMMINA_RDP_EVENT_TYPE_CLIPBOARD:
-- if (!rfi->clipboard_wait)
-+ if (rfi->clipboard_wait <= 0)
-+ {
- remmina_rdp_cliprdr_send_format_list_event(gp);
-- rfi->clipboard_wait = FALSE;
-+ g_printf("Clipboard Wait ON\n");
-+ rfi->clipboard_wait = 0;
-+ }
-+ g_printf("Setting Clipboard Wait To FALSE\n");
-+ rfi->clipboard_wait--;
- break;
- }
-
-diff --git a/remmina-plugins/rdp/rdp_plugin.h b/remmina-plugins/rdp/rdp_plugin.h
-index 1931384..ff66906 100644
---- a/remmina-plugins/rdp/rdp_plugin.h
-+++ b/remmina-plugins/rdp/rdp_plugin.h
-@@ -134,7 +134,7 @@ struct rf_context
- GAsyncQueue* event_queue;
- gint event_pipe[2];
-
-- gboolean clipboard_wait;
-+ gint clipboard_wait;
- uint32 requested_format;
- };
-
---
-1.7.10
-
diff --git a/main/remmina/remmina-1.0.0-vte2.91.patch b/main/remmina/remmina-1.0.0-vte2.91.patch
new file mode 100644
index 0000000000..25014c629c
--- /dev/null
+++ b/main/remmina/remmina-1.0.0-vte2.91.patch
@@ -0,0 +1,50 @@
+diff -up ./cmake/FindVTE.cmake.vte ./cmake/FindVTE.cmake
+--- ./cmake/FindVTE.cmake.vte 2012-02-10 20:54:23.000000000 +0200
++++ ./cmake/FindVTE.cmake 2014-06-08 11:14:23.778316473 +0300
+@@ -21,12 +21,10 @@ if(NOT _VTE_VERSION_NUM)
+ set(_VTE_LIB_NAME vte)
+ set(_VTE_VERSION vte)
+ else()
+- set(_VTE_LIB_NAME vte${_VTE_VERSION_NUM})
++ set(_VTE_LIB_NAME vte-${_VTE_VERSION_NUM})
+ set(_VTE_VERSION vte-${_VTE_VERSION_NUM})
+ endif()
+
+-string(REPLACE . _ _VTE_LIB_NAME ${_VTE_LIB_NAME})
+-
+ pkg_check_modules(PC_VTE ${_VTE_VERSION})
+
+ find_path(VTE_INCLUDE_DIR NAMES vte/vte.h
+diff -up ./remmina/CMakeLists.txt.vte ./remmina/CMakeLists.txt
+--- ./remmina/CMakeLists.txt.vte 2014-06-08 11:14:23.634322160 +0300
++++ ./remmina/CMakeLists.txt 2014-06-08 11:14:23.777316512 +0300
+@@ -120,7 +120,7 @@ if(AVAHI_FOUND)
+ endif()
+
+ if(GTK3_FOUND)
+- set(_VTE_VERSION_NUM 2.90)
++ set(_VTE_VERSION_NUM 2.91)
+ else()
+ set(_VTE_VERSION_NUM)
+ endif()
+diff -up ./remmina/src/remmina_ssh_plugin.c.vte ./remmina/src/remmina_ssh_plugin.c
+--- ./remmina/src/remmina_ssh_plugin.c.vte 2012-02-10 20:54:23.000000000 +0200
++++ ./remmina/src/remmina_ssh_plugin.c 2014-06-08 11:43:08.341286290 +0300
+@@ -169,7 +169,7 @@ remmina_plugin_ssh_set_vte_pref (Remmina
+ gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
+ if (remmina_pref.vte_font && remmina_pref.vte_font[0])
+ {
+- vte_terminal_set_font_from_string (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_font);
++ vte_terminal_set_font (VTE_TERMINAL (gpdata->vte), pango_font_description_from_string (remmina_pref.vte_font));
+ }
+ vte_terminal_set_allow_bold (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_allow_bold_text);
+ if (remmina_pref.vte_lines > 0)
+@@ -205,7 +205,7 @@ remmina_plugin_ssh_init (RemminaProtocol
+
+ remmina_plugin_service->protocol_plugin_register_hostkey (gp, vte);
+
+- vscrollbar = gtk_vscrollbar_new (vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
++ vscrollbar = gtk_vscrollbar_new (gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (vte)));
+ gtk_widget_show(vscrollbar);
+ gtk_box_pack_start (GTK_BOX (hbox), vscrollbar, FALSE, TRUE, 0);
+ }
diff --git a/main/remmina/vte3.patch b/main/remmina/vte3.patch
new file mode 100644
index 0000000000..528738aa68
--- /dev/null
+++ b/main/remmina/vte3.patch
@@ -0,0 +1,55 @@
+--- ./remmina/CMakeLists.txt.orig
++++ ./remmina/CMakeLists.txt
+@@ -138,7 +138,7 @@
+ endif()
+
+ if(GTK3_FOUND)
+- set(_VTE_VERSION_NUM 2.90)
++ set(_VTE_VERSION_NUM 2.91)
+ else()
+ set(_VTE_VERSION_NUM)
+ endif()
+--- ./cmake/FindVTE.cmake.orig
++++ ./cmake/FindVTE.cmake
+@@ -21,11 +21,9 @@
+ set(_VTE_LIB_NAME vte)
+ set(_VTE_VERSION vte)
+ else()
+- set(_VTE_LIB_NAME vte${_VTE_VERSION_NUM})
++ set(_VTE_LIB_NAME vte-${_VTE_VERSION_NUM})
+ set(_VTE_VERSION vte-${_VTE_VERSION_NUM})
+ endif()
+-
+-string(REPLACE . _ _VTE_LIB_NAME ${_VTE_LIB_NAME})
+
+ pkg_check_modules(PC_VTE ${_VTE_VERSION})
+
+--- ./remmina/src/remmina_ssh_plugin.c.orig
++++ ./remmina/src/remmina_ssh_plugin.c
+@@ -136,7 +136,7 @@
+ THREADS_ENTER
+ if (charset && charset[0] != '\0')
+ {
+- vte_terminal_set_encoding (VTE_TERMINAL (gpdata->vte), charset);
++ vte_terminal_set_encoding (VTE_TERMINAL (gpdata->vte), charset, NULL);
+ }
+ vte_terminal_set_pty (VTE_TERMINAL (gpdata->vte), shell->slave);
+ THREADS_LEAVE
+@@ -183,7 +183,7 @@
+ gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
+ if (remmina_pref.vte_font && remmina_pref.vte_font[0])
+ {
+- vte_terminal_set_font_from_string (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_font);
++ vte_terminal_set_font (VTE_TERMINAL (gpdata->vte), pango_font_description_from_string (remmina_pref.vte_font));
+ }
+ vte_terminal_set_allow_bold (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_allow_bold_text);
+ if (remmina_pref.vte_lines > 0)
+@@ -224,7 +224,7 @@
+ remmina_plugin_service->protocol_plugin_register_hostkey (gp, vte);
+
+ #if GTK_VERSION == 3
+- vscrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
++ vscrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (vte)));
+ #elif GTK_VERSION == 2
+ vscrollbar = gtk_vscrollbar_new (vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
+ #endif