diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2014-11-06 18:21:06 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2014-11-06 18:21:06 +0000 |
commit | 3bb55faf0c0fcf1398369110fb9256fe2459f7e4 (patch) | |
tree | d0e2964d8ffe875f01426321c522fb7d200581a6 /main/remmina | |
parent | fdb615aa5746665529b9ca10414569b0799a2695 (diff) | |
download | aports-3bb55faf0c0fcf1398369110fb9256fe2459f7e4.tar.bz2 aports-3bb55faf0c0fcf1398369110fb9256fe2459f7e4.tar.xz |
main/remmina: upgrade to 1.1.1
Diffstat (limited to 'main/remmina')
-rw-r--r-- | main/remmina/APKBUILD | 77 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-add-clipboard-support.patch | 663 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-clipboard-bugfix.patch | 73 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-disconnect-signal-handler-after-disconnect.patch | 53 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-fix-library-name.patch | 25 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-fix-memory-leak.patch | 24 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-linker-error.patch | 262 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-some-more-clipboard-fixes.patch | 180 | ||||
-rw-r--r-- | main/remmina/remmina-1.0.0-vte2.91.patch | 50 | ||||
-rw-r--r-- | main/remmina/vte3.patch | 55 |
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 |