Merge lp:~noskcaj/ubuntu/vivid/remmina/1.1.2 into lp:ubuntu/vivid/remmina

Proposed by Jackson Doak
Status: Needs review
Proposed branch: lp:~noskcaj/ubuntu/vivid/remmina/1.1.2
Merge into: lp:ubuntu/vivid/remmina
Diff against target: 1346 lines (+153/-796)
18 files modified
.pc/applied-patches (+0/-1)
.pc/external_tools.patch/remmina/CMakeLists.txt (+17/-8)
.pc/vte-2.91.patch/cmake/FindVTE.cmake (+0/-46)
.pc/vte-2.91.patch/remmina/CMakeLists.txt (+0/-172)
.pc/vte-2.91.patch/remmina/src/remmina_ssh_plugin.c (+0/-364)
CMakeLists.txt (+1/-1)
debian/changelog (+31/-0)
debian/patches/external_tools.patch (+1/-1)
debian/patches/series (+0/-1)
debian/patches/vte-2.91.patch (+0/-96)
remmina-plugins/rdp/rdp_event.c (+13/-4)
remmina-plugins/rdp/rdp_plugin.c (+58/-70)
remmina-plugins/rdp/rdp_plugin.h (+4/-2)
remmina/CMakeLists.txt (+17/-8)
remmina/external_tools/CMakeLists.txt (+1/-4)
remmina/src/remmina_about.c (+1/-0)
remmina/src/remmina_connection_window.c (+4/-17)
remmina/src/remmina_string_list.c (+5/-1)
To merge this branch: bzr merge lp:~noskcaj/ubuntu/vivid/remmina/1.1.2
Reviewer Review Type Date Requested Status
Marc Deslauriers Needs Fixing
Review via email: mp+245258@code.launchpad.net

Description of the change

Merge from debian

To post a comment you must log in.
Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

Thanks for this merge, I do have a few comments though:

1- Why did you drop debian/docs?
2- Could you please remove indicator_set_title.patch if it's not being applied?
3- Please document the switch to libvte-2.91-dev in the changelog.

Thanks!

review: Needs Fixing

Unmerged revisions

28. By Jackson Doak

* Merge with Debian, remaining changes:
  + debian/control:
    - Build-depend on libappindicator3-dev, intltool
  + debian/rules:
    - Build with libappindicator
    - Call intltool-update on build
  + debian/patches/translations.patch,
    - Make translatable and add keywords.
* Drop vte-2.91.patch. Fixed upstream
* New upstream release.
  - Drop RDP_certificate_crash.patch, already available upstream.
  - Fix bugs with plugins using GtkSocket.
* debian/patches/RDP_certificate_crash.patch:
  - Cherry-pick patches from upstream to fix a crash when not
    accepting certificate for RDP server (Closes: #766671).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.pc/applied-patches'
2--- .pc/applied-patches 2014-11-07 16:17:53 +0000
3+++ .pc/applied-patches 2014-12-20 01:21:24 +0000
4@@ -1,3 +1,2 @@
5 translations.patch
6 external_tools.patch
7-vte-2.91.patch
8
9=== modified file '.pc/external_tools.patch/remmina/CMakeLists.txt'
10--- .pc/external_tools.patch/remmina/CMakeLists.txt 2014-09-29 08:11:58 +0000
11+++ .pc/external_tools.patch/remmina/CMakeLists.txt 2014-12-20 01:21:24 +0000
12@@ -137,17 +137,26 @@
13 target_link_libraries(remmina ${AVAHI_LIBRARIES})
14 endif()
15
16-if(GTK3_FOUND)
17- set(_VTE_VERSION_NUM 2.90)
18-else()
19+option(WITH_VTE "Build with support for VTE" ON)
20+if(GTK3_FOUND AND WITH_VTE)
21+ set(_VTE_VERSION_NUMS 2.91 2.90)
22+ foreach(__VTE_VERSION ${_VTE_VERSION_NUMS})
23+ set(_VTE_VERSION_NUM ${__VTE_VERSION})
24+ find_package(VTE)
25+ if(VTE_FOUND)
26+ break()
27+ endif()
28+ message(STATUS "VTE ${__VTE_VERSION} not found")
29+ endforeach(__VTE_VERSION)
30+elseif(WITH_VTE)
31 set(_VTE_VERSION_NUM)
32+ find_package(VTE)
33 endif()
34
35-find_suggested_package(VTE _VTE_VERSION_NUM)
36-if(VTE_FOUND)
37- add_definitions(-DHAVE_LIBVTE)
38- include_directories(${VTE_INCLUDE_DIRS})
39- target_link_libraries(remmina ${VTE_LIBRARIES})
40+if (VTE_FOUND)
41+ add_definitions(-DHAVE_LIBVTE)
42+ include_directories(${VTE_INCLUDE_DIRS})
43+ target_link_libraries(remmina ${VTE_LIBRARIES})
44 endif()
45
46 if(GTK3_FOUND)
47
48=== removed directory '.pc/vte-2.91.patch'
49=== removed directory '.pc/vte-2.91.patch/cmake'
50=== removed file '.pc/vte-2.91.patch/cmake/FindVTE.cmake'
51--- .pc/vte-2.91.patch/cmake/FindVTE.cmake 2014-11-07 16:17:53 +0000
52+++ .pc/vte-2.91.patch/cmake/FindVTE.cmake 1970-01-01 00:00:00 +0000
53@@ -1,46 +0,0 @@
54-# Remmina - The GTK+ Remote Desktop Client
55-#
56-# Copyright (C) 2011 Marc-Andre Moreau
57-#
58-# This program is free software; you can redistribute it and/or modify
59-# it under the terms of the GNU General Public License as published by
60-# the Free Software Foundation; either version 2 of the License, or
61-# (at your option) any later version.
62-#
63-# This program is distributed in the hope that it will be useful,
64-# but WITHOUT ANY WARRANTY; without even the implied warranty of
65-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
66-# GNU General Public License for more details.
67-#
68-# You should have received a copy of the GNU General Public License
69-# along with this program; if not, write to the Free Software
70-# Foundation, Inc., 59 Temple Place, Suite 330,
71-# Boston, MA 02111-1307, USA.
72-
73-if(NOT _VTE_VERSION_NUM)
74- set(_VTE_LIB_NAME vte)
75- set(_VTE_VERSION vte)
76-else()
77- set(_VTE_LIB_NAME vte${_VTE_VERSION_NUM})
78- set(_VTE_VERSION vte-${_VTE_VERSION_NUM})
79-endif()
80-
81-string(REPLACE . _ _VTE_LIB_NAME ${_VTE_LIB_NAME})
82-
83-pkg_check_modules(PC_VTE ${_VTE_VERSION})
84-
85-find_path(VTE_INCLUDE_DIR NAMES vte/vte.h
86- HINTS ${PC_VTE_INCLUDEDIR} ${PC_VTE_INCLUDE_DIRS}
87- PATH_SUFFIXES ${_VTE_VERSION})
88-
89-find_library(VTE_LIBRARY NAMES ${_VTE_LIB_NAME})
90-
91-include(FindPackageHandleStandardArgs)
92-
93-find_package_handle_standard_args(VTE DEFAULT_MSG VTE_LIBRARY VTE_INCLUDE_DIR)
94-
95-set(VTE_LIBRARIES ${VTE_LIBRARY})
96-set(VTE_INCLUDE_DIRS ${VTE_INCLUDE_DIR})
97-
98-mark_as_advanced(VTE_INCLUDE_DIR VTE_LIBRARY)
99-
100
101=== removed directory '.pc/vte-2.91.patch/remmina'
102=== removed file '.pc/vte-2.91.patch/remmina/CMakeLists.txt'
103--- .pc/vte-2.91.patch/remmina/CMakeLists.txt 2014-11-07 16:17:53 +0000
104+++ .pc/vte-2.91.patch/remmina/CMakeLists.txt 1970-01-01 00:00:00 +0000
105@@ -1,172 +0,0 @@
106-# src/remmina - The GTK+ Remote Desktop Client
107-#
108-# Copyright (C) 2011 Marc-Andre Moreau
109-#
110-# This program is free software; you can redistribute it and/or modify
111-# it under the terms of the GNU General Public License as published by
112-# the Free Software Foundation; either version 2 of the License, or
113-# (at your option) any later version.
114-#
115-# This program is distributed in the hope that it will be useful,
116-# but WITHOUT ANY WARRANTY; without even the implied warranty of
117-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
118-# GNU General Public License for more details.
119-#
120-# You should have received a copy of the GNU General Public License
121-# along with this program; if not, write to the Free Software
122-# Foundation, Inc., 59 Temple Place, Suite 330,
123-# Boston, MA 02111-1307, USA.
124-#
125-# In addition, as a special exception, the copyright holders give
126-# permission to link the code of portions of this program with the
127-# OpenSSL library under certain conditions as described in each
128-# individual source file, and distribute linked combinations
129-# including the two.
130-# You must obey the GNU General Public License in all respects
131-# for all of the code used other than OpenSSL. If you modify
132-# file(s) with this exception, you may extend this exception to your
133-# version of the file(s), but you are not obligated to do so. If you
134-# do not wish to do so, delete this exception statement from your
135-# version. If you delete this exception statement from all source
136-# files in the program, then also delete it here.
137-
138-
139-cmake_minimum_required(VERSION 2.8)
140-
141-set(REMMINA_SRCS
142- src/remmina_about.c
143- src/remmina_about.h
144- src/remmina_applet_menu.c
145- src/remmina_applet_menu.h
146- src/remmina_applet_menu_item.c
147- src/remmina_applet_menu_item.h
148- src/remmina_avahi.c
149- src/remmina_avahi.h
150- src/remmina.c
151- src/remmina_chain_button.c
152- src/remmina_chain_button.h
153- src/remmina_chat_window.c
154- src/remmina_chat_window.h
155- src/remmina_connection_window.c
156- src/remmina_connection_window.h
157- src/remmina_crypt.c
158- src/remmina_crypt.h
159- src/remmina_exec.c
160- src/remmina_exec.h
161- src/remmina_file.c
162- src/remmina_file_editor.c
163- src/remmina_file_editor.h
164- src/remmina_file.h
165- src/remmina_file_manager.c
166- src/remmina_file_manager.h
167- src/remmina_ftp_client.c
168- src/remmina_ftp_client.h
169- src/remmina_icon.c
170- src/remmina_icon.h
171- src/remmina_init_dialog.c
172- src/remmina_init_dialog.h
173- src/remmina_key_chooser.c
174- src/remmina_key_chooser.h
175- src/remmina_log.c
176- src/remmina_log.h
177- src/remmina_main.c
178- src/remmina_main.h
179- src/remmina_marshals.c
180- src/remmina_marshals.h
181- src/remmina_marshals.list
182- src/remmina_plugin_manager.c
183- src/remmina_plugin_manager.h
184- src/remmina_pref.c
185- src/remmina_pref_dialog.c
186- src/remmina_pref_dialog.h
187- src/remmina_pref.h
188- src/remmina_protocol_widget.c
189- src/remmina_protocol_widget.h
190- src/remmina_public.c
191- src/remmina_public.h
192- src/remmina_scaler.c
193- src/remmina_scaler.h
194- src/remmina_scrolled_viewport.c
195- src/remmina_scrolled_viewport.h
196- src/remmina_sftp_client.c
197- src/remmina_sftp_client.h
198- src/remmina_sftp_plugin.c
199- src/remmina_sftp_plugin.h
200- src/remmina_ssh.c
201- src/remmina_ssh.h
202- src/remmina_ssh_plugin.c
203- src/remmina_ssh_plugin.h
204- src/remmina_string_array.c
205- src/remmina_string_array.h
206- src/remmina_string_list.c
207- src/remmina_string_list.h
208- src/remmina_widget_pool.c
209- src/remmina_widget_pool.h
210- src/remmina_external_tools.c
211- src/remmina_external_tools.h
212- )
213-
214-add_executable(remmina ${REMMINA_SRCS})
215-
216-include_directories(${GTK_INCLUDE_DIRS})
217-target_link_libraries(remmina ${GTK_LIBRARIES})
218-
219-find_package(X11)
220-include_directories(${X11_INCLUDE_DIR})
221-target_link_libraries(remmina ${X11_LIBRARIES})
222-
223-find_suggested_package(LIBSSH)
224-if(LIBSSH_FOUND)
225- add_definitions(-DHAVE_LIBSSH)
226- include_directories(${LIBSSH_INCLUDE_DIRS})
227- target_link_libraries(remmina ${LIBSSH_LIBRARIES})
228-endif()
229-
230-if(PTHREAD_FOUND)
231- include_directories(${PTHREAD_INCLUDE_DIRS})
232- target_link_libraries(remmina ${PTHREAD_LIBRARIES})
233-endif()
234-
235-if(GCRYPT_FOUND)
236- include_directories(${GCRYPT_INCLUDE_DIRS})
237- target_link_libraries(remmina ${GCRYPT_LIBRARIES})
238-endif()
239-
240-if(AVAHI_FOUND)
241- include_directories(${AVAHI_INCLUDE_DIRS})
242- target_link_libraries(remmina ${AVAHI_LIBRARIES})
243-endif()
244-
245-if(GTK3_FOUND)
246- set(_VTE_VERSION_NUM 2.90)
247-else()
248- set(_VTE_VERSION_NUM)
249-endif()
250-
251-find_suggested_package(VTE _VTE_VERSION_NUM)
252-if(VTE_FOUND)
253- add_definitions(-DHAVE_LIBVTE)
254- include_directories(${VTE_INCLUDE_DIRS})
255- target_link_libraries(remmina ${VTE_LIBRARIES})
256-endif()
257-
258-if(GTK3_FOUND)
259- find_suggested_package(APPINDICATOR)
260- if(APPINDICATOR_FOUND)
261- add_definitions(-DHAVE_LIBAPPINDICATOR)
262- include_directories(${APPINDICATOR_INCLUDE_DIRS})
263- target_link_libraries(remmina ${APPINDICATOR_LIBRARIES})
264- endif()
265-endif()
266-
267-if(WITH_TRANSLATIONS)
268- add_subdirectory(po)
269-endif()
270-add_subdirectory(icons)
271-add_subdirectory(desktop)
272-
273-install(TARGETS remmina DESTINATION ${CMAKE_INSTALL_BINDIR})
274-
275-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/remmina.pc.in ${CMAKE_CURRENT_BINARY_DIR}/remmina.pc @ONLY)
276-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/remmina.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
277-
278
279=== removed directory '.pc/vte-2.91.patch/remmina/src'
280=== removed file '.pc/vte-2.91.patch/remmina/src/remmina_ssh_plugin.c'
281--- .pc/vte-2.91.patch/remmina/src/remmina_ssh_plugin.c 2014-11-07 16:17:53 +0000
282+++ .pc/vte-2.91.patch/remmina/src/remmina_ssh_plugin.c 1970-01-01 00:00:00 +0000
283@@ -1,364 +0,0 @@
284-/*
285- * Remmina - The GTK+ Remote Desktop Client
286- * Copyright (C) 2010-2011 Vic Lee
287- *
288- * This program is free software; you can redistribute it and/or modify
289- * it under the terms of the GNU General Public License as published by
290- * the Free Software Foundation; either version 2 of the License, or
291- * (at your option) any later version.
292- *
293- * This program is distributed in the hope that it will be useful,
294- * but WITHOUT ANY WARRANTY; without even the implied warranty of
295- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
296- * GNU General Public License for more details.
297- *
298- * You should have received a copy of the GNU General Public License
299- * along with this program; if not, write to the Free Software
300- * Foundation, Inc., 59 Temple Place, Suite 330,
301- * Boston, MA 02111-1307, USA.
302- *
303- * In addition, as a special exception, the copyright holders give
304- * permission to link the code of portions of this program with the
305- * OpenSSL library under certain conditions as described in each
306- * individual source file, and distribute linked combinations
307- * including the two.
308- * You must obey the GNU General Public License in all respects
309- * for all of the code used other than OpenSSL. * If you modify
310- * file(s) with this exception, you may extend this exception to your
311- * version of the file(s), but you are not obligated to do so. * If you
312- * do not wish to do so, delete this exception statement from your
313- * version. * If you delete this exception statement from all source
314- * files in the program, then also delete it here.
315- *
316- */
317-
318-#include "config.h"
319-
320-#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)
321-
322-#include <gtk/gtk.h>
323-#include <glib/gi18n.h>
324-#include <vte/vte.h>
325-#include "remmina_public.h"
326-#include "remmina_plugin_manager.h"
327-#include "remmina_ssh.h"
328-#include "remmina_protocol_widget.h"
329-#include "remmina_pref.h"
330-#include "remmina_ssh_plugin.h"
331-
332-#define REMMINA_PLUGIN_SSH_FEATURE_TOOL_COPY 1
333-#define REMMINA_PLUGIN_SSH_FEATURE_TOOL_PASTE 2
334-
335-/***** The SSH plugin implementation *****/
336-typedef struct _RemminaPluginSshData
337-{
338- RemminaSSHShell *shell;
339- GtkWidget *vte;
340- pthread_t thread;
341-}RemminaPluginSshData;
342-
343-static RemminaPluginService *remmina_plugin_service = NULL;
344-
345-static gpointer
346-remmina_plugin_ssh_main_thread (gpointer data)
347-{
348- RemminaProtocolWidget *gp = (RemminaProtocolWidget*) data;
349- RemminaPluginSshData *gpdata;
350- RemminaFile *remminafile;
351- RemminaSSH *ssh;
352- RemminaSSHShell *shell = NULL;
353- gboolean cont = FALSE;
354- gint ret;
355- gchar *charset;
356-
357- pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL);
358- CANCEL_ASYNC
359-
360- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
361-
362- ssh = g_object_get_data (G_OBJECT(gp), "user-data");
363- if (ssh)
364- {
365- /* Create SSH Shell connection based on existing SSH session */
366- shell = remmina_ssh_shell_new_from_ssh (ssh);
367- if (remmina_ssh_init_session (REMMINA_SSH (shell)) &&
368- remmina_ssh_auth (REMMINA_SSH (shell), NULL) > 0 &&
369- remmina_ssh_shell_open (shell, (RemminaSSHExitFunc) remmina_plugin_service->protocol_plugin_close_connection, gp))
370- {
371- cont = TRUE;
372- }
373- }
374- else
375- {
376- /* New SSH Shell connection */
377- remminafile = remmina_plugin_service->protocol_plugin_get_file (gp);
378- remmina_plugin_service->file_set_string (remminafile, "ssh_server",
379- remmina_plugin_service->file_get_string (remminafile, "server"));
380-
381- shell = remmina_ssh_shell_new_from_file (remminafile);
382- while (1)
383- {
384- if (!remmina_ssh_init_session (REMMINA_SSH (shell)))
385- {
386- remmina_plugin_service->protocol_plugin_set_error (gp, "%s", REMMINA_SSH (shell)->error);
387- break;
388- }
389-
390- ret = remmina_ssh_auth_gui (REMMINA_SSH (shell),
391- REMMINA_INIT_DIALOG (remmina_protocol_widget_get_init_dialog (gp)), TRUE);
392- if (ret == 0)
393- {
394- remmina_plugin_service->protocol_plugin_set_error (gp, "%s", REMMINA_SSH (shell)->error);
395- }
396- if (ret <= 0) break;
397-
398- if (!remmina_ssh_shell_open (shell, (RemminaSSHExitFunc) remmina_plugin_service->protocol_plugin_close_connection, gp))
399- {
400- remmina_plugin_service->protocol_plugin_set_error (gp, "%s", REMMINA_SSH (shell)->error);
401- break;
402- }
403-
404- cont = TRUE;
405- break;
406- }
407- }
408- if (!cont)
409- {
410- if (shell) remmina_ssh_shell_free (shell);
411- IDLE_ADD ((GSourceFunc) remmina_plugin_service->protocol_plugin_close_connection, gp);
412- return NULL;
413- }
414-
415- gpdata->shell = shell;
416-
417- charset = REMMINA_SSH (shell)->charset;
418-
419- THREADS_ENTER
420- if (charset && charset[0] != '\0')
421- {
422- vte_terminal_set_encoding (VTE_TERMINAL (gpdata->vte), charset);
423- }
424- vte_terminal_set_pty (VTE_TERMINAL (gpdata->vte), shell->slave);
425- THREADS_LEAVE
426-
427- remmina_plugin_service->protocol_plugin_emit_signal (gp, "connect");
428-
429- gpdata->thread = 0;
430- return NULL;
431-}
432-
433-static gboolean
434-remmina_plugin_ssh_on_focus_in (GtkWidget *widget, GdkEventFocus *event, RemminaProtocolWidget *gp)
435-{
436- RemminaPluginSshData *gpdata;
437-
438- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
439- gtk_widget_grab_focus (gpdata->vte);
440- return TRUE;
441-}
442-
443-static gboolean
444-remmina_plugin_ssh_on_size_allocate (GtkWidget *widget, GtkAllocation *alloc, RemminaProtocolWidget *gp)
445-{
446- RemminaPluginSshData *gpdata;
447- gint cols, rows;
448-
449- if (!gtk_widget_get_mapped (widget)) return FALSE;
450-
451- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
452-
453- cols = vte_terminal_get_column_count (VTE_TERMINAL (widget));
454- rows = vte_terminal_get_row_count (VTE_TERMINAL (widget));
455-
456- remmina_ssh_shell_set_size (gpdata->shell, cols, rows);
457-
458- return FALSE;
459-}
460-
461-static void
462-remmina_plugin_ssh_set_vte_pref (RemminaProtocolWidget *gp)
463-{
464- RemminaPluginSshData *gpdata;
465-
466- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
467- if (remmina_pref.vte_font && remmina_pref.vte_font[0])
468- {
469- vte_terminal_set_font_from_string (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_font);
470- }
471- vte_terminal_set_allow_bold (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_allow_bold_text);
472- if (remmina_pref.vte_lines > 0)
473- {
474- vte_terminal_set_scrollback_lines (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_lines);
475- }
476-}
477-
478-static void
479-remmina_plugin_ssh_init (RemminaProtocolWidget *gp)
480-{
481- RemminaPluginSshData *gpdata;
482- GtkWidget *hbox;
483- GtkWidget *vscrollbar;
484- GtkWidget *vte;
485-
486- gpdata = g_new0 (RemminaPluginSshData, 1);
487- g_object_set_data_full (G_OBJECT(gp), "plugin-data", gpdata, g_free);
488-
489-#if GTK_VERSION == 3
490- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
491-#elif GTK_VERSION == 2
492- hbox = gtk_hbox_new (FALSE, 0);
493-#endif
494- gtk_widget_show(hbox);
495- gtk_container_add(GTK_CONTAINER (gp), hbox);
496- g_signal_connect(G_OBJECT(hbox), "focus-in-event", G_CALLBACK(remmina_plugin_ssh_on_focus_in), gp);
497-
498- vte = vte_terminal_new ();
499- gtk_widget_show(vte);
500- vte_terminal_set_size (VTE_TERMINAL (vte), 80, 25);
501- vte_terminal_set_scroll_on_keystroke (VTE_TERMINAL (vte), TRUE);
502- gtk_box_pack_start (GTK_BOX (hbox), vte, TRUE, TRUE, 0);
503- gpdata->vte = vte;
504- remmina_plugin_ssh_set_vte_pref (gp);
505- g_signal_connect(G_OBJECT(vte), "size-allocate", G_CALLBACK(remmina_plugin_ssh_on_size_allocate), gp);
506-
507- remmina_plugin_service->protocol_plugin_register_hostkey (gp, vte);
508-
509-#if GTK_VERSION == 3
510- vscrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
511-#elif GTK_VERSION == 2
512- vscrollbar = gtk_vscrollbar_new (vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
513-#endif
514- gtk_widget_show(vscrollbar);
515- gtk_box_pack_start (GTK_BOX (hbox), vscrollbar, FALSE, TRUE, 0);
516-}
517-
518-static gboolean
519-remmina_plugin_ssh_open_connection (RemminaProtocolWidget *gp)
520-{
521- RemminaPluginSshData *gpdata;
522-
523- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
524-
525- remmina_plugin_service->protocol_plugin_set_expand (gp, TRUE);
526- remmina_plugin_service->protocol_plugin_set_width (gp, 640);
527- remmina_plugin_service->protocol_plugin_set_height (gp, 480);
528-
529- if (pthread_create (&gpdata->thread, NULL, remmina_plugin_ssh_main_thread, gp))
530- {
531- remmina_plugin_service->protocol_plugin_set_error (gp,
532- "Failed to initialize pthread. Falling back to non-thread mode...");
533- gpdata->thread = 0;
534- return FALSE;
535- }
536- else
537- {
538- return TRUE;
539- }
540- return TRUE;
541-}
542-
543-static gboolean
544-remmina_plugin_ssh_close_connection (RemminaProtocolWidget *gp)
545-{
546- RemminaPluginSshData *gpdata;
547-
548- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
549- if (gpdata->thread)
550- {
551- pthread_cancel (gpdata->thread);
552- if (gpdata->thread) pthread_join (gpdata->thread, NULL);
553- }
554- if (gpdata->shell)
555- {
556- remmina_ssh_shell_free (gpdata->shell);
557- gpdata->shell = NULL;
558- }
559-
560- remmina_plugin_service->protocol_plugin_emit_signal (gp, "disconnect");
561- return FALSE;
562-}
563-
564-static gboolean
565-remmina_plugin_ssh_query_feature (RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)
566-{
567- return TRUE;
568-}
569-
570-static void
571-remmina_plugin_ssh_call_feature (RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)
572-{
573- RemminaPluginSshData *gpdata;
574-
575- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
576- switch (feature->id)
577- {
578- case REMMINA_PROTOCOL_FEATURE_TOOL_SSH:
579- remmina_plugin_service->open_connection (
580- remmina_file_dup_temp_protocol (remmina_plugin_service->protocol_plugin_get_file (gp), "SSH"),
581- NULL, gpdata->shell, NULL);
582- return;
583- case REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:
584- remmina_plugin_service->open_connection (
585- remmina_file_dup_temp_protocol (remmina_plugin_service->protocol_plugin_get_file (gp), "SFTP"),
586- NULL, gpdata->shell, NULL);
587- return;
588- case REMMINA_PLUGIN_SSH_FEATURE_TOOL_COPY:
589- vte_terminal_copy_clipboard (VTE_TERMINAL (gpdata->vte));
590- return;
591- case REMMINA_PLUGIN_SSH_FEATURE_TOOL_PASTE:
592- vte_terminal_paste_clipboard (VTE_TERMINAL (gpdata->vte));
593- return;
594- }
595-}
596-
597-static RemminaProtocolFeature remmina_plugin_ssh_features[] =
598-{
599- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_SSH_FEATURE_TOOL_COPY, N_("Copy"), GTK_STOCK_COPY, NULL},
600- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_SSH_FEATURE_TOOL_PASTE, N_("Paste"), GTK_STOCK_PASTE, NULL},
601- { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL}
602-};
603-
604-static RemminaProtocolPlugin remmina_plugin_ssh =
605-{
606- REMMINA_PLUGIN_TYPE_PROTOCOL,
607- "SSH",
608- N_("SSH - Secure Shell"),
609- GETTEXT_PACKAGE,
610- VERSION,
611-
612- "utilities-terminal",
613- "utilities-terminal",
614- NULL,
615- NULL,
616- REMMINA_PROTOCOL_SSH_SETTING_SSH,
617- remmina_plugin_ssh_features,
618-
619- remmina_plugin_ssh_init,
620- remmina_plugin_ssh_open_connection,
621- remmina_plugin_ssh_close_connection,
622- remmina_plugin_ssh_query_feature,
623- remmina_plugin_ssh_call_feature
624-};
625-
626-void
627-remmina_ssh_plugin_register (void)
628-{
629- remmina_plugin_ssh_features[0].opt3 = GUINT_TO_POINTER (remmina_pref.vte_shortcutkey_copy);
630- remmina_plugin_ssh_features[1].opt3 = GUINT_TO_POINTER (remmina_pref.vte_shortcutkey_paste);
631-
632- remmina_plugin_service = &remmina_plugin_manager_service;
633- remmina_plugin_service->register_plugin ((RemminaPlugin *) &remmina_plugin_ssh);
634-
635- ssh_threads_set_callbacks(ssh_threads_get_pthread());
636- ssh_init();
637-
638-}
639-
640-#else
641-
642-void remmina_ssh_plugin_register(void)
643-{
644-}
645-
646-#endif
647-
648
649=== modified file 'CMakeLists.txt'
650--- CMakeLists.txt 2014-11-07 16:17:53 +0000
651+++ CMakeLists.txt 2014-12-20 01:21:24 +0000
652@@ -94,7 +94,7 @@
653 set(WITH_LIBRARY_VERSIONING "ON")
654 set(REMMINA_VERSION_MAJOR "1")
655 set(REMMINA_VERSION_MINOR "1")
656-set(REMMINA_VERSION_REVISION "0")
657+set(REMMINA_VERSION_REVISION "2")
658 #^set(REMMINA_VERSION_SUFFIX "")
659 set(REMMINA_VERSION "${REMMINA_VERSION_MAJOR}.${REMMINA_VERSION_MINOR}.${REMMINA_VERSION_REVISION}")
660
661
662=== modified file 'debian/changelog'
663--- debian/changelog 2014-11-07 16:17:53 +0000
664+++ debian/changelog 2014-12-20 01:21:24 +0000
665@@ -1,3 +1,34 @@
666+remmina (1.1.2-1ubuntu1) vivid; urgency=medium
667+
668+ * Merge with Debian, remaining changes:
669+ + debian/control:
670+ - Build-depend on libappindicator3-dev, intltool
671+ + debian/rules:
672+ - Build with libappindicator
673+ - Call intltool-update on build
674+ + debian/patches/translations.patch,
675+ - Make translatable and add keywords.
676+ * Drop vte-2.91.patch. Fixed upstream
677+
678+ -- Jackson Doak <noskcaj@ubuntu.com> Sat, 20 Dec 2014 12:15:44 +1100
679+
680+remmina (1.1.2-1) experimental; urgency=medium
681+
682+ [ Gianfranco Costamagna ]
683+ * New upstream release.
684+ - Drop RDP_certificate_crash.patch, already available upstream.
685+ - Fix bugs with plugins using GtkSocket.
686+
687+ -- Luca Falavigna <dktrkranz@debian.org> Fri, 19 Dec 2014 09:08:46 +0100
688+
689+remmina (1.1.1-2) unstable; urgency=medium
690+
691+ * debian/patches/RDP_certificate_crash.patch:
692+ - Cherry-pick patches from upstream to fix a crash when not
693+ accepting certificate for RDP server (Closes: #766671).
694+
695+ -- Luca Falavigna <dktrkranz@debian.org> Thu, 20 Nov 2014 21:08:11 +0100
696+
697 remmina (1.1.1-1ubuntu1) vivid; urgency=low
698
699 * Merge with Debian, remaining Ubuntu changes: (LP: #1358770)
700
701=== modified file 'debian/patches/external_tools.patch'
702--- debian/patches/external_tools.patch 2014-09-29 08:11:58 +0000
703+++ debian/patches/external_tools.patch 2014-12-20 01:21:24 +0000
704@@ -27,7 +27,7 @@
705 ===================================================================
706 --- remmina.orig/remmina/CMakeLists.txt
707 +++ remmina/remmina/CMakeLists.txt
708-@@ -164,7 +164,6 @@ if(WITH_TRANSLATIONS)
709+@@ -173,7 +173,6 @@ if(WITH_TRANSLATIONS)
710 endif()
711 add_subdirectory(icons)
712 add_subdirectory(desktop)
713
714=== modified file 'debian/patches/series'
715--- debian/patches/series 2014-11-07 16:17:53 +0000
716+++ debian/patches/series 2014-12-20 01:21:24 +0000
717@@ -1,3 +1,2 @@
718 translations.patch
719 external_tools.patch
720-vte-2.91.patch
721
722=== removed file 'debian/patches/vte-2.91.patch'
723--- debian/patches/vte-2.91.patch 2014-11-07 16:17:53 +0000
724+++ debian/patches/vte-2.91.patch 1970-01-01 00:00:00 +0000
725@@ -1,96 +0,0 @@
726-Description: Port to vte 2.91
727-Forwarded: https://github.com/FreeRDP/Remmina/pull/371/files
728-Author: Iain Lane <iain.lane@canonical.com>
729-
730-Index: b/remmina/CMakeLists.txt
731-===================================================================
732---- a/remmina/CMakeLists.txt
733-+++ b/remmina/CMakeLists.txt
734-@@ -138,7 +138,7 @@
735- endif()
736-
737- if(GTK3_FOUND)
738-- set(_VTE_VERSION_NUM 2.90)
739-+ set(_VTE_VERSION_NUM 2.91)
740- else()
741- set(_VTE_VERSION_NUM)
742- endif()
743-Index: b/cmake/FindVTE.cmake
744-===================================================================
745---- a/cmake/FindVTE.cmake
746-+++ b/cmake/FindVTE.cmake
747-@@ -21,11 +21,17 @@
748- set(_VTE_LIB_NAME vte)
749- set(_VTE_VERSION vte)
750- else()
751-- set(_VTE_LIB_NAME vte${_VTE_VERSION_NUM})
752-+ if(${_VTE_VERSION_NUM} VERSION_LESS 2.91)
753-+ set(_VTE_LIB_NAME vte${_VTE_VERSION_NUM})
754-+ else()
755-+ set(_VTE_LIB_NAME vte-${_VTE_VERSION_NUM})
756-+ endif()
757- set(_VTE_VERSION vte-${_VTE_VERSION_NUM})
758- endif()
759-
760--string(REPLACE . _ _VTE_LIB_NAME ${_VTE_LIB_NAME})
761-+if(${_VTE_VERSION_NUM} VERSION_LESS 2.91)
762-+ string(REPLACE . _ _VTE_LIB_NAME ${_VTE_LIB_NAME})
763-+endif()
764-
765- pkg_check_modules(PC_VTE ${_VTE_VERSION})
766-
767-Index: b/remmina/src/remmina_ssh_plugin.c
768-===================================================================
769---- a/remmina/src/remmina_ssh_plugin.c
770-+++ b/remmina/src/remmina_ssh_plugin.c
771-@@ -136,9 +136,18 @@
772- THREADS_ENTER
773- if (charset && charset[0] != '\0')
774- {
775-+#if !VTE_CHECK_VERSION(0,38,0)
776- vte_terminal_set_encoding (VTE_TERMINAL (gpdata->vte), charset);
777-+#else
778-+ vte_terminal_set_encoding (VTE_TERMINAL (gpdata->vte), charset, NULL);
779-+#endif
780- }
781-+#if !VTE_CHECK_VERSION(0,38,0)
782- vte_terminal_set_pty (VTE_TERMINAL (gpdata->vte), shell->slave);
783-+#else
784-+ vte_terminal_set_pty (VTE_TERMINAL (gpdata->vte),
785-+ vte_pty_new_foreign_sync (shell->slave, NULL, NULL));
786-+#endif
787- THREADS_LEAVE
788-
789- remmina_plugin_service->protocol_plugin_emit_signal (gp, "connect");
790-@@ -183,7 +192,12 @@
791- gpdata = (RemminaPluginSshData*) g_object_get_data (G_OBJECT(gp), "plugin-data");
792- if (remmina_pref.vte_font && remmina_pref.vte_font[0])
793- {
794-+#if !VTE_CHECK_VERSION(0,38,0)
795- vte_terminal_set_font_from_string (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_font);
796-+#else
797-+ vte_terminal_set_font (VTE_TERMINAL (gpdata->vte),
798-+ pango_font_description_from_string (remmina_pref.vte_font));
799-+#endif
800- }
801- vte_terminal_set_allow_bold (VTE_TERMINAL (gpdata->vte), remmina_pref.vte_allow_bold_text);
802- if (remmina_pref.vte_lines > 0)
803-@@ -224,10 +238,18 @@
804- remmina_plugin_service->protocol_plugin_register_hostkey (gp, vte);
805-
806- #if GTK_VERSION == 3
807-+#if VTE_CHECK_VERSION(0, 38, 0)
808-+ vscrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (vte)));
809-+#else
810- vscrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
811-+#endif
812- #elif GTK_VERSION == 2
813-+#if VTE_CHECK_VERSION(0, 38, 0)
814-+ vscrollbar = gtk_vscrollbar_new (gtk_scrollable_get_vadjustment (GTK_SCROLLABLE_TERMINAL (vte)));
815-+#else
816- vscrollbar = gtk_vscrollbar_new (vte_terminal_get_adjustment (VTE_TERMINAL (vte)));
817- #endif
818-+#endif
819- gtk_widget_show(vscrollbar);
820- gtk_box_pack_start (GTK_BOX (hbox), vscrollbar, FALSE, TRUE, 0);
821- }
822
823=== modified file 'remmina-plugins/rdp/rdp_event.c'
824--- remmina-plugins/rdp/rdp_event.c 2014-11-07 16:17:53 +0000
825+++ remmina-plugins/rdp/rdp_event.c 2014-12-20 01:21:24 +0000
826@@ -54,6 +54,9 @@
827 #endif
828
829 rfi = GET_DATA(gp);
830+ if ( !rfi )
831+ return;
832+
833 input = rfi->instance->input;
834 UINT32 toggle_keys_state = 0;
835
836@@ -88,6 +91,8 @@
837 RemminaPluginRdpEvent* event;
838
839 rfi = GET_DATA(gp);
840+ if ( !rfi )
841+ return;
842
843 if (rfi->event_queue)
844 {
845@@ -454,6 +459,8 @@
846 DWORD scancode;
847
848 rfi = GET_DATA(gp);
849+ if ( !rfi ) return TRUE;
850+
851 rdp_event.type = REMMINA_RDP_EVENT_TYPE_SCANCODE;
852 rdp_event.key_event.up = (event->type == GDK_KEY_PRESS ? False : True);
853 rdp_event.key_event.extended = False;
854@@ -535,6 +542,8 @@
855 GtkClipboard* clipboard;
856
857 rfi = GET_DATA(gp);
858+ if ( !rfi ) return;
859+
860 rfi->drawing_area = gtk_drawing_area_new();
861 gtk_widget_show(rfi->drawing_area);
862 gtk_container_add(GTK_CONTAINER(gp), rfi->drawing_area);
863@@ -608,7 +617,7 @@
864 RemminaPluginRdpUiObject* ui;
865
866 rfi = GET_DATA(gp);
867-
868+ if ( !rfi ) return;
869
870 /* unregister the clipboard monitor */
871 if (rfi->clipboard_handler)
872@@ -702,7 +711,7 @@
873 rfContext* rfi = GET_DATA(gp);
874 rdpPointer* pointer = (rdpPointer*)ui->cursor.pointer;
875 #if GTK_VERSION == 3
876- cairo_surface_t* surface;
877+ cairo_surface_t* surface;
878 UINT8* data = malloc(pointer->width * pointer->height * 4);
879 #else
880 guchar *data = g_malloc0(pointer->width * pointer->height * 4);
881@@ -715,7 +724,7 @@
882 cairo_surface_destroy(surface);
883 #else
884 pixbuf = gdk_pixbuf_new_from_data(data, GDK_COLORSPACE_RGB, TRUE, 8, pointer->width, pointer->height, (pointer->width * 4), NULL, NULL);
885-#endif
886+#endif
887 ((rfPointer*)ui->cursor.pointer)->cursor = gdk_cursor_new_from_pixbuf(rfi->display, pixbuf, pointer->xPos, pointer->yPos);
888 }
889
890@@ -728,7 +737,7 @@
891 g_object_unref(ui->cursor.pointer->cursor);
892 #else
893 gdk_cursor_unref(ui->cursor.pointer->cursor);
894-#endif
895+#endif
896 ui->cursor.pointer->cursor = NULL;
897 g_cond_signal(rfi->gcond);
898 g_mutex_unlock(rfi->gmutex);
899
900=== modified file 'remmina-plugins/rdp/rdp_plugin.c'
901--- remmina-plugins/rdp/rdp_plugin.c 2014-11-07 16:17:53 +0000
902+++ remmina-plugins/rdp/rdp_plugin.c 2014-12-20 01:21:24 +0000
903@@ -14,7 +14,7 @@
904 *
905 * You should have received a copy of the GNU General Public License
906 * along with this program; if not, write to the Free Software
907- * Foundation, Inc., 59 Temple Place, Suite 330,
908+ * Foundation, Inc., 59 Temple Place, Suite 330,
909 * Boston, MA 02111-1307, USA.
910 *
911 * In addition, as a special exception, the copyright holders give
912@@ -338,6 +338,7 @@
913 instance->update->DesktopResize = rf_desktop_resize;
914
915 freerdp_channels_post_connect(instance->context->channels, instance);
916+ rfi->connected = True;
917
918 remmina_plugin_service->protocol_plugin_emit_signal(gp, "connect");
919
920@@ -375,7 +376,7 @@
921
922 s_domain = remmina_plugin_service->protocol_plugin_init_get_domain(gp);
923 if (s_domain) rfi->settings->Domain = strdup(s_domain);
924-
925+
926 save = remmina_plugin_service->protocol_plugin_init_get_savepassword(gp);
927 if (save)
928 {
929@@ -383,13 +384,13 @@
930 // into remminafile->settings. They will be saved later, when disconnecting, by
931 // remmina_connection_object_on_disconnect of remmina_connection_window.c
932 // (this operation should be called "save credentials" and not "save password")
933-
934+
935 remmina_plugin_service->file_set_string( remminafile, "username", s_username );
936 remmina_plugin_service->file_set_string( remminafile, "password", s_password );
937 remmina_plugin_service->file_set_string( remminafile, "domain", s_domain );
938-
939+
940 }
941-
942+
943 if ( s_username ) g_free( s_username );
944 if ( s_password ) g_free( s_password );
945 if ( s_domain ) g_free( s_domain );
946@@ -470,9 +471,9 @@
947 fd_set wfds_set;
948 rfContext* rfi;
949 wMessage* event;
950-
951+
952 rdpChannels *channels;
953-
954+
955
956 memset(rfds, 0, sizeof(rfds));
957 memset(wfds, 0, sizeof(wfds));
958@@ -561,39 +562,18 @@
959 }
960 }
961
962-gboolean remmina_rdp_load_plugin(rdpChannels* channels, rdpSettings* settings, const char* name, rdpSettings* plugin_data)
963-{
964- void* entry = NULL;
965-
966- entry = freerdp_channels_client_find_static_entry("VirtualChannelEntry", name);
967-
968- if (entry)
969- {
970- if (freerdp_channels_client_load(channels, settings, entry, plugin_data) == 0)
971- {
972- g_printf("loading channel %s (static)\n", name);
973- return TRUE;
974- }
975- }
976-
977- g_printf("loading channel %s (plugin)\n", name);
978- freerdp_channels_load_plugin(channels, settings, name, plugin_data);
979-
980- return TRUE;
981-}
982-
983 int remmina_rdp_load_static_channel_addin(rdpChannels* channels, rdpSettings* settings, char* name, void* data)
984 {
985 void* entry;
986
987 entry = freerdp_load_channel_addin_entry(name, NULL, NULL, FREERDP_ADDIN_CHANNEL_STATIC);
988-
989-
990-
991+
992+
993+
994
995 if (entry)
996 {
997-
998+
999 if (freerdp_channels_client_load(channels, settings, entry, data) == 0)
1000 {
1001 fprintf(stderr, "loading channel %s\n", name);
1002@@ -630,8 +610,6 @@
1003 gint port;
1004 gchar* host;
1005 gchar* value;
1006- gint rdpdr_num;
1007- gint drdynvc_num;
1008 gint rdpsnd_rate;
1009 gint rdpsnd_channel;
1010 char *rdpsnd_params[3];
1011@@ -664,7 +642,7 @@
1012 dest_server = remmina_plugin_service->file_get_string(remminafile, "server");
1013 if ( dest_server ) {
1014 remmina_plugin_service->get_server_port(dest_server, 0, &dest_host, &dest_port);
1015- rfi->settings->CertificateName = _strdup( dest_host );
1016+ rfi->settings->CertificateName = strdup( dest_host );
1017 g_free(dest_host);
1018 }
1019 }
1020@@ -701,12 +679,17 @@
1021
1022 if (remmina_plugin_service->file_get_string(remminafile, "clientname"))
1023 {
1024- strncpy(rfi->settings->ClientHostname, remmina_plugin_service->file_get_string(remminafile, "clientname"),
1025- sizeof(rfi->settings->ClientHostname) - 1);
1026+ s = remmina_plugin_service->file_get_string(remminafile, "clientname");
1027+ if ( s ) {
1028+ free( rfi->settings->ClientHostname );
1029+ rfi->settings->ClientHostname = strdup(s);
1030+ g_free(s);
1031+ }
1032 }
1033 else
1034 {
1035- strncpy(rfi->settings->ClientHostname, g_get_host_name(), sizeof(rfi->settings->ClientHostname) - 1);
1036+ free( rfi->settings->ClientHostname );
1037+ rfi->settings->ClientHostname = strdup( g_get_host_name() );
1038 }
1039
1040 if (remmina_plugin_service->file_get_string(remminafile, "exec"))
1041@@ -783,8 +766,6 @@
1042 rfi->settings->FastPathInput = True;
1043 rfi->settings->FastPathOutput = True;
1044
1045- drdynvc_num = 0;
1046-
1047 cs = remmina_plugin_service->file_get_string(remminafile, "sound");
1048
1049 if (g_strcmp0(cs, "remote") == 0)
1050@@ -822,14 +803,8 @@
1051
1052 }
1053
1054- if (drdynvc_num)
1055- {
1056- remmina_rdp_load_plugin(rfi->instance->context->channels, rfi->settings, "drdynvc", rfi->drdynvc_data);
1057- }
1058-
1059 rfi->settings->RedirectClipboard = ( remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ? FALSE: TRUE );
1060
1061- rdpdr_num = 0;
1062 cs = remmina_plugin_service->file_get_string(remminafile, "sharefolder");
1063
1064 if (cs && cs[0] == '/')
1065@@ -854,28 +829,32 @@
1066
1067 freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*) drive);
1068 rfi->settings->DeviceRedirection = TRUE;
1069- rdpdr_num++;
1070 }
1071
1072 if (remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE))
1073 {
1074-// rfi->rdpdr_data[rdpdr_num].size = sizeof(RDP_PLUGIN_DATA);
1075-// rfi->rdpdr_data[rdpdr_num].data[0] = "printer";
1076- rdpdr_num++;
1077+ RDPDR_PRINTER* printer;
1078+ printer = (RDPDR_PRINTER*) malloc(sizeof(RDPDR_PRINTER));
1079+ ZeroMemory(printer, sizeof(RDPDR_PRINTER));
1080+
1081+ printer->Type = RDPDR_DTYP_PRINT;
1082+
1083+ freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*) printer);
1084+ rfi->settings->DeviceRedirection = TRUE;
1085+
1086 }
1087
1088 if (remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE))
1089 {
1090- //rfi->rdpdr_data[rdpdr_num].size = sizeof(RDP_PLUGIN_DATA);
1091- //rfi->rdpdr_data[rdpdr_num].data[0] = "scard";
1092- //rfi->rdpdr_data[rdpdr_num].data[1] = "scard";
1093- rdpdr_num++;
1094- }
1095-
1096- if (rdpdr_num)
1097- {
1098- //remmina_rdp_load_plugin(rfi->channels, rfi->settings, "rdpdr", rfi->rdpdr_data);
1099- remmina_rdp_load_plugin(rfi->instance->context->channels, rfi->settings, "rdpdr", rfi->settings);
1100+ RDPDR_SMARTCARD* smartcard;
1101+ smartcard = (RDPDR_SMARTCARD*) malloc(sizeof(RDPDR_SMARTCARD));
1102+ ZeroMemory(smartcard, sizeof(RDPDR_SMARTCARD));
1103+
1104+ smartcard->Type = RDPDR_DTYP_SMARTCARD;
1105+ smartcard->Name = _strdup("scard");
1106+
1107+ freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*) smartcard);
1108+ rfi->settings->DeviceRedirection = TRUE;
1109 }
1110
1111
1112@@ -889,7 +868,7 @@
1113
1114 return FALSE;
1115 }
1116-
1117+
1118
1119
1120 remmina_rdp_main_loop(gp);
1121@@ -917,7 +896,7 @@
1122 {
1123 freerdp* instance;
1124 rfContext* rfi;
1125-
1126+
1127 freerdp_register_addin_provider(freerdp_channels_load_static_addin_entry, 0);
1128
1129 instance = freerdp_new();
1130@@ -938,6 +917,7 @@
1131 rfi->instance = instance;
1132 rfi->settings = instance->settings;
1133 rfi->instance->context->channels = freerdp_channels_new();
1134+ rfi->connected = False;
1135
1136 pthread_mutex_init(&rfi->mutex, NULL);
1137
1138@@ -972,7 +952,7 @@
1139 {
1140 rfContext* rfi;
1141 freerdp* instance;
1142-
1143+
1144
1145 rfi = GET_DATA(gp);
1146 instance = rfi->instance;
1147@@ -995,13 +975,12 @@
1148
1149 if (instance)
1150 {
1151- if (instance->context->channels)
1152- {
1153- //freerdp_channels_close(rfi->channels, instance);
1154- freerdp_channels_free(instance->context->channels);
1155- instance->context->channels = NULL;
1156+ if ( rfi->connected ) {
1157+ if (instance->context->channels)
1158+ freerdp_channels_close(instance->context->channels, instance);
1159+ freerdp_disconnect(instance);
1160+ rfi->connected = False;
1161 }
1162- freerdp_disconnect(instance);
1163 }
1164
1165 if (rfi->rfx_context)
1166@@ -1012,8 +991,17 @@
1167
1168 if (instance)
1169 {
1170- //freerdp_context_free(instance); /* context is rfContext* rfi */
1171+ /* Remove instance->context from gp object data to avoid double free */
1172+ g_object_steal_data(G_OBJECT(gp), "plugin-data");
1173+
1174+ if (instance->context->channels) {
1175+ freerdp_channels_free(instance->context->channels);
1176+ instance->context->channels = NULL;
1177+ }
1178+
1179+ freerdp_context_free(instance); /* context is rfContext* rfi */
1180 freerdp_free(instance);
1181+ rfi->instance = NULL;
1182 }
1183
1184 return FALSE;
1185
1186=== modified file 'remmina-plugins/rdp/rdp_plugin.h'
1187--- remmina-plugins/rdp/rdp_plugin.h 2014-11-07 16:17:53 +0000
1188+++ remmina-plugins/rdp/rdp_plugin.h 2014-12-20 01:21:24 +0000
1189@@ -1,6 +1,6 @@
1190 /*
1191 * Remmina - The GTK+ Remote Desktop Client
1192- * Copyright (C) 2010-2011 Vic Lee
1193+ * Copyright (C) 2010-2011 Vic Lee
1194 *
1195 * This program is free software; you can redistribute it and/or modify
1196 * it under the terms of the GNU General Public License as published by
1197@@ -14,7 +14,7 @@
1198 *
1199 * You should have received a copy of the GNU General Public License
1200 * along with this program; if not, write to the Free Software
1201- * Foundation, Inc., 59 Temple Place, Suite 330,
1202+ * Foundation, Inc., 59 Temple Place, Suite 330,
1203 * Boston, MA 02111-1307, USA.
1204 *
1205 * In addition, as a special exception, the copyright holders give
1206@@ -106,6 +106,8 @@
1207
1208 RFX_CONTEXT* rfx_context;
1209
1210+ gboolean connected;
1211+
1212 gboolean sw_gdi;
1213 GtkWidget* drawing_area;
1214 gint scale_width;
1215
1216=== modified file 'remmina/CMakeLists.txt'
1217--- remmina/CMakeLists.txt 2014-11-07 16:17:53 +0000
1218+++ remmina/CMakeLists.txt 2014-12-20 01:21:24 +0000
1219@@ -137,17 +137,26 @@
1220 target_link_libraries(remmina ${AVAHI_LIBRARIES})
1221 endif()
1222
1223-if(GTK3_FOUND)
1224- set(_VTE_VERSION_NUM 2.91)
1225-else()
1226+option(WITH_VTE "Build with support for VTE" ON)
1227+if(GTK3_FOUND AND WITH_VTE)
1228+ set(_VTE_VERSION_NUMS 2.91 2.90)
1229+ foreach(__VTE_VERSION ${_VTE_VERSION_NUMS})
1230+ set(_VTE_VERSION_NUM ${__VTE_VERSION})
1231+ find_package(VTE)
1232+ if(VTE_FOUND)
1233+ break()
1234+ endif()
1235+ message(STATUS "VTE ${__VTE_VERSION} not found")
1236+ endforeach(__VTE_VERSION)
1237+elseif(WITH_VTE)
1238 set(_VTE_VERSION_NUM)
1239+ find_package(VTE)
1240 endif()
1241
1242-find_suggested_package(VTE _VTE_VERSION_NUM)
1243-if(VTE_FOUND)
1244- add_definitions(-DHAVE_LIBVTE)
1245- include_directories(${VTE_INCLUDE_DIRS})
1246- target_link_libraries(remmina ${VTE_LIBRARIES})
1247+if (VTE_FOUND)
1248+ add_definitions(-DHAVE_LIBVTE)
1249+ include_directories(${VTE_INCLUDE_DIRS})
1250+ target_link_libraries(remmina ${VTE_LIBRARIES})
1251 endif()
1252
1253 if(GTK3_FOUND)
1254
1255=== modified file 'remmina/external_tools/CMakeLists.txt'
1256--- remmina/external_tools/CMakeLists.txt 2014-09-28 10:10:16 +0000
1257+++ remmina/external_tools/CMakeLists.txt 2014-12-20 01:21:24 +0000
1258@@ -30,10 +30,7 @@
1259 # version. If you delete this exception statement from all source
1260 # files in the program, then also delete it here.
1261
1262-
1263-set(EXTERNAL_TOOLS_DIR "$ENV{HOME}/.remmina/external_tools")
1264-
1265-file(MAKE_DIRECTORY ${EXTERNAL_TOOLS_DIR})
1266+set(EXTERNAL_TOOLS_DIR "${CMAKE_INSTALL_FULL_DATADIR}/remmina/external_tools")
1267
1268 INSTALL(PROGRAMS launcher.sh pause.sh remmina_filezilla_sftp.sh remmina_filezilla_sftp_pki.sh remmina_nslookup.sh remmina_ping.sh remmina_traceroute.sh DESTINATION ${EXTERNAL_TOOLS_DIR})
1269
1270
1271=== modified file 'remmina/src/remmina_about.c'
1272--- remmina/src/remmina_about.c 2014-10-13 16:57:50 +0000
1273+++ remmina/src/remmina_about.c 2014-12-20 01:21:24 +0000
1274@@ -50,6 +50,7 @@
1275 "Alex Chateau <ash@zednet.lv>",
1276 "Alexander Logvinov <avl@logvinov.com>",
1277 "Antenore Gatta <antenore@simbiosi.org>",
1278+ "Fabio Castelli (Muflone) <muflone@vbsimple.net>",
1279 "Giovanni Panozzo <giovanni@panozzo.it>",
1280 "Harun Trefry <aihtdikh@gmail.com>",
1281 "Nikolay Botev <bono8106@gmail.com>",
1282
1283=== modified file 'remmina/src/remmina_connection_window.c'
1284--- remmina/src/remmina_connection_window.c 2014-11-07 16:17:53 +0000
1285+++ remmina/src/remmina_connection_window.c 2014-12-20 01:21:24 +0000
1286@@ -1982,15 +1982,9 @@
1287 tab = remmina_connection_object_create_tab(cnnobj);
1288 remmina_connection_object_append_page(cnnobj, to, tab, view_mode);
1289
1290-#if GTK_VERSION == 3
1291- /* Reparent cnnobj->viewport */
1292- g_object_ref(cnnobj->viewport);
1293- gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(cnnobj->viewport)), cnnobj->viewport);
1294- gtk_container_add(GTK_CONTAINER(cnnobj->scrolled_container), cnnobj->viewport );
1295- g_object_unref(cnnobj->viewport);
1296-#elif GTK_VERSION == 2
1297+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1298 gtk_widget_reparent(cnnobj->viewport, cnnobj->scrolled_container);
1299-#endif
1300+ G_GNUC_END_IGNORE_DEPRECATIONS
1301
1302 if (cnnobj->window)
1303 {
1304@@ -2518,16 +2512,9 @@
1305 tab = remmina_connection_object_create_tab(cnnobj);
1306 i = remmina_connection_object_append_page(cnnobj, GTK_NOTEBOOK(cnnhld->cnnwin->priv->notebook), tab,
1307 cnnhld->cnnwin->priv->view_mode);
1308-
1309-#if GTK_VERSION == 3
1310- /* Reparent cnnobj->viewport */
1311- g_object_ref(cnnobj->viewport);
1312- gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(cnnobj->viewport)), cnnobj->viewport);
1313- gtk_container_add(GTK_CONTAINER(cnnobj->scrolled_container), cnnobj->viewport );
1314- g_object_unref(cnnobj->viewport);
1315-#elif GTK_VERSION == 2
1316+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1317 gtk_widget_reparent(cnnobj->viewport, cnnobj->scrolled_container);
1318-#endif
1319+ G_GNUC_END_IGNORE_DEPRECATIONS
1320
1321 gtk_window_present(GTK_WINDOW(cnnhld->cnnwin));
1322 gtk_notebook_set_current_page(GTK_NOTEBOOK(cnnhld->cnnwin->priv->notebook), i);
1323
1324=== modified file 'remmina/src/remmina_string_list.c'
1325--- remmina/src/remmina_string_list.c 2014-10-05 14:18:20 +0000
1326+++ remmina/src/remmina_string_list.c 2014-12-20 01:21:24 +0000
1327@@ -60,7 +60,11 @@
1328
1329 static void remmina_string_list_status_hints(RemminaStringList *gsl)
1330 {
1331+#if GTK_VERSION == 3
1332+ gtk_widget_override_color(gsl->status_label, GTK_STATE_NORMAL, NULL);
1333+#else
1334 gtk_widget_modify_fg(gsl->status_label, GTK_STATE_NORMAL, NULL);
1335+#endif
1336 gtk_label_set_text(GTK_LABEL(gsl->status_label), gsl->hints);
1337 }
1338
1339@@ -205,7 +209,7 @@
1340 #if GTK_CHECK_VERSION(3, 12, 0)
1341 gtk_widget_set_margin_end (GTK_FRAME(frame), 80);
1342 #else
1343- gtk_widget_set_margin_right (GTK_FRAME(frame), 80);
1344+ gtk_widget_set_margin_right (frame, 80);
1345 #endif
1346 gtk_grid_attach(GTK_GRID(gsl), frame, 0, 0, 1, 1);
1347

Subscribers

People subscribed via source and target branches

to all changes: