Merge lp:~noskcaj/ubuntu/vivid/remmina/1.1.2 into lp:ubuntu/vivid/remmina
- Vivid (15.04)
- 1.1.2
- Merge into vivid
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Marc Deslauriers | Needs Fixing | ||
Review via email: mp+245258@code.launchpad.net |
Commit message
Description of the change
Merge from debian
To post a comment you must log in.
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 |
Thanks for this merge, I do have a few comments though:
1- Why did you drop debian/docs? set_title. patch if it's not being applied?
2- Could you please remove indicator_
3- Please document the switch to libvte-2.91-dev in the changelog.
Thanks!