Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2017-10-26 00:30:44 +0300
committerAntenore Gatta <antenore@simbiosi.org>2017-10-26 00:30:44 +0300
commit01453a37434d97e450116025488c7960e7c3959f (patch)
tree4546922af8667905a6a40885898d16f023ac5802 /remmina-plugins
parentbf34393e25761fa17fbe7a28e6037aae9ab7eab0 (diff)
Code beautyfied
Diffstat (limited to 'remmina-plugins')
-rw-r--r--remmina-plugins/common/remmina_plugin.h30
-rw-r--r--remmina-plugins/nx/nx_plugin.c349
-rw-r--r--remmina-plugins/nx/nx_plugin.h8
-rw-r--r--remmina-plugins/nx/nx_session.c82
-rw-r--r--remmina-plugins/nx/nx_session.h5
-rw-r--r--remmina-plugins/nx/nx_session_manager.c83
-rw-r--r--remmina-plugins/rdp/rdp_channels.c41
-rw-r--r--remmina-plugins/rdp/rdp_cliprdr.c437
-rw-r--r--remmina-plugins/rdp/rdp_event.c510
-rw-r--r--remmina-plugins/rdp/rdp_file.c162
-rw-r--r--remmina-plugins/rdp/rdp_graphics.c128
-rw-r--r--remmina-plugins/rdp/rdp_plugin.c757
-rw-r--r--remmina-plugins/rdp/rdp_plugin.h86
-rw-r--r--remmina-plugins/rdp/rdp_settings.c99
-rw-r--r--remmina-plugins/spice/spice_plugin.c349
-rw-r--r--remmina-plugins/spice/spice_plugin.h9
-rw-r--r--remmina-plugins/spice/spice_plugin_file_transfer.c93
-rw-r--r--remmina-plugins/spice/spice_plugin_usb.c39
-rw-r--r--remmina-plugins/telepathy/telepathy_channel_handler.c133
-rw-r--r--remmina-plugins/telepathy/telepathy_channel_handler.h2
-rw-r--r--remmina-plugins/telepathy/telepathy_handler.c152
-rw-r--r--remmina-plugins/telepathy/telepathy_handler.h20
-rw-r--r--remmina-plugins/telepathy/telepathy_plugin.c18
-rw-r--r--remmina-plugins/tool_hello_world/plugin.c39
-rw-r--r--remmina-plugins/vnc/vnc_plugin.c1181
-rw-r--r--remmina-plugins/xdmcp/xdmcp_plugin.c188
26 files changed, 2195 insertions, 2805 deletions
diff --git a/remmina-plugins/common/remmina_plugin.h b/remmina-plugins/common/remmina_plugin.h
index 1b323bc98..e4148dcde 100644
--- a/remmina-plugins/common/remmina_plugin.h
+++ b/remmina-plugins/common/remmina_plugin.h
@@ -71,8 +71,8 @@ typedef void (*PThreadCleanupFunc)(void*);
#define IDLE_ADD gdk_threads_add_idle
#define TIMEOUT_ADD gdk_threads_add_timeout
-#define CANCEL_ASYNC pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL);pthread_testcancel();
-#define CANCEL_DEFER pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
+#define CANCEL_ASYNC pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); pthread_testcancel();
+#define CANCEL_DEFER pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
#define THREADS_ENTER _Pragma("GCC error \"THREADS_ENTER has been deprecated in Remmina 1.2\"")
#define THREADS_LEAVE _Pragma("GCC error \"THREADS_LEAVE has been deprecated in Remmina 1.2\"")
@@ -81,21 +81,21 @@ typedef void (*PThreadCleanupFunc)(void*);
#define X_UNIX_SOCKET "/tmp/.X11-unix/X%d"
#define INCLUDE_GET_AVAILABLE_XDISPLAY static gint \
-remmina_get_available_xdisplay (void) \
-{ \
- gint i; \
- gint display = 0; \
- gchar fn[200]; \
- for (i = 1; i < MAX_X_DISPLAY_NUMBER; i++) \
+ remmina_get_available_xdisplay(void) \
{ \
- g_snprintf (fn, sizeof (fn), X_UNIX_SOCKET, i); \
- if (!g_file_test (fn, G_FILE_TEST_EXISTS)) \
+ gint i; \
+ gint display = 0; \
+ gchar fn[200]; \
+ for (i = 1; i < MAX_X_DISPLAY_NUMBER; i++) \
{ \
- display = i; \
- break; \
+ g_snprintf(fn, sizeof(fn), X_UNIX_SOCKET, i); \
+ if (!g_file_test(fn, G_FILE_TEST_EXISTS)) \
+ { \
+ display = i; \
+ break; \
+ } \
} \
- } \
- return display; \
-}
+ return display; \
+ }
diff --git a/remmina-plugins/nx/nx_plugin.c b/remmina-plugins/nx/nx_plugin.c
index 67d21d165..9b31b8c51 100644
--- a/remmina-plugins/nx/nx_plugin.c
+++ b/remmina-plugins/nx/nx_plugin.c
@@ -82,10 +82,10 @@ static gboolean onMainThread_cb(struct onMainThread_cb_data *d)
{
TRACE_CALL("__func__");
if ( !d->cancelled ) {
- switch( d->func ) {
- case FUNC_GTK_SOCKET_ADD_ID:
- gtk_socket_add_id( d->sk, d->w );
- break;
+ switch ( d->func ) {
+ case FUNC_GTK_SOCKET_ADD_ID:
+ gtk_socket_add_id( d->sk, d->w );
+ break;
}
pthread_mutex_unlock( &d->mu );
} else {
@@ -111,7 +111,7 @@ static void onMainThread_schedule_callback_and_wait( struct onMainThread_cb_data
pthread_cleanup_push( onMainThread_cleanup_handler, d );
pthread_mutex_init( &d->mu, NULL );
pthread_mutex_lock( &d->mu );
- gdk_threads_add_idle( (GSourceFunc)onMainThread_cb, (gpointer) d );
+ gdk_threads_add_idle( (GSourceFunc)onMainThread_cb, (gpointer)d );
pthread_mutex_lock( &d->mu );
@@ -147,16 +147,13 @@ static gboolean remmina_plugin_nx_try_window_id(Window window_id)
gboolean found = FALSE;
pthread_mutex_lock(&remmina_nx_init_mutex);
- for (i = 0; i < remmina_nx_window_id_array->len; i++)
- {
- if (g_array_index(remmina_nx_window_id_array, Window, i) == window_id)
- {
+ for (i = 0; i < remmina_nx_window_id_array->len; i++) {
+ if (g_array_index(remmina_nx_window_id_array, Window, i) == window_id) {
found = TRUE;
break;
}
}
- if (!found)
- {
+ if (!found) {
g_array_append_val(remmina_nx_window_id_array, window_id);
}
pthread_mutex_unlock(&remmina_nx_init_mutex);
@@ -171,16 +168,13 @@ static void remmina_plugin_nx_remove_window_id(Window window_id)
gboolean found = FALSE;
pthread_mutex_lock(&remmina_nx_init_mutex);
- for (i = 0; i < remmina_nx_window_id_array->len; i++)
- {
- if (g_array_index(remmina_nx_window_id_array, Window, i) == window_id)
- {
+ for (i = 0; i < remmina_nx_window_id_array->len; i++) {
+ if (g_array_index(remmina_nx_window_id_array, Window, i) == window_id) {
found = TRUE;
break;
}
}
- if (found)
- {
+ if (found) {
g_array_remove_index_fast(remmina_nx_window_id_array, i);
}
pthread_mutex_unlock(&remmina_nx_init_mutex);
@@ -201,7 +195,7 @@ static void remmina_plugin_nx_on_plug_removed(GtkSocket *socket, RemminaProtocol
gboolean remmina_plugin_nx_ssh_auth_callback(gchar **passphrase, gpointer userdata)
{
TRACE_CALL("__func__");
- RemminaProtocolWidget *gp = (RemminaProtocolWidget*) userdata;
+ RemminaProtocolWidget *gp = (RemminaProtocolWidget*)userdata;
gint ret;
/* SSH passwords must not be saved */
@@ -217,7 +211,7 @@ gboolean remmina_plugin_nx_ssh_auth_callback(gchar **passphrase, gpointer userda
static void remmina_plugin_nx_on_proxy_exit(GPid pid, gint status, gpointer data)
{
TRACE_CALL("__func__");
- RemminaProtocolWidget *gp = (RemminaProtocolWidget*) data;
+ RemminaProtocolWidget *gp = (RemminaProtocolWidget*)data;
remmina_plugin_nx_service->protocol_plugin_close_connection(gp);
}
@@ -259,7 +253,7 @@ static gboolean remmina_plugin_nx_monitor_create_notify(RemminaProtocolWidget *g
CANCEL_DEFER
- gpdata = GET_PLUGIN_DATA(gp);
+ gpdata = GET_PLUGIN_DATA(gp);
atom = XInternAtom(gpdata->display, "WM_COMMAND", True);
if (atom == None)
return FALSE;
@@ -267,11 +261,9 @@ static gboolean remmina_plugin_nx_monitor_create_notify(RemminaProtocolWidget *g
ts.tv_sec = 0;
ts.tv_nsec = 200000000;
- while (1)
- {
+ while (1) {
pthread_testcancel();
- while (!XPending(gpdata->display))
- {
+ while (!XPending(gpdata->display)) {
nanosleep(&ts, NULL);
continue;
}
@@ -280,10 +272,9 @@ static gboolean remmina_plugin_nx_monitor_create_notify(RemminaProtocolWidget *g
continue;
w = xev.xcreatewindow.window;
if (XGetWindowProperty(gpdata->display, w, atom, 0, 255, False, AnyPropertyType, &type, &format, &nitems, &rest,
- &data) != Success)
+ &data) != Success)
continue;
- if (data && strstr((char *) data, cmd) && remmina_plugin_nx_try_window_id(w))
- {
+ if (data && strstr((char*)data, cmd) && remmina_plugin_nx_try_window_id(w)) {
gpdata->window_id = w;
XFree(data);
break;
@@ -309,10 +300,9 @@ static gint remmina_plugin_nx_wait_signal(RemminaPluginNxData *gpdata)
FD_ZERO(&set);
FD_SET(gpdata->event_pipe[0], &set);
select(gpdata->event_pipe[0] + 1, &set, NULL, NULL, NULL);
- if (read(gpdata->event_pipe[0], &dummy, 1))
- {
+ if (read(gpdata->event_pipe[0], &dummy, 1)) {
}
- return (gint) dummy;
+ return (gint)dummy;
}
static gboolean remmina_plugin_nx_start_session(RemminaProtocolWidget *gp)
@@ -337,21 +327,19 @@ static gboolean remmina_plugin_nx_start_session(RemminaProtocolWidget *gp)
/* Connect */
remmina_nx_session_set_encryption(nx,
- remmina_plugin_nx_service->file_get_int(remminafile, "disableencryption", FALSE) ? 0 : 1);
+ remmina_plugin_nx_service->file_get_int(remminafile, "disableencryption", FALSE) ? 0 : 1);
remmina_nx_session_set_localport(nx, remmina_plugin_nx_service->pref_get_sshtunnel_port());
remmina_nx_session_set_log_callback(nx, remmina_plugin_nx_service->log_printf);
s2 = remmina_plugin_nx_service->protocol_plugin_start_direct_tunnel(gp, 22, FALSE);
- if (s2 == NULL)
- {
+ if (s2 == NULL) {
return FALSE;
}
remmina_plugin_nx_service->get_server_port(s2, 22, &s1, &port);
g_free(s2);
if (!remmina_nx_session_open(nx, s1, port, remmina_plugin_nx_service->file_get_string(remminafile, "nx_privatekey"),
- remmina_plugin_nx_ssh_auth_callback, gp))
- {
+ remmina_plugin_nx_ssh_auth_callback, gp)) {
g_free(s1);
return FALSE;
}
@@ -362,12 +350,9 @@ static gboolean remmina_plugin_nx_start_session(RemminaProtocolWidget *gp)
s1 = g_strdup(remmina_plugin_nx_service->file_get_string(remminafile, "username"));
s2 = g_strdup(remmina_plugin_nx_service->file_get_string(remminafile, "password"));
- if (s1 && s2)
- {
+ if (s1 && s2) {
ret = remmina_nx_session_login(nx, s1, s2);
- }
- else
- {
+ }else {
g_free(s1);
g_free(s2);
@@ -391,76 +376,57 @@ static gboolean remmina_plugin_nx_start_session(RemminaProtocolWidget *gp)
/* Prepare the session type and application */
cs = remmina_plugin_nx_service->file_get_string(remminafile, "exec");
- if (!cs || g_strcmp0(cs, "GNOME") == 0)
- {
+ if (!cs || g_strcmp0(cs, "GNOME") == 0) {
type = "unix-gnome";
app = NULL;
+ }else
+ if (g_strcmp0(cs, "KDE") == 0) {
+ type = "unix-kde";
+ app = NULL;
+ }else
+ if (g_strcmp0(cs, "Xfce") == 0) {
+ /* NX does not know Xfce. So we simply launch the Xfce startup program. */
+ type = "unix-application";
+ app = "startxfce4";
+ }else
+ if (g_strcmp0(cs, "Shadow") == 0) {
+ type = "shadow";
+ app = NULL;
+ }else {
+ type = "unix-application";
+ app = cs;
}
- else
- if (g_strcmp0(cs, "KDE") == 0)
- {
- type = "unix-kde";
- app = NULL;
- }
- else
- if (g_strcmp0(cs, "Xfce") == 0)
- {
- /* NX does not know Xfce. So we simply launch the Xfce startup program. */
- type = "unix-application";
- app = "startxfce4";
- }
- else
- if (g_strcmp0(cs, "Shadow") == 0)
- {
- type = "shadow";
- app = NULL;
- }
- else
- {
- type = "unix-application";
- app = cs;
- }
/* List sessions */
gpdata->attach_session = (g_strcmp0(type, "shadow") == 0);
- while (1)
- {
+ while (1) {
remmina_nx_session_add_parameter(nx, "type", type);
- if (!gpdata->attach_session)
- {
+ if (!gpdata->attach_session) {
remmina_nx_session_add_parameter(nx, "user",
- remmina_plugin_nx_service->file_get_string(remminafile, "username"));
+ remmina_plugin_nx_service->file_get_string(remminafile, "username"));
remmina_nx_session_add_parameter(nx, "status", "suspended,running");
}
- if (!remmina_nx_session_list(nx))
- {
+ if (!remmina_nx_session_list(nx)) {
return FALSE;
}
is_empty_list = !remmina_nx_session_iter_first(nx, &gpdata->iter);
- if (is_empty_list && !gpdata->manager_started && !gpdata->attach_session)
- {
+ if (is_empty_list && !gpdata->manager_started && !gpdata->attach_session) {
event_type = REMMINA_NX_EVENT_START;
- }
- else
- {
+ }else {
remmina_nx_session_manager_start(gp);
event_type = remmina_plugin_nx_wait_signal(gpdata);
- if (event_type == REMMINA_NX_EVENT_CANCEL)
- {
+ if (event_type == REMMINA_NX_EVENT_CANCEL) {
return FALSE;
}
- if (event_type == REMMINA_NX_EVENT_TERMINATE)
- {
- if (!is_empty_list)
- {
+ if (event_type == REMMINA_NX_EVENT_TERMINATE) {
+ if (!is_empty_list) {
s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_ID);
remmina_nx_session_add_parameter(nx, "sessionid", s1);
g_free(s1);
- if (!remmina_nx_session_terminate(nx))
- {
+ if (!remmina_nx_session_terminate(nx)) {
remmina_nx_session_manager_start(gp);
remmina_plugin_nx_wait_signal(gpdata);
}
@@ -477,58 +443,57 @@ static gboolean remmina_plugin_nx_start_session(RemminaProtocolWidget *gp)
i = remmina_plugin_nx_service->file_get_int(remminafile, "quality", 0);
remmina_nx_session_add_parameter(nx, "link", i > 2 ? "lan" : i == 2 ? "adsl" : i == 1 ? "isdn" : "modem");
remmina_nx_session_add_parameter(nx, "geometry", "%ix%i",
- remmina_plugin_nx_service->get_profile_remote_width(gp),
- remmina_plugin_nx_service->get_profile_remote_height(gp));
+ remmina_plugin_nx_service->get_profile_remote_width(gp),
+ remmina_plugin_nx_service->get_profile_remote_height(gp));
remmina_nx_session_add_parameter(nx, "keyboard", remmina_kbtype);
remmina_nx_session_add_parameter(nx, "client", "linux");
remmina_nx_session_add_parameter(nx, "media", "0");
remmina_nx_session_add_parameter(nx, "clipboard",
- remmina_plugin_nx_service->file_get_int(remminafile, "disableclipboard", FALSE) ? "none" : "both");
+ remmina_plugin_nx_service->file_get_int(remminafile, "disableclipboard", FALSE) ? "none" : "both");
- switch (event_type)
- {
+ switch (event_type) {
- case REMMINA_NX_EVENT_START:
- if (app)
- remmina_nx_session_add_parameter(nx, "application", app);
+ case REMMINA_NX_EVENT_START:
+ if (app)
+ remmina_nx_session_add_parameter(nx, "application", app);
- remmina_nx_session_add_parameter(nx, "session",
- remmina_plugin_nx_service->file_get_string(remminafile, "name"));
- remmina_nx_session_add_parameter(nx, "screeninfo", "%ix%ix24+render",
- remmina_plugin_nx_service->file_get_int(remminafile, "resolution_width", 0),
- remmina_plugin_nx_service->file_get_int(remminafile, "resolution_height", 0));
+ remmina_nx_session_add_parameter(nx, "session",
+ remmina_plugin_nx_service->file_get_string(remminafile, "name"));
+ remmina_nx_session_add_parameter(nx, "screeninfo", "%ix%ix24+render",
+ remmina_plugin_nx_service->file_get_int(remminafile, "resolution_width", 0),
+ remmina_plugin_nx_service->file_get_int(remminafile, "resolution_height", 0));
- if (!remmina_nx_session_start(nx))
- return FALSE;
- break;
-
- case REMMINA_NX_EVENT_ATTACH:
- s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_ID);
- remmina_nx_session_add_parameter(nx, "id", s1);
- g_free(s1);
+ if (!remmina_nx_session_start(nx))
+ return FALSE;
+ break;
- s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_DISPLAY);
- remmina_nx_session_add_parameter(nx, "display", s1);
- g_free(s1);
+ case REMMINA_NX_EVENT_ATTACH:
+ s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_ID);
+ remmina_nx_session_add_parameter(nx, "id", s1);
+ g_free(s1);
- if (!remmina_nx_session_attach(nx))
- return FALSE;
- break;
+ s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_DISPLAY);
+ remmina_nx_session_add_parameter(nx, "display", s1);
+ g_free(s1);
- case REMMINA_NX_EVENT_RESTORE:
- s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_ID);
- remmina_nx_session_add_parameter(nx, "id", s1);
- g_free(s1);
+ if (!remmina_nx_session_attach(nx))
+ return FALSE;
+ break;
- remmina_nx_session_add_parameter(nx, "session",
- remmina_plugin_nx_service->file_get_string(remminafile, "name"));
+ case REMMINA_NX_EVENT_RESTORE:
+ s1 = remmina_nx_session_iter_get(nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_ID);
+ remmina_nx_session_add_parameter(nx, "id", s1);
+ g_free(s1);
- if (!remmina_nx_session_restore(nx))
- return FALSE;
- break;
+ remmina_nx_session_add_parameter(nx, "session",
+ remmina_plugin_nx_service->file_get_string(remminafile, "name"));
- default:
+ if (!remmina_nx_session_restore(nx))
return FALSE;
+ break;
+
+ default:
+ return FALSE;
}
if (!remmina_nx_session_tunnel_open(nx))
@@ -561,11 +526,9 @@ static gboolean remmina_plugin_nx_main(RemminaProtocolWidget *gp)
gpdata->nx = remmina_nx_session_new();
ret = remmina_plugin_nx_start_session(gp);
- if (!ret)
- {
+ if (!ret) {
err = remmina_nx_session_get_error(gpdata->nx);
- if (err)
- {
+ if (err) {
remmina_plugin_nx_service->protocol_plugin_set_error(gp, "%s", err);
}
}
@@ -580,9 +543,8 @@ static gpointer remmina_plugin_nx_main_thread(gpointer data)
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
CANCEL_ASYNC
- if (!remmina_plugin_nx_main((RemminaProtocolWidget*) data))
- {
- IDLE_ADD((GSourceFunc) remmina_plugin_nx_service->protocol_plugin_close_connection, data);
+ if (!remmina_plugin_nx_main((RemminaProtocolWidget*)data)) {
+ IDLE_ADD((GSourceFunc)remmina_plugin_nx_service->protocol_plugin_close_connection, data);
}
return NULL;
}
@@ -603,14 +565,11 @@ static void remmina_plugin_nx_init(RemminaProtocolWidget *gp)
g_signal_connect(G_OBJECT(gpdata->socket), "plug-removed", G_CALLBACK(remmina_plugin_nx_on_plug_removed), gp);
gtk_container_add(GTK_CONTAINER(gp), gpdata->socket);
- if (pipe(gpdata->event_pipe))
- {
+ if (pipe(gpdata->event_pipe)) {
g_print("Error creating pipes.\n");
gpdata->event_pipe[0] = -1;
gpdata->event_pipe[1] = -1;
- }
- else
- {
+ }else {
flags = fcntl(gpdata->event_pipe[0], F_GETFL, 0);
fcntl(gpdata->event_pipe[0], F_SETFL, flags | O_NONBLOCK);
}
@@ -624,9 +583,8 @@ static gboolean remmina_plugin_nx_open_connection(RemminaProtocolWidget *gp)
const gchar *resolution;
gint width, height;
- if (!remmina_plugin_nx_service->gtksocket_available())
- {
- remmina_plugin_nx_service->protocol_plugin_set_error (gp,
+ if (!remmina_plugin_nx_service->gtksocket_available()) {
+ remmina_plugin_nx_service->protocol_plugin_set_error(gp,
_("Protocol %s is unavailable because GtkSocket only works under Xorg"),
remmina_plugin_nx.name);
return FALSE;
@@ -635,13 +593,10 @@ static gboolean remmina_plugin_nx_open_connection(RemminaProtocolWidget *gp)
remminafile = remmina_plugin_nx_service->protocol_plugin_get_file(gp);
resolution = remmina_plugin_nx_service->file_get_string(remminafile, "resolution");
- if (!resolution || !strchr(resolution, 'x'))
- {
+ if (!resolution || !strchr(resolution, 'x')) {
remmina_plugin_nx_service->protocol_plugin_set_expand(gp, TRUE);
gtk_widget_set_size_request(GTK_WIDGET(gp), 640, 480);
- }
- else
- {
+ }else {
width = remmina_plugin_nx_service->file_get_int(remminafile, "resolution_width", 640);
height = remmina_plugin_nx_service->file_get_int(remminafile, "resolution_height", 480);
remmina_plugin_nx_service->protocol_plugin_set_width(gp, width);
@@ -650,15 +605,12 @@ static gboolean remmina_plugin_nx_open_connection(RemminaProtocolWidget *gp)
}
gpdata->socket_id = gtk_socket_get_id(GTK_SOCKET(gpdata->socket));
- if (pthread_create(&gpdata->thread, NULL, remmina_plugin_nx_main_thread, gp))
- {
+ if (pthread_create(&gpdata->thread, NULL, remmina_plugin_nx_main_thread, gp)) {
remmina_plugin_nx_service->protocol_plugin_set_error(gp,
- "Failed to initialize pthread. Falling back to non-thread mode...");
+ "Failed to initialize pthread. Falling back to non-thread mode...");
gpdata->thread = 0;
return FALSE;
- }
- else
- {
+ }else {
return TRUE;
}
}
@@ -668,31 +620,26 @@ static gboolean remmina_plugin_nx_close_connection(RemminaProtocolWidget *gp)
TRACE_CALL("__func__");
RemminaPluginNxData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->thread)
- {
+ if (gpdata->thread) {
pthread_cancel(gpdata->thread);
if (gpdata->thread)
pthread_join(gpdata->thread, NULL);
}
- if (gpdata->session_manager_start_handler)
- {
+ if (gpdata->session_manager_start_handler) {
g_source_remove(gpdata->session_manager_start_handler);
gpdata->session_manager_start_handler = 0;
}
- if (gpdata->window_id)
- {
+ if (gpdata->window_id) {
remmina_plugin_nx_remove_window_id(gpdata->window_id);
}
- if (gpdata->nx)
- {
+ if (gpdata->nx) {
remmina_nx_session_free(gpdata->nx);
gpdata->nx = NULL;
}
- if (gpdata->display)
- {
+ if (gpdata->display) {
XSetErrorHandler(gpdata->orig_handler);
XCloseDisplay(gpdata->display);
gpdata->display = NULL;
@@ -725,13 +672,12 @@ static gboolean remmina_plugin_nx_query_feature(RemminaProtocolWidget *gp, const
static void remmina_plugin_nx_call_feature(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)
{
TRACE_CALL("__func__");
- switch (feature->id)
- {
- case REMMINA_PLUGIN_NX_FEATURE_TOOL_SENDCTRLALTDEL:
- remmina_plugin_nx_send_ctrlaltdel(gp);
- break;
- default:
- break;
+ switch (feature->id) {
+ case REMMINA_PLUGIN_NX_FEATURE_TOOL_SENDCTRLALTDEL:
+ remmina_plugin_nx_send_ctrlaltdel(gp);
+ break;
+ default:
+ break;
}
}
@@ -756,14 +702,14 @@ static gpointer quality_list[] =
*/
static const RemminaProtocolSetting remmina_plugin_nx_basic_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_FILE, "nx_privatekey", N_("Identity file"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, "resolution", NULL, FALSE, GINT_TO_POINTER(1), NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_COMBO, "exec", N_("Startup program"), FALSE, "GNOME,KDE,Xfce,Shadow", NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_FILE, "nx_privatekey", N_("Identity file"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, "resolution", NULL, FALSE, GINT_TO_POINTER(1), NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_COMBO, "exec", N_("Startup program"), FALSE, "GNOME,KDE,Xfce,Shadow", NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array of RemminaProtocolSetting for advanced settings.
@@ -777,11 +723,11 @@ static const RemminaProtocolSetting remmina_plugin_nx_basic_settings[] =
*/
static const RemminaProtocolSetting remmina_plugin_nx_advanced_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableencryption", N_("Disable encryption"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "showcursor", N_("Use local cursor"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableencryption", N_("Disable encryption"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "showcursor", N_("Use local cursor"), FALSE, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array for available features.
@@ -789,30 +735,30 @@ static const RemminaProtocolSetting remmina_plugin_nx_advanced_settings[] =
static const RemminaProtocolFeature remmina_plugin_nx_features[] =
{
{ REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_NX_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
+ { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
};
/* Protocol plugin definition and features */
static RemminaProtocolPlugin remmina_plugin_nx =
{
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- "NX", // Name
- N_("NX - NX Technology"), // Description
- GETTEXT_PACKAGE, // Translation domain
- VERSION, // Version number
- "remmina-nx", // Icon for normal connection
- "remmina-nx", // Icon for SSH connection
- remmina_plugin_nx_basic_settings, // Array for basic settings
- remmina_plugin_nx_advanced_settings, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
- remmina_plugin_nx_features, // Array for available features
- remmina_plugin_nx_init, // Plugin initialization
- remmina_plugin_nx_open_connection, // Plugin open connection
- remmina_plugin_nx_close_connection, // Plugin close connection
- remmina_plugin_nx_query_feature, // Query for available features
- remmina_plugin_nx_call_feature, // Call a feature
- NULL, // Send a keystroke
- NULL // Screenshot
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ "NX", // Name
+ N_("NX - NX Technology"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ VERSION, // Version number
+ "remmina-nx", // Icon for normal connection
+ "remmina-nx", // Icon for SSH connection
+ remmina_plugin_nx_basic_settings, // Array for basic settings
+ remmina_plugin_nx_advanced_settings, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
+ remmina_plugin_nx_features, // Array for available features
+ remmina_plugin_nx_init, // Plugin initialization
+ remmina_plugin_nx_open_connection, // Plugin open connection
+ remmina_plugin_nx_close_connection, // Plugin close connection
+ remmina_plugin_nx_query_feature, // Query for available features
+ remmina_plugin_nx_call_feature, // Call a feature
+ NULL, // Send a keystroke
+ NULL // Screenshot
};
G_MODULE_EXPORT gboolean
@@ -828,10 +774,8 @@ remmina_plugin_entry(RemminaPluginService *service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if ((dpy = XkbOpenDisplay(NULL, NULL, NULL, NULL, NULL, NULL)) != NULL)
- {
- if (XkbRF_GetNamesProp(dpy, NULL, &vd))
- {
+ if ((dpy = XkbOpenDisplay(NULL, NULL, NULL, NULL, NULL, NULL)) != NULL) {
+ if (XkbRF_GetNamesProp(dpy, NULL, &vd)) {
remmina_kbtype = g_strdup_printf("%s/%s", vd.model, vd.layout);
if (vd.layout)
XFree(vd.layout);
@@ -849,8 +793,7 @@ remmina_plugin_entry(RemminaPluginService *service)
XCloseDisplay(dpy);
}
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin_nx))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin_nx)) {
return FALSE;
}
diff --git a/remmina-plugins/nx/nx_plugin.h b/remmina-plugins/nx/nx_plugin.h
index 1ff79a834..9a9e60223 100644
--- a/remmina-plugins/nx/nx_plugin.h
+++ b/remmina-plugins/nx/nx_plugin.h
@@ -36,14 +36,13 @@
#pragma once
-#define GET_PLUGIN_DATA(gp) (RemminaPluginNxData*) g_object_get_data(G_OBJECT(gp), "plugin-data");
+#define GET_PLUGIN_DATA(gp) (RemminaPluginNxData*)g_object_get_data(G_OBJECT(gp), "plugin-data");
G_BEGIN_DECLS
#include "nx_session.h"
-typedef enum
-{
+typedef enum {
REMMINA_NX_EVENT_CANCEL,
REMMINA_NX_EVENT_START,
REMMINA_NX_EVENT_RESTORE,
@@ -51,8 +50,7 @@ typedef enum
REMMINA_NX_EVENT_TERMINATE
} RemminaNXEventType;
-typedef struct _RemminaPluginNxData
-{
+typedef struct _RemminaPluginNxData {
GtkWidget *socket;
gint socket_id;
diff --git a/remmina-plugins/nx/nx_session.c b/remmina-plugins/nx/nx_session.c
index f2a9ad539..9688ab14d 100644
--- a/remmina-plugins/nx/nx_session.c
+++ b/remmina-plugins/nx/nx_session.c
@@ -76,17 +76,17 @@ static gboolean remmina_get_keytype(const gchar *private_key_file, gint *keytype
/*****/
static const gchar nx_default_private_key[] = "-----BEGIN DSA PRIVATE KEY-----\n"
- "MIIBuwIBAAKBgQCXv9AzQXjxvXWC1qu3CdEqskX9YomTfyG865gb4D02ZwWuRU/9\n"
- "C3I9/bEWLdaWgJYXIcFJsMCIkmWjjeSZyTmeoypI1iLifTHUxn3b7WNWi8AzKcVF\n"
- "aBsBGiljsop9NiD1mEpA0G+nHHrhvTXz7pUvYrsrXcdMyM6rxqn77nbbnwIVALCi\n"
- "xFdHZADw5KAVZI7r6QatEkqLAoGBAI4L1TQGFkq5xQ/nIIciW8setAAIyrcWdK/z\n"
- "5/ZPeELdq70KDJxoLf81NL/8uIc4PoNyTRJjtT3R4f8Az1TsZWeh2+ReCEJxDWgG\n"
- "fbk2YhRqoQTtXPFsI4qvzBWct42WonWqyyb1bPBHk+JmXFscJu5yFQ+JUVNsENpY\n"
- "+Gkz3HqTAoGANlgcCuA4wrC+3Cic9CFkqiwO/Rn1vk8dvGuEQqFJ6f6LVfPfRTfa\n"
- "QU7TGVLk2CzY4dasrwxJ1f6FsT8DHTNGnxELPKRuLstGrFY/PR7KeafeFZDf+fJ3\n"
- "mbX5nxrld3wi5titTnX+8s4IKv29HJguPvOK/SI7cjzA+SqNfD7qEo8CFDIm1xRf\n"
- "8xAPsSKs6yZ6j1FNklfu\n"
- "-----END DSA PRIVATE KEY-----\n";
+ "MIIBuwIBAAKBgQCXv9AzQXjxvXWC1qu3CdEqskX9YomTfyG865gb4D02ZwWuRU/9\n"
+ "C3I9/bEWLdaWgJYXIcFJsMCIkmWjjeSZyTmeoypI1iLifTHUxn3b7WNWi8AzKcVF\n"
+ "aBsBGiljsop9NiD1mEpA0G+nHHrhvTXz7pUvYrsrXcdMyM6rxqn77nbbnwIVALCi\n"
+ "xFdHZADw5KAVZI7r6QatEkqLAoGBAI4L1TQGFkq5xQ/nIIciW8setAAIyrcWdK/z\n"
+ "5/ZPeELdq70KDJxoLf81NL/8uIc4PoNyTRJjtT3R4f8Az1TsZWeh2+ReCEJxDWgG\n"
+ "fbk2YhRqoQTtXPFsI4qvzBWct42WonWqyyb1bPBHk+JmXFscJu5yFQ+JUVNsENpY\n"
+ "+Gkz3HqTAoGANlgcCuA4wrC+3Cic9CFkqiwO/Rn1vk8dvGuEQqFJ6f6LVfPfRTfa\n"
+ "QU7TGVLk2CzY4dasrwxJ1f6FsT8DHTNGnxELPKRuLstGrFY/PR7KeafeFZDf+fJ3\n"
+ "mbX5nxrld3wi5titTnX+8s4IKv29HJguPvOK/SI7cjzA+SqNfD7qEo8CFDIm1xRf\n"
+ "8xAPsSKs6yZ6j1FNklfu\n"
+ "-----END DSA PRIVATE KEY-----\n";
static const gchar nx_hello_server_msg[] = "hello nxserver - version ";
@@ -208,9 +208,9 @@ static void remmina_nx_session_set_application_error(RemminaNXSession *nx, const
va_list args;
if (nx->error) g_free(nx->error);
- va_start (args, fmt);
- nx->error = g_strdup_vprintf (fmt, args);
- va_end (args);
+ va_start(args, fmt);
+ nx->error = g_strdup_vprintf(fmt, args);
+ va_end(args);
}
gboolean remmina_nx_session_has_error(RemminaNXSession *nx)
@@ -283,7 +283,7 @@ static gboolean remmina_nx_session_get_response(RemminaNXSession *nx)
return FALSE;
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- buffer = buffer_new();
+ buffer = buffer_new();
len = channel_read_buffer(nx->channel, buffer, len, is_stderr);
G_GNUC_END_IGNORE_DEPRECATIONS
if (len <= 0) {
@@ -292,7 +292,7 @@ static gboolean remmina_nx_session_get_response(RemminaNXSession *nx)
}
if (len > 0) {
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- g_string_append_len(nx->response, (const gchar*) buffer_get(buffer), len);
+ g_string_append_len(nx->response, (const gchar*)buffer_get(buffer), len);
G_GNUC_END_IGNORE_DEPRECATIONS
}
@@ -310,7 +310,7 @@ static void remmina_nx_session_parse_session_list_line(RemminaNXSession *nx, con
gint i;
GtkTreeIter iter;
- p1 = (char*) line;
+ p1 = (char*)line;
while (*p1 == ' ')
p1++;
if (*p1 == '\0')
@@ -318,7 +318,7 @@ static void remmina_nx_session_parse_session_list_line(RemminaNXSession *nx, con
gtk_list_store_append(nx->session_list, &iter);
- p1 = (char*) line;
+ p1 = (char*)line;
for (i = 0; i < 7; i++) {
p2 = strchr(p1, ' ');
if (!p2)
@@ -523,18 +523,18 @@ static void remmina_nx_session_send_command(RemminaNXSession *nx, const gchar *c
va_list args;
gchar *cmd;
- va_start (args, cmdfmt);
- cmd = g_strdup_vprintf (cmdfmt, args);
- ssh_channel_write (nx->channel, cmd, strlen (cmd));
+ va_start(args, cmdfmt);
+ cmd = g_strdup_vprintf(cmdfmt, args);
+ ssh_channel_write(nx->channel, cmd, strlen(cmd));
g_free(cmd);
- ssh_set_fd_towrite (nx->session);
- ssh_channel_write (nx->channel, "\n", 1);
+ ssh_set_fd_towrite(nx->session);
+ ssh_channel_write(nx->channel, "\n", 1);
va_end(args);
}
gboolean remmina_nx_session_open(RemminaNXSession *nx, const gchar *server, guint port, const gchar *private_key_file,
- RemminaNXPassphraseCallback passphrase_func, gpointer userdata)
+ RemminaNXPassphraseCallback passphrase_func, gpointer userdata)
{
TRACE_CALL("__func__");
gint ret;
@@ -644,9 +644,9 @@ void remmina_nx_session_add_parameter(RemminaNXSession *nx, const gchar *name, c
va_list args;
gchar *value;
- va_start (args, valuefmt);
- value = g_strdup_vprintf (valuefmt, args);
- g_hash_table_insert(nx->session_parameters, g_strdup (name), value);
+ va_start(args, valuefmt);
+ value = g_strdup_vprintf(valuefmt, args);
+ g_hash_table_insert(nx->session_parameters, g_strdup(name), value);
va_end(args);
}
@@ -659,7 +659,7 @@ static gboolean remmina_nx_session_send_session_command(RemminaNXSession *nx, co
cmd = g_string_new(cmd_type);
g_hash_table_iter_init(&iter, nx->session_parameters);
- while (g_hash_table_iter_next(&iter, (gpointer*) &key, (gpointer*) &value)) {
+ while (g_hash_table_iter_next(&iter, (gpointer*)&key, (gpointer*)&value)) {
g_string_append_printf(cmd, " --%s=\"%s\"", key, value);
}
@@ -678,7 +678,7 @@ gboolean remmina_nx_session_list(RemminaNXSession *nx)
if (nx->session_list == NULL) {
nx->session_list = gtk_list_store_new(REMMINA_NX_SESSION_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_STRING);
+ G_TYPE_STRING, G_TYPE_STRING);
} else {
gtk_list_store_clear(nx->session_list);
}
@@ -780,7 +780,7 @@ gboolean remmina_nx_session_terminate(RemminaNXSession *nx)
static gpointer remmina_nx_session_tunnel_main_thread(gpointer data)
{
TRACE_CALL("__func__");
- RemminaNXSession *nx = (RemminaNXSession*) data;
+ RemminaNXSession *nx = (RemminaNXSession*)data;
gchar *ptr;
ssize_t len = 0, lenw = 0;
fd_set set;
@@ -834,7 +834,7 @@ static gpointer remmina_nx_session_tunnel_main_thread(gpointer data)
for (ptr = buffer, lenw = 0; len > 0; len -= lenw, ptr += lenw) {
ssh_set_fd_towrite(nx->session);
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- lenw = channel_write(channels[0], (char*) ptr, len);
+ lenw = channel_write(channels[0], (char*)ptr, len);
G_GNUC_END_IGNORE_DEPRECATIONS
if (lenw <= 0) {
nx->running = FALSE;
@@ -861,10 +861,10 @@ static gpointer remmina_nx_session_tunnel_main_thread(gpointer data)
/* Clean up the stderr buffer in case FreeNX send something there */
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
len = channel_read_nonblocking(channels_out[0], buffer, sizeof(buffer), 1);
- if (len == SSH_ERROR || len == SSH_EOF) {
- nx->running = FALSE;
- break;
- }
+ if (len == SSH_ERROR || len == SSH_EOF) {
+ nx->running = FALSE;
+ break;
+ }
G_GNUC_END_IGNORE_DEPRECATIONS
}
}
@@ -923,7 +923,7 @@ gboolean remmina_nx_session_tunnel_open(RemminaNXSession *nx)
sin.sin_port = htons(port);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
- if (bind(sock, (struct sockaddr *) &sin, sizeof(sin))) {
+ if (bind(sock, (struct sockaddr *)&sin, sizeof(sin))) {
remmina_nx_session_set_application_error(nx, "Failed to bind on local port.");
close(sock);
return FALSE;
@@ -952,12 +952,12 @@ remmina_nx_session_get_proxy_option(RemminaNXSession *nx)
TRACE_CALL("__func__");
if (nx->encryption) {
return g_strdup_printf("nx,session=%s,cookie=%s,id=%s,shmem=1,shpix=1,connect=127.0.0.1:%i",
- (gchar*) g_hash_table_lookup(nx->session_parameters, "session"), nx->proxy_cookie,
- nx->session_id, (nx->localport ? nx->localport : nx->session_display));
+ (gchar*)g_hash_table_lookup(nx->session_parameters, "session"), nx->proxy_cookie,
+ nx->session_id, (nx->localport ? nx->localport : nx->session_display));
} else {
return g_strdup_printf("nx,session=%s,cookie=%s,id=%s,shmem=1,shpix=1,connect=%s:%i",
- (gchar*) g_hash_table_lookup(nx->session_parameters, "session"), nx->proxy_cookie,
- nx->session_id, nx->server, nx->session_display);
+ (gchar*)g_hash_table_lookup(nx->session_parameters, "session"), nx->proxy_cookie,
+ nx->session_id, nx->server, nx->session_display);
}
}
@@ -995,7 +995,7 @@ gboolean remmina_nx_session_invoke_proxy(RemminaNXSession *nx, gint display, GCh
argv[argc++] = NULL;
ret = g_spawn_async(NULL, argv, envp, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &nx->proxy_pid,
- &error);
+ &error);
g_strfreev(envp);
for (i = 0; i < argc; i++)
g_free(argv[i]);
diff --git a/remmina-plugins/nx/nx_session.h b/remmina-plugins/nx/nx_session.h
index bf48e14e3..0d9d3b9e5 100644
--- a/remmina-plugins/nx/nx_session.h
+++ b/remmina-plugins/nx/nx_session.h
@@ -37,8 +37,7 @@
G_BEGIN_DECLS
-enum
-{
+enum {
REMMINA_NX_SESSION_COLUMN_DISPLAY,
REMMINA_NX_SESSION_COLUMN_TYPE,
REMMINA_NX_SESSION_COLUMN_ID,
@@ -69,7 +68,7 @@ void remmina_nx_session_set_localport(RemminaNXSession *nx, gint localport);
void remmina_nx_session_set_log_callback(RemminaNXSession *nx, RemminaNXLogCallback log_callback);
gboolean remmina_nx_session_open(RemminaNXSession *nx, const gchar *server, guint port, const gchar *private_key_file,
- RemminaNXPassphraseCallback passphrase_func, gpointer userdata);
+ RemminaNXPassphraseCallback passphrase_func, gpointer userdata);
gboolean remmina_nx_session_login(RemminaNXSession *nx, const gchar *username, const gchar *password);
diff --git a/remmina-plugins/nx/nx_session_manager.c b/remmina-plugins/nx/nx_session_manager.c
index 20ac95883..5d07b16bd 100644
--- a/remmina-plugins/nx/nx_session_manager.c
+++ b/remmina-plugins/nx/nx_session_manager.c
@@ -44,28 +44,24 @@ static void remmina_nx_session_manager_set_sensitive(RemminaProtocolWidget *gp,
TRACE_CALL("__func__");
RemminaPluginNxData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->attach_session)
- {
+ if (gpdata->attach_session) {
gtk_dialog_set_response_sensitive(GTK_DIALOG(gpdata->manager_dialog), REMMINA_NX_EVENT_TERMINATE, sensitive);
gtk_dialog_set_response_sensitive(GTK_DIALOG(gpdata->manager_dialog), REMMINA_NX_EVENT_ATTACH, sensitive);
- }
- else
- {
+ }else {
gtk_dialog_set_response_sensitive(GTK_DIALOG(gpdata->manager_dialog), REMMINA_NX_EVENT_TERMINATE, sensitive);
gtk_dialog_set_response_sensitive(GTK_DIALOG(gpdata->manager_dialog), REMMINA_NX_EVENT_RESTORE, sensitive);
}
}
static gboolean remmina_nx_session_manager_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path,
- gboolean path_currently_selected, gpointer user_data)
+ gboolean path_currently_selected, gpointer user_data)
{
TRACE_CALL("__func__");
- RemminaProtocolWidget *gp = (RemminaProtocolWidget*) user_data;
+ RemminaProtocolWidget *gp = (RemminaProtocolWidget*)user_data;
RemminaPluginNxData *gpdata = GET_PLUGIN_DATA(gp);
gpdata->manager_selected = FALSE;
- if (path_currently_selected)
- {
+ if (path_currently_selected) {
remmina_nx_session_manager_set_sensitive(gp, FALSE);
return TRUE;
}
@@ -80,10 +76,9 @@ static gboolean remmina_nx_session_manager_selection_func(GtkTreeSelection *sele
static void remmina_nx_session_manager_send_signal(RemminaPluginNxData *gpdata, gint event_type)
{
TRACE_CALL("__func__");
- guchar dummy = (guchar) event_type;
+ guchar dummy = (guchar)event_type;
/* Signal the NX thread to resume execution */
- if (write(gpdata->event_pipe[1], &dummy, 1))
- {
+ if (write(gpdata->event_pipe[1], &dummy, 1)) {
}
}
@@ -94,25 +89,19 @@ static void remmina_nx_session_manager_on_response(GtkWidget *dialog, gint respo
gint event_type;
remmina_nx_session_manager_set_sensitive(gp, FALSE);
- if (response_id <= 0)
- {
+ if (response_id <= 0) {
event_type = REMMINA_NX_EVENT_CANCEL;
- }
- else
- {
+ }else {
event_type = response_id;
}
- if (response_id == REMMINA_NX_EVENT_TERMINATE && gpdata->manager_selected)
- {
+ if (response_id == REMMINA_NX_EVENT_TERMINATE && gpdata->manager_selected) {
remmina_nx_session_iter_set(gpdata->nx, &gpdata->iter, REMMINA_NX_SESSION_COLUMN_STATUS, _("Terminating"));
}
- if (response_id != REMMINA_NX_EVENT_TERMINATE)
- {
+ if (response_id != REMMINA_NX_EVENT_TERMINATE) {
gtk_widget_destroy(dialog);
gpdata->manager_dialog = NULL;
}
- if (response_id != REMMINA_NX_EVENT_TERMINATE && response_id != REMMINA_NX_EVENT_CANCEL)
- {
+ if (response_id != REMMINA_NX_EVENT_TERMINATE && response_id != REMMINA_NX_EVENT_CANCEL) {
remmina_plugin_nx_service->protocol_plugin_init_show(gp);
}
remmina_nx_session_manager_send_signal(gpdata, event_type);
@@ -127,9 +116,8 @@ void remmina_nx_session_manager_on_row_activated(GtkTreeView *tree, GtkTreePath
remmina_plugin_nx_service->log_printf("[NX] Default response_id %d\n",
gpdata->default_response);
- if (gpdata->default_response >= 0)
- {
- gtk_dialog_response(GTK_DIALOG(gpdata->manager_dialog), gpdata->default_response);
+ if (gpdata->default_response >= 0) {
+ gtk_dialog_response(GTK_DIALOG(gpdata->manager_dialog), gpdata->default_response);
}
}
@@ -148,22 +136,18 @@ static gboolean remmina_nx_session_manager_main(RemminaProtocolWidget *gp)
remminafile = remmina_plugin_nx_service->protocol_plugin_get_file(gp);
gpdata->default_response = -1;
- if (!gpdata->manager_started)
- {
+ if (!gpdata->manager_started) {
remmina_plugin_nx_service->protocol_plugin_init_hide(gp);
dialog = gtk_dialog_new();
s = g_strdup_printf(_("NX Sessions on %s"), remmina_plugin_nx_service->file_get_string(remminafile, "server"));
gtk_window_set_title(GTK_WINDOW(dialog), s);
g_free(s);
- if (gpdata->attach_session)
- {
+ if (gpdata->attach_session) {
gtk_dialog_add_button(GTK_DIALOG(dialog), _("Attach"), REMMINA_NX_EVENT_ATTACH);
/* Set default response id for attach */
gpdata->default_response = REMMINA_NX_EVENT_ATTACH;
- }
- else
- {
+ }else {
gtk_dialog_add_button(GTK_DIALOG(dialog), _("Restore"), REMMINA_NX_EVENT_RESTORE);
gtk_dialog_add_button(GTK_DIALOG(dialog), _("Start"), REMMINA_NX_EVENT_START);
/* Set default response id for restore */
@@ -197,53 +181,51 @@ static gboolean remmina_nx_session_manager_main(RemminaProtocolWidget *gp)
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Type"), renderer, "text", REMMINA_NX_SESSION_COLUMN_TYPE,
- NULL);
+ NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_column_set_sort_column_id(column, REMMINA_NX_SESSION_COLUMN_TYPE);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Display"), renderer, "text",
- REMMINA_NX_SESSION_COLUMN_DISPLAY, NULL);
+ REMMINA_NX_SESSION_COLUMN_DISPLAY, NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_column_set_sort_column_id(column, REMMINA_NX_SESSION_COLUMN_DISPLAY);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Status"), renderer, "text",
- REMMINA_NX_SESSION_COLUMN_STATUS, NULL);
+ REMMINA_NX_SESSION_COLUMN_STATUS, NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_column_set_sort_column_id(column, REMMINA_NX_SESSION_COLUMN_STATUS);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Name"), renderer, "text", REMMINA_NX_SESSION_COLUMN_NAME,
- NULL);
+ NULL);
gtk_tree_view_column_set_resizable(column, TRUE);
gtk_tree_view_column_set_sort_column_id(column, REMMINA_NX_SESSION_COLUMN_NAME);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
gtk_tree_selection_set_select_function(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),
- remmina_nx_session_manager_selection_func, gp, NULL);
+ remmina_nx_session_manager_selection_func, gp, NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(remmina_nx_session_manager_on_response), gp);
gpdata->manager_started = TRUE;
}
gpdata->manager_selected = FALSE;
- if (gpdata->manager_dialog)
- {
+ if (gpdata->manager_dialog) {
remmina_nx_session_manager_set_sensitive(gp, FALSE);
gtk_widget_show(gpdata->manager_dialog);
}
- if (remmina_nx_session_has_error(gpdata->nx))
- {
+ if (remmina_nx_session_has_error(gpdata->nx)) {
dialog = gtk_message_dialog_new((gpdata->manager_dialog ? GTK_WINDOW(gpdata->manager_dialog) : NULL),
- GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s",
- remmina_nx_session_get_error (gpdata->nx));
- remmina_nx_session_clear_error (gpdata->nx);
- gtk_dialog_run (GTK_DIALOG(dialog));
- gtk_widget_destroy (dialog);
- remmina_nx_session_manager_send_signal (gpdata, 0);
+ GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s",
+ remmina_nx_session_get_error(gpdata->nx));
+ remmina_nx_session_clear_error(gpdata->nx);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ remmina_nx_session_manager_send_signal(gpdata, 0);
}
gpdata->session_manager_start_handler = 0;
@@ -255,9 +237,8 @@ void remmina_nx_session_manager_start(RemminaProtocolWidget *gp)
TRACE_CALL("__func__");
RemminaPluginNxData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->session_manager_start_handler == 0)
- {
- gpdata->session_manager_start_handler = IDLE_ADD((GSourceFunc) remmina_nx_session_manager_main, gp);
+ if (gpdata->session_manager_start_handler == 0) {
+ gpdata->session_manager_start_handler = IDLE_ADD((GSourceFunc)remmina_nx_session_manager_main, gp);
}
}
diff --git a/remmina-plugins/rdp/rdp_channels.c b/remmina-plugins/rdp/rdp_channels.c
index f012433ca..a07920f0b 100644
--- a/remmina-plugins/rdp/rdp_channels.c
+++ b/remmina-plugins/rdp/rdp_channels.c
@@ -43,44 +43,31 @@
void remmina_rdp_OnChannelConnectedEventHandler(rdpContext* context, ChannelConnectedEventArgs* e)
{
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
- if (g_strcmp0(e->name, RDPEI_DVC_CHANNEL_NAME) == 0)
- {
+ if (g_strcmp0(e->name, RDPEI_DVC_CHANNEL_NAME) == 0) {
g_print("Unimplemented: channel %s connected but we can't use it\n", e->name);
// xfc->rdpei = (RdpeiClientContext*) e->pInterface;
- }
- else if (g_strcmp0(e->name, TSMF_DVC_CHANNEL_NAME) == 0)
- {
+ }else if (g_strcmp0(e->name, TSMF_DVC_CHANNEL_NAME) == 0) {
g_print("Unimplemented: channel %s connected but we can't use it\n", e->name);
// xf_tsmf_init(xfc, (TsmfClientContext*) e->pInterface);
- }
- else if (g_strcmp0(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0)
- {
+ }else if (g_strcmp0(e->name, RDPGFX_DVC_CHANNEL_NAME) == 0) {
g_print("Unimplemented: channel %s connected but we can't use it\n", e->name);
/*
- if (settings->SoftwareGdi)
- gdi_graphics_pipeline_init(context->gdi, (RdpgfxClientContext*) e->pInterface);
- else
- xf_graphics_pipeline_init(xfc, (RdpgfxClientContext*) e->pInterface);
- */
- }
- else if (g_strcmp0(e->name, RAIL_SVC_CHANNEL_NAME) == 0)
- {
+ if (settings->SoftwareGdi)
+ gdi_graphics_pipeline_init(context->gdi, (RdpgfxClientContext*) e->pInterface);
+ else
+ xf_graphics_pipeline_init(xfc, (RdpgfxClientContext*) e->pInterface);
+ */
+ }else if (g_strcmp0(e->name, RAIL_SVC_CHANNEL_NAME) == 0) {
g_print("Unimplemented: channel %s connected but we can't use it\n", e->name);
// xf_rail_init(xfc, (RailClientContext*) e->pInterface);
- }
- else if (g_strcmp0(e->name, CLIPRDR_SVC_CHANNEL_NAME) == 0)
- {
- remmina_rdp_cliprdr_init( rfi, (CliprdrClientContext*) e->pInterface);
- }
- else if (g_strcmp0(e->name, ENCOMSP_SVC_CHANNEL_NAME) == 0)
- {
+ }else if (g_strcmp0(e->name, CLIPRDR_SVC_CHANNEL_NAME) == 0) {
+ remmina_rdp_cliprdr_init( rfi, (CliprdrClientContext*)e->pInterface);
+ }else if (g_strcmp0(e->name, ENCOMSP_SVC_CHANNEL_NAME) == 0) {
g_print("Unimplemented: channel %s connected but we can't use it\n", e->name);
// xf_encomsp_init(xfc, (EncomspClientContext*) e->pInterface);
- }
- else if (g_strcmp0(e->name, DISP_DVC_CHANNEL_NAME) == 0)
- {
+ }else if (g_strcmp0(e->name, DISP_DVC_CHANNEL_NAME) == 0) {
// "disp" channel connected, save its context pointer
rfi->dispcontext = (DispClientContext*)e->pInterface;
// Notify remmina_connection_window to unlock dynres capability
diff --git a/remmina-plugins/rdp/rdp_cliprdr.c b/remmina-plugins/rdp/rdp_cliprdr.c
index 71f2674ca..7f6cc41c2 100644
--- a/remmina-plugins/rdp/rdp_cliprdr.c
+++ b/remmina-plugins/rdp/rdp_cliprdr.c
@@ -51,28 +51,22 @@ UINT32 remmina_rdp_cliprdr_get_format_from_gdkatom(GdkAtom atom)
UINT32 rc;
gchar* name = gdk_atom_name(atom);
rc = 0;
- if (g_strcmp0("UTF8_STRING", name) == 0 || g_strcmp0("text/plain;charset=utf-8", name) == 0)
- {
+ if (g_strcmp0("UTF8_STRING", name) == 0 || g_strcmp0("text/plain;charset=utf-8", name) == 0) {
rc = CF_UNICODETEXT;
}
- if (g_strcmp0("TEXT", name) == 0 || g_strcmp0("text/plain", name) == 0)
- {
+ if (g_strcmp0("TEXT", name) == 0 || g_strcmp0("text/plain", name) == 0) {
rc = CF_TEXT;
}
- if (g_strcmp0("text/html", name) == 0)
- {
+ if (g_strcmp0("text/html", name) == 0) {
rc = CB_FORMAT_HTML;
}
- if (g_strcmp0("image/png", name) == 0)
- {
+ if (g_strcmp0("image/png", name) == 0) {
rc = CB_FORMAT_PNG;
}
- if (g_strcmp0("image/jpeg", name) == 0)
- {
+ if (g_strcmp0("image/jpeg", name) == 0) {
rc = CB_FORMAT_JPEG;
}
- if (g_strcmp0("image/bmp", name) == 0)
- {
+ if (g_strcmp0("image/bmp", name) == 0) {
rc = CF_DIB;
}
g_free(name);
@@ -84,14 +78,12 @@ void remmina_rdp_cliprdr_get_target_types(UINT32** formats, UINT16* size, GdkAto
TRACE_CALL("__func__");
int i;
*size = 1;
- *formats = (UINT32*) malloc(sizeof(UINT32) * (count+1));
+ *formats = (UINT32*)malloc(sizeof(UINT32) * (count + 1));
*formats[0] = 0;
- for (i = 0; i < count; i++)
- {
+ for (i = 0; i < count; i++) {
UINT32 format = remmina_rdp_cliprdr_get_format_from_gdkatom(types[i]);
- if (format != 0)
- {
+ if (format != 0) {
(*formats)[*size] = format;
(*size)++;
}
@@ -111,21 +103,17 @@ static UINT8* lf2crlf(UINT8* data, int* size)
int out_size;
out_size = (*size) * 2 + 1;
- outbuf = (UINT8*) malloc(out_size);
+ outbuf = (UINT8*)malloc(out_size);
out = outbuf;
in = data;
in_end = data + (*size);
- while (in < in_end)
- {
+ while (in < in_end) {
c = *in++;
- if (c == '\n')
- {
+ if (c == '\n') {
*out++ = '\r';
*out++ = '\n';
- }
- else
- {
+ }else {
*out++ = c;
}
}
@@ -148,8 +136,7 @@ static void crlf2lf(UINT8* data, size_t* size)
in = data;
in_end = data + (*size);
- while (in < in_end)
- {
+ while (in < in_end) {
c = *in++;
if (c != '\r')
*out++ = c;
@@ -202,7 +189,7 @@ static void remmina_rdp_cliprdr_send_client_capabilities(rfClipboard* clipboard)
CLIPRDR_GENERAL_CAPABILITY_SET generalCapabilitySet;
capabilities.cCapabilitiesSets = 1;
- capabilities.capabilitySets = (CLIPRDR_CAPABILITY_SET*) &(generalCapabilitySet);
+ capabilities.capabilitySets = (CLIPRDR_CAPABILITY_SET*)&(generalCapabilitySet);
generalCapabilitySet.capabilitySetType = CB_CAPSTYPE_GENERAL;
generalCapabilitySet.capabilitySetLength = 12;
@@ -252,43 +239,29 @@ static UINT remmina_rdp_cliprdr_server_format_list(CliprdrClientContext* context
clipboard = (rfClipboard*)context->custom;
gp = clipboard->rfi->protocol_widget;
- GtkTargetList* list = gtk_target_list_new (NULL, 0);
+ GtkTargetList* list = gtk_target_list_new(NULL, 0);
- for (i = 0; i < formatList->numFormats; i++)
- {
+ for (i = 0; i < formatList->numFormats; i++) {
format = &formatList->formats[i];
- if (format->formatId == CF_UNICODETEXT)
- {
+ if (format->formatId == CF_UNICODETEXT) {
GdkAtom atom = gdk_atom_intern("UTF8_STRING", TRUE);
gtk_target_list_add(list, atom, 0, CF_UNICODETEXT);
- }
- else if (format->formatId == CF_TEXT)
- {
+ }else if (format->formatId == CF_TEXT) {
GdkAtom atom = gdk_atom_intern("TEXT", TRUE);
gtk_target_list_add(list, atom, 0, CF_TEXT);
- }
- else if (format->formatId == CF_DIB)
- {
+ }else if (format->formatId == CF_DIB) {
GdkAtom atom = gdk_atom_intern("image/bmp", TRUE);
gtk_target_list_add(list, atom, 0, CF_DIB);
- }
- else if (format->formatId == CF_DIBV5)
- {
+ }else if (format->formatId == CF_DIBV5) {
GdkAtom atom = gdk_atom_intern("image/bmp", TRUE);
gtk_target_list_add(list, atom, 0, CF_DIBV5);
- }
- else if (format->formatId == CB_FORMAT_JPEG)
- {
+ }else if (format->formatId == CB_FORMAT_JPEG) {
GdkAtom atom = gdk_atom_intern("image/jpeg", TRUE);
gtk_target_list_add(list, atom, 0, CB_FORMAT_JPEG);
- }
- else if (format->formatId == CB_FORMAT_PNG)
- {
+ }else if (format->formatId == CB_FORMAT_PNG) {
GdkAtom atom = gdk_atom_intern("image/png", TRUE);
gtk_target_list_add(list, atom, 0, CB_FORMAT_PNG);
- }
- else if (format->formatId == CB_FORMAT_HTML)
- {
+ }else if (format->formatId == CB_FORMAT_HTML) {
GdkAtom atom = gdk_atom_intern("text/html", TRUE);
gtk_target_list_add(list, atom, 0, CB_FORMAT_HTML);
}
@@ -367,92 +340,88 @@ static UINT remmina_rdp_cliprdr_server_format_data_response(CliprdrClientContext
// by freerdp and freed after returning from this callback function.
// So we must make a copy if we need to preserve it
- if (size > 0)
- {
- switch (rfi->clipboard.format)
+ if (size > 0) {
+ switch (rfi->clipboard.format) {
+ case CF_UNICODETEXT:
{
- case CF_UNICODETEXT:
- {
- size = ConvertFromUnicode(CP_UTF8, 0, (WCHAR*)data, size / 2, (CHAR**)&output, 0, NULL, NULL);
+ size = ConvertFromUnicode(CP_UTF8, 0, (WCHAR*)data, size / 2, (CHAR**)&output, 0, NULL, NULL);
+ crlf2lf(output, &size);
+ break;
+ }
+
+ case CF_TEXT:
+ case CB_FORMAT_HTML:
+ {
+ output = (gpointer)calloc(1, size + 1);
+ if (output) {
+ memcpy(output, data, size);
crlf2lf(output, &size);
- break;
}
+ break;
+ }
- case CF_TEXT:
- case CB_FORMAT_HTML:
- {
- output = (gpointer)calloc(1, size + 1);
- if (output) {
- memcpy(output, data, size);
- crlf2lf(output, &size);
- }
- break;
+ case CF_DIBV5:
+ case CF_DIB:
+ {
+ wStream* s;
+ UINT32 offset;
+ GError *perr;
+ BITMAPINFOHEADER* pbi;
+ BITMAPV5HEADER* pbi5;
+
+ pbi = (BITMAPINFOHEADER*)data;
+
+ // offset calculation inspired by http://downloads.poolelan.com/MSDN/MSDNLibrary6/Disk1/Samples/VC/OS/WindowsXP/GetImage/BitmapUtil.cpp
+ offset = 14 + pbi->biSize;
+ if (pbi->biClrUsed != 0)
+ offset += sizeof(RGBQUAD) * pbi->biClrUsed;
+ else if (pbi->biBitCount <= 8)
+ offset += sizeof(RGBQUAD) * (1 << pbi->biBitCount);
+ if (pbi->biSize == sizeof(BITMAPINFOHEADER)) {
+ if (pbi->biCompression == 3) // BI_BITFIELDS is 3
+ offset += 12;
+ } else if (pbi->biSize >= sizeof(BITMAPV5HEADER)) {
+ pbi5 = (BITMAPV5HEADER*)pbi;
+ if (pbi5->bV5ProfileData <= offset)
+ offset += pbi5->bV5ProfileSize;
}
-
- case CF_DIBV5:
- case CF_DIB:
- {
- wStream* s;
- UINT32 offset;
- GError *perr;
- BITMAPINFOHEADER* pbi;
- BITMAPV5HEADER* pbi5;
-
- pbi = (BITMAPINFOHEADER*)data;
-
- // offset calculation inspired by http://downloads.poolelan.com/MSDN/MSDNLibrary6/Disk1/Samples/VC/OS/WindowsXP/GetImage/BitmapUtil.cpp
- offset = 14 + pbi->biSize;
- if (pbi->biClrUsed != 0)
- offset += sizeof(RGBQUAD) * pbi->biClrUsed;
- else if (pbi->biBitCount <= 8)
- offset += sizeof(RGBQUAD) * (1 << pbi->biBitCount);
- if (pbi->biSize == sizeof(BITMAPINFOHEADER)) {
- if (pbi->biCompression == 3) // BI_BITFIELDS is 3
- offset += 12;
- } else if (pbi->biSize >= sizeof(BITMAPV5HEADER)) {
- pbi5 = (BITMAPV5HEADER*)pbi;
- if (pbi5->bV5ProfileData <= offset)
- offset += pbi5->bV5ProfileSize;
- }
- s = Stream_New(NULL, 14 + size);
- Stream_Write_UINT8(s, 'B');
- Stream_Write_UINT8(s, 'M');
- Stream_Write_UINT32(s, 14 + size);
- Stream_Write_UINT32(s, 0);
- Stream_Write_UINT32(s, offset);
- Stream_Write(s, data, size);
-
- data = Stream_Buffer(s);
- size = Stream_Length(s);
-
- pixbuf = gdk_pixbuf_loader_new();
- perr = NULL;
- if ( !gdk_pixbuf_loader_write(pixbuf, data, size, &perr) ) {
- remmina_plugin_service->log_printf("[RDP] rdp_cliprdr: gdk_pixbuf_loader_write() returned error %s\n", perr->message);
- }
- else
- {
- if ( !gdk_pixbuf_loader_close(pixbuf, &perr) ) {
- remmina_plugin_service->log_printf("[RDP] rdp_cliprdr: gdk_pixbuf_loader_close() returned error %s\n", perr->message);
- perr = NULL;
- }
- Stream_Free(s, TRUE);
- output = g_object_ref(gdk_pixbuf_loader_get_pixbuf(pixbuf));
+ s = Stream_New(NULL, 14 + size);
+ Stream_Write_UINT8(s, 'B');
+ Stream_Write_UINT8(s, 'M');
+ Stream_Write_UINT32(s, 14 + size);
+ Stream_Write_UINT32(s, 0);
+ Stream_Write_UINT32(s, offset);
+ Stream_Write(s, data, size);
+
+ data = Stream_Buffer(s);
+ size = Stream_Length(s);
+
+ pixbuf = gdk_pixbuf_loader_new();
+ perr = NULL;
+ if ( !gdk_pixbuf_loader_write(pixbuf, data, size, &perr) ) {
+ remmina_plugin_service->log_printf("[RDP] rdp_cliprdr: gdk_pixbuf_loader_write() returned error %s\n", perr->message);
+ }else {
+ if ( !gdk_pixbuf_loader_close(pixbuf, &perr) ) {
+ remmina_plugin_service->log_printf("[RDP] rdp_cliprdr: gdk_pixbuf_loader_close() returned error %s\n", perr->message);
+ perr = NULL;
}
- g_object_unref(pixbuf);
- break;
- }
-
- case CB_FORMAT_PNG:
- case CB_FORMAT_JPEG:
- {
- pixbuf = gdk_pixbuf_loader_new();
- gdk_pixbuf_loader_write(pixbuf, data, size, NULL);
+ Stream_Free(s, TRUE);
output = g_object_ref(gdk_pixbuf_loader_get_pixbuf(pixbuf));
- gdk_pixbuf_loader_close(pixbuf, NULL);
- g_object_unref(pixbuf);
- break;
}
+ g_object_unref(pixbuf);
+ break;
+ }
+
+ case CB_FORMAT_PNG:
+ case CB_FORMAT_JPEG:
+ {
+ pixbuf = gdk_pixbuf_loader_new();
+ gdk_pixbuf_loader_write(pixbuf, data, size, NULL);
+ output = g_object_ref(gdk_pixbuf_loader_get_pixbuf(pixbuf));
+ gdk_pixbuf_loader_close(pixbuf, NULL);
+ g_object_unref(pixbuf);
+ break;
+ }
}
}
@@ -460,9 +429,7 @@ static UINT remmina_rdp_cliprdr_server_format_data_response(CliprdrClientContext
pthread_cond_signal(&clipboard->transfer_clip_cond);
if ( clipboard->srv_clip_data_wait == SCDW_BUSY_WAIT ) {
clipboard->srv_data = output;
- }
- else
- {
+ }else {
// Clipboard data arrived from server when we are not busywaiting.
// Just put it on the local clipboard
@@ -526,19 +493,15 @@ void remmina_rdp_cliprdr_request_data(GtkClipboard *gtkClipboard, GtkSelectionDa
gettimeofday(&tv, NULL);
to.tv_sec = tv.tv_sec + CLIPBOARD_TRANSFER_WAIT_TIME;
to.tv_nsec = tv.tv_usec * 1000;
- rc = pthread_cond_timedwait(&clipboard->transfer_clip_cond,&clipboard->transfer_clip_mutex, &to);
+ rc = pthread_cond_timedwait(&clipboard->transfer_clip_cond, &clipboard->transfer_clip_mutex, &to);
if ( rc == 0 ) {
/* Data has arrived without timeout */
- if (clipboard->srv_data != NULL)
- {
- if (info == CB_FORMAT_PNG || info == CF_DIB || info == CF_DIBV5 || info == CB_FORMAT_JPEG)
- {
+ if (clipboard->srv_data != NULL) {
+ if (info == CB_FORMAT_PNG || info == CF_DIB || info == CF_DIBV5 || info == CB_FORMAT_JPEG) {
gtk_selection_data_set_pixbuf(selection_data, clipboard->srv_data);
g_object_unref(clipboard->srv_data);
- }
- else
- {
+ }else {
gtk_selection_data_set_text(selection_data, clipboard->srv_data, -1);
free(clipboard->srv_data);
}
@@ -549,9 +512,8 @@ void remmina_rdp_cliprdr_request_data(GtkClipboard *gtkClipboard, GtkSelectionDa
if ( rc == ETIMEDOUT ) {
remmina_plugin_service->log_printf("[RDP] Clipboard data has not been transferred from the server in %d seconds. Try to paste later.\n",
CLIPBOARD_TRANSFER_WAIT_TIME);
- }
- else {
- remmina_plugin_service->log_printf("[RDP] internal error: pthread_cond_timedwait() returned %d\n",rc);
+ }else {
+ remmina_plugin_service->log_printf("[RDP] internal error: pthread_cond_timedwait() returned %d\n", rc);
clipboard->srv_clip_data_wait = SCDW_NONE;
}
}
@@ -595,12 +557,12 @@ CLIPRDR_FORMAT_LIST *remmina_rdp_cliprdr_get_client_format_list(RemminaProtocolW
if (result && loccount > 0) {
formats = (CLIPRDR_FORMAT*)malloc(loccount * sizeof(CLIPRDR_FORMAT));
srvcount = 0;
- for(i = 0 ; i < loccount ; i++) {
+ for (i = 0; i < loccount; i++) {
formatId = remmina_rdp_cliprdr_get_format_from_gdkatom(targets[i]);
if ( formatId != 0 ) {
formats[srvcount].formatId = formatId;
formats[srvcount].formatName = NULL;
- srvcount ++;
+ srvcount++;
}
}
if (srvcount > 0) {
@@ -625,13 +587,13 @@ CLIPRDR_FORMAT_LIST *remmina_rdp_cliprdr_get_client_format_list(RemminaProtocolW
retp->pFormatList.msgFlags = CB_RESPONSE_OK;
- return (CLIPRDR_FORMAT_LIST *)retp;
+ return (CLIPRDR_FORMAT_LIST*)retp;
}
static void remmina_rdp_cliprdr_mt_get_format_list(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui)
{
TRACE_CALL("__func__");
- ui->retptr = (void *)remmina_rdp_cliprdr_get_client_format_list(gp);
+ ui->retptr = (void*)remmina_rdp_cliprdr_get_client_format_list(gp);
}
@@ -650,83 +612,79 @@ void remmina_rdp_cliprdr_get_clipboard_data(RemminaProtocolWidget* gp, RemminaPl
clipboard = ui->clipboard.clipboard;
gtkClipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
- if (gtkClipboard)
- {
- switch (ui->clipboard.format)
+ if (gtkClipboard) {
+ switch (ui->clipboard.format) {
+ case CF_TEXT:
+ case CF_UNICODETEXT:
+ case CB_FORMAT_HTML:
{
- case CF_TEXT:
- case CF_UNICODETEXT:
- case CB_FORMAT_HTML:
- {
- inbuf = (UINT8*)gtk_clipboard_wait_for_text(gtkClipboard);
- break;
- }
+ inbuf = (UINT8*)gtk_clipboard_wait_for_text(gtkClipboard);
+ break;
+ }
- case CB_FORMAT_PNG:
- case CB_FORMAT_JPEG:
- case CF_DIB:
- case CF_DIBV5:
- {
- image = gtk_clipboard_wait_for_image(gtkClipboard);
- break;
- }
+ case CB_FORMAT_PNG:
+ case CB_FORMAT_JPEG:
+ case CF_DIB:
+ case CF_DIBV5:
+ {
+ image = gtk_clipboard_wait_for_image(gtkClipboard);
+ break;
+ }
}
}
/* No data received, send nothing */
- if (inbuf != NULL || image != NULL)
- {
- switch (ui->clipboard.format)
+ if (inbuf != NULL || image != NULL) {
+ switch (ui->clipboard.format) {
+ case CF_TEXT:
+ case CB_FORMAT_HTML:
{
- case CF_TEXT:
- case CB_FORMAT_HTML:
- {
- size = strlen((char*)inbuf);
- outbuf = lf2crlf(inbuf, &size);
- break;
- }
- case CF_UNICODETEXT:
- {
- size = strlen((char*)inbuf);
- inbuf = lf2crlf(inbuf, &size);
- size = (ConvertToUnicode(CP_UTF8, 0, (CHAR*)inbuf, -1, (WCHAR**)&outbuf, 0) ) * sizeof(WCHAR);
- g_free(inbuf);
- break;
- }
- case CB_FORMAT_PNG:
- {
- gchar* data;
- gsize buffersize;
- gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "png", NULL, NULL);
- outbuf = (UINT8*) malloc(buffersize);
- memcpy(outbuf, data, buffersize);
- size = buffersize;
- g_object_unref(image);
- break;
- }
- case CB_FORMAT_JPEG:
- {
- gchar* data;
- gsize buffersize;
- gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "jpeg", NULL, NULL);
- outbuf = (UINT8*) malloc(buffersize);
- memcpy(outbuf, data, buffersize);
- size = buffersize;
- g_object_unref(image);
- break;
- }
- case CF_DIB:
- case CF_DIBV5:
- {
- gchar* data;
- gsize buffersize;
- gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "bmp", NULL, NULL);
- size = buffersize - 14;
- outbuf = (UINT8*) malloc(size);
- memcpy(outbuf, data + 14, size);
- g_object_unref(image);
- break;
- }
+ size = strlen((char*)inbuf);
+ outbuf = lf2crlf(inbuf, &size);
+ break;
+ }
+ case CF_UNICODETEXT:
+ {
+ size = strlen((char*)inbuf);
+ inbuf = lf2crlf(inbuf, &size);
+ size = (ConvertToUnicode(CP_UTF8, 0, (CHAR*)inbuf, -1, (WCHAR**)&outbuf, 0) ) * sizeof(WCHAR);
+ g_free(inbuf);
+ break;
+ }
+ case CB_FORMAT_PNG:
+ {
+ gchar* data;
+ gsize buffersize;
+ gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "png", NULL, NULL);
+ outbuf = (UINT8*)malloc(buffersize);
+ memcpy(outbuf, data, buffersize);
+ size = buffersize;
+ g_object_unref(image);
+ break;
+ }
+ case CB_FORMAT_JPEG:
+ {
+ gchar* data;
+ gsize buffersize;
+ gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "jpeg", NULL, NULL);
+ outbuf = (UINT8*)malloc(buffersize);
+ memcpy(outbuf, data, buffersize);
+ size = buffersize;
+ g_object_unref(image);
+ break;
+ }
+ case CF_DIB:
+ case CF_DIBV5:
+ {
+ gchar* data;
+ gsize buffersize;
+ gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "bmp", NULL, NULL);
+ size = buffersize - 14;
+ outbuf = (UINT8*)malloc(size);
+ memcpy(outbuf, data + 14, size);
+ g_object_unref(image);
+ break;
+ }
}
}
@@ -756,8 +714,7 @@ void remmina_rdp_cliprdr_set_clipboard_content(RemminaProtocolWidget* gp, Remmin
if (ui->clipboard.format == CB_FORMAT_PNG || ui->clipboard.format == CF_DIB || ui->clipboard.format == CF_DIBV5 || ui->clipboard.format == CB_FORMAT_JPEG) {
gtk_clipboard_set_image( gtkClipboard, ui->clipboard.data );
g_object_unref(ui->clipboard.data);
- }
- else {
+ }else {
gtk_clipboard_set_text( gtkClipboard, ui->clipboard.data, -1 );
free(ui->clipboard.data);
}
@@ -776,11 +733,10 @@ void remmina_rdp_cliprdr_set_clipboard_data(RemminaProtocolWidget* gp, RemminaPl
clipboard = ui->clipboard.clipboard;
targets = gtk_target_table_new_from_list(ui->clipboard.targetlist, &n_targets);
gtkClipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
- if (gtkClipboard && targets)
- {
+ if (gtkClipboard && targets) {
gtk_clipboard_set_with_owner(gtkClipboard, targets, n_targets,
- (GtkClipboardGetFunc) remmina_rdp_cliprdr_request_data,
- (GtkClipboardClearFunc) remmina_rdp_cliprdr_empty_clipboard, G_OBJECT(gp));
+ (GtkClipboardGetFunc)remmina_rdp_cliprdr_request_data,
+ (GtkClipboardClearFunc)remmina_rdp_cliprdr_empty_clipboard, G_OBJECT(gp));
gtk_target_table_free(targets, n_targets);
}
}
@@ -803,28 +759,27 @@ static void remmina_rdp_cliprdr_detach_owner(RemminaProtocolWidget* gp, RemminaP
void remmina_rdp_event_process_clipboard(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui)
{
TRACE_CALL("__func__");
- switch (ui->clipboard.type)
- {
+ switch (ui->clipboard.type) {
- case REMMINA_RDP_UI_CLIPBOARD_FORMATLIST:
- remmina_rdp_cliprdr_mt_get_format_list(gp, ui);
- break;
+ case REMMINA_RDP_UI_CLIPBOARD_FORMATLIST:
+ remmina_rdp_cliprdr_mt_get_format_list(gp, ui);
+ break;
- case REMMINA_RDP_UI_CLIPBOARD_GET_DATA:
- remmina_rdp_cliprdr_get_clipboard_data(gp, ui);
- break;
+ case REMMINA_RDP_UI_CLIPBOARD_GET_DATA:
+ remmina_rdp_cliprdr_get_clipboard_data(gp, ui);
+ break;
- case REMMINA_RDP_UI_CLIPBOARD_SET_DATA:
- remmina_rdp_cliprdr_set_clipboard_data(gp, ui);
- break;
+ case REMMINA_RDP_UI_CLIPBOARD_SET_DATA:
+ remmina_rdp_cliprdr_set_clipboard_data(gp, ui);
+ break;
- case REMMINA_RDP_UI_CLIPBOARD_SET_CONTENT:
- remmina_rdp_cliprdr_set_clipboard_content(gp, ui);
- break;
+ case REMMINA_RDP_UI_CLIPBOARD_SET_CONTENT:
+ remmina_rdp_cliprdr_set_clipboard_content(gp, ui);
+ break;
- case REMMINA_RDP_UI_CLIPBOARD_DETACH_OWNER:
- remmina_rdp_cliprdr_detach_owner(gp, ui);
- break;
+ case REMMINA_RDP_UI_CLIPBOARD_DETACH_OWNER:
+ remmina_rdp_cliprdr_detach_owner(gp, ui);
+ break;
}
}
@@ -853,7 +808,7 @@ void remmina_rdp_cliprdr_init(rfContext* rfi, CliprdrClientContext* cliprdr)
clipboard->context = cliprdr;
pthread_mutex_init(&clipboard->transfer_clip_mutex, NULL);
- pthread_cond_init(&clipboard->transfer_clip_cond,NULL);
+ pthread_cond_init(&clipboard->transfer_clip_cond, NULL);
clipboard->srv_clip_data_wait = SCDW_NONE;
cliprdr->MonitorReady = remmina_rdp_cliprdr_monitor_ready;
diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c
index 9cd8c243d..d44ed4296 100644
--- a/remmina-plugins/rdp/rdp_event.c
+++ b/remmina-plugins/rdp/rdp_event.c
@@ -73,16 +73,13 @@ static void remmina_rdp_event_on_focus_in(GtkWidget* widget, GdkEventKey* event,
#endif
gdk_window_get_device_position(gdk_get_default_root_window(), keyboard, NULL, NULL, &state);
- if (state & GDK_LOCK_MASK)
- {
+ if (state & GDK_LOCK_MASK) {
toggle_keys_state |= KBD_SYNC_CAPS_LOCK;
}
- if (state & GDK_MOD2_MASK)
- {
+ if (state & GDK_MOD2_MASK) {
toggle_keys_state |= KBD_SYNC_NUM_LOCK;
}
- if (state & GDK_MOD5_MASK)
- {
+ if (state & GDK_MOD5_MASK) {
toggle_keys_state |= KBD_SYNC_SCROLL_LOCK;
}
@@ -101,13 +98,11 @@ void remmina_rdp_event_event_push(RemminaProtocolWidget* gp, const RemminaPlugin
if (!rfi || !rfi->connected || rfi->is_reconnecting)
return;
- if (rfi->event_queue)
- {
+ if (rfi->event_queue) {
event = g_memdup(e, sizeof(RemminaPluginRdpEvent));
g_async_queue_push(rfi->event_queue, event);
- if (write(rfi->event_pipe[1], "\0", 1))
- {
+ if (write(rfi->event_pipe[1], "\0", 1)) {
}
}
}
@@ -120,12 +115,11 @@ static void remmina_rdp_event_release_all_keys(RemminaProtocolWidget* gp)
int i;
/* Send all release key events for previously pressed keys */
- for (i = 0; i < rfi->pressed_keys->len; i++)
- {
+ for (i = 0; i < rfi->pressed_keys->len; i++) {
rdp_event = g_array_index(rfi->pressed_keys, RemminaPluginRdpEvent, i);
if ((rdp_event.type == REMMINA_RDP_EVENT_TYPE_SCANCODE ||
- rdp_event.type == REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE) &&
- rdp_event.key_event.up == False) {
+ rdp_event.type == REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE) &&
+ rdp_event.key_event.up == False) {
rdp_event.key_event.up = True;
remmina_rdp_event_event_push(gp, &rdp_event);
}
@@ -144,17 +138,15 @@ static void remmina_rdp_event_release_key(RemminaProtocolWidget* gp, RemminaPlug
rdp_event_2.type = REMMINA_RDP_EVENT_TYPE_SCANCODE;
if ((rdp_event.type == REMMINA_RDP_EVENT_TYPE_SCANCODE ||
- rdp_event.type == REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE) &&
- rdp_event.key_event.up ) {
+ rdp_event.type == REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE) &&
+ rdp_event.key_event.up ) {
/* Unregister the keycode only */
- for (i = 0; i < rfi->pressed_keys->len; i++)
- {
+ for (i = 0; i < rfi->pressed_keys->len; i++) {
rdp_event_2 = g_array_index(rfi->pressed_keys, RemminaPluginRdpEvent, i);
if (rdp_event_2.key_event.key_code == rdp_event.key_event.key_code &&
- rdp_event_2.key_event.unicode_code == rdp_event.key_event.unicode_code &&
- rdp_event_2.key_event.extended == rdp_event.key_event.extended)
- {
+ rdp_event_2.key_event.unicode_code == rdp_event.key_event.unicode_code &&
+ rdp_event_2.key_event.extended == rdp_event.key_event.extended) {
g_array_remove_index_fast(rfi->pressed_keys, i);
break;
}
@@ -194,8 +186,7 @@ static void remmina_rdp_event_scale_area(RemminaProtocolWidget* gp, gint* x, gin
if ((width == 0) || (height == 0))
return;
- if ((rfi->scale_width == width) && (rfi->scale_height == height))
- {
+ if ((rfi->scale_width == width) && (rfi->scale_height == height)) {
/* Same size, just copy the pixels */
*x = MIN(MAX(0, *x), width - 1);
*y = MIN(MAX(0, *y), height - 1);
@@ -207,10 +198,10 @@ static void remmina_rdp_event_scale_area(RemminaProtocolWidget* gp, gint* x, gin
/* We have to extend the scaled region one scaled pixel, to avoid gaps */
sx = MIN(MAX(0, (*x) * rfi->scale_width / width
- - rfi->scale_width / width - 2), rfi->scale_width - 1);
+ - rfi->scale_width / width - 2), rfi->scale_width - 1);
sy = MIN(MAX(0, (*y) * rfi->scale_height / height
- - rfi->scale_height / height - 2), rfi->scale_height - 1);
+ - rfi->scale_height / height - 2), rfi->scale_height - 1);
sw = MIN(rfi->scale_width - sx, (*w) * rfi->scale_width / width
+ rfi->scale_width / width + 4);
@@ -267,22 +258,18 @@ static void remmina_rdp_event_update_scale_factor(RemminaProtocolWidget* gp)
gpwidth = a.width;
gpheight = a.height;
- if (rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED)
- {
- if ((gpwidth > 1) && (gpheight > 1))
- {
+ if (rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED) {
+ if ((gpwidth > 1) && (gpheight > 1)) {
rdwidth = remmina_plugin_service->protocol_plugin_get_width(gp);
rdheight = remmina_plugin_service->protocol_plugin_get_height(gp);
rfi->scale_width = gpwidth;
rfi->scale_height = gpheight;
- rfi->scale_x = (gdouble) rfi->scale_width / (gdouble) rdwidth;
- rfi->scale_y = (gdouble) rfi->scale_height / (gdouble) rdheight;
+ rfi->scale_x = (gdouble)rfi->scale_width / (gdouble)rdwidth;
+ rfi->scale_y = (gdouble)rfi->scale_height / (gdouble)rdheight;
}
- }
- else
- {
+ }else {
rfi->scale_width = 0;
rfi->scale_height = 0;
rfi->scale_x = 0;
@@ -303,12 +290,11 @@ static gboolean remmina_rdp_event_on_draw(GtkWidget* widget, cairo_t* context, R
return FALSE;
- if (rfi->is_reconnecting)
- {
+ if (rfi->is_reconnecting) {
/* freerdp is reconnecting, just show a message to the user */
width = gtk_widget_get_allocated_width(widget);
- height = gtk_widget_get_allocated_height (widget);
+ height = gtk_widget_get_allocated_height(widget);
/* Draw text */
msg = g_strdup_printf(_("Reconnection in progress. Attempt %d of %d..."),
@@ -322,9 +308,7 @@ static gboolean remmina_rdp_event_on_draw(GtkWidget* widget, cairo_t* context, R
cairo_show_text(context, msg);
g_free(msg);
- }
- else
- {
+ }else {
/* Standard drawing: we copy the surface from RDP */
if (!rfi->surface)
@@ -338,7 +322,7 @@ static gboolean remmina_rdp_event_on_draw(GtkWidget* widget, cairo_t* context, R
cairo_set_source_surface(context, rfi->surface, 0, 0);
- cairo_set_operator(context, CAIRO_OPERATOR_SOURCE); // Ignore alpha channel from FreeRDP
+ cairo_set_operator(context, CAIRO_OPERATOR_SOURCE); // Ignore alpha channel from FreeRDP
cairo_paint(context);
}
@@ -373,9 +357,9 @@ static gboolean remmina_rdp_event_delayed_monitor_layout(RemminaProtocolWidget*
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
if ((gpwidth != prevwidth || gpheight != prevheight) &&
- gpwidth >= 200 && gpwidth < 8192 &&
- gpheight >= 200 && gpheight < 8192
- ) {
+ gpwidth >= 200 && gpwidth < 8192 &&
+ gpheight >= 200 && gpheight < 8192
+ ) {
rdp_event.type = REMMINA_RDP_EVENT_TYPE_SEND_MONITOR_LAYOUT;
rdp_event.monitor_layout.width = gpwidth;
rdp_event.monitor_layout.height = gpheight;
@@ -402,7 +386,7 @@ void remmina_rdp_event_send_delayed_monitor_layout(RemminaProtocolWidget* gp)
rfi->delayed_monitor_layout_handler = 0;
}
if (rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES) {
- rfi->delayed_monitor_layout_handler = g_timeout_add(500, (GSourceFunc) remmina_rdp_event_delayed_monitor_layout, gp);
+ rfi->delayed_monitor_layout_handler = g_timeout_add(500, (GSourceFunc)remmina_rdp_event_delayed_monitor_layout, gp);
}
}
@@ -439,15 +423,12 @@ static void remmina_rdp_event_translate_pos(RemminaProtocolWidget* gp, int ix, i
if (!rfi || !rfi->connected || rfi->is_reconnecting)
return;
- if ((rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED) && (rfi->scale_width >= 1) && (rfi->scale_height >= 1))
- {
- *ox = (UINT16) (ix * remmina_plugin_service->protocol_plugin_get_width(gp) / rfi->scale_width);
- *oy = (UINT16) (iy * remmina_plugin_service->protocol_plugin_get_height(gp) / rfi->scale_height);
- }
- else
- {
- *ox = (UINT16) ix;
- *oy = (UINT16) iy;
+ if ((rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED) && (rfi->scale_width >= 1) && (rfi->scale_height >= 1)) {
+ *ox = (UINT16)(ix * remmina_plugin_service->protocol_plugin_get_width(gp) / rfi->scale_width);
+ *oy = (UINT16)(iy * remmina_plugin_service->protocol_plugin_get_height(gp) / rfi->scale_height);
+ }else {
+ *ox = (UINT16)ix;
+ *oy = (UINT16)iy;
}
}
@@ -464,13 +445,10 @@ static void remmina_rdp_event_reverse_translate_pos_reverse(RemminaProtocolWidge
if (!rfi || !rfi->connected || rfi->is_reconnecting)
return;
- if ((rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED) && (rfi->scale_width >= 1) && (rfi->scale_height >= 1))
- {
+ if ((rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED) && (rfi->scale_width >= 1) && (rfi->scale_height >= 1)) {
*ox = (ix * rfi->scale_width) / remmina_plugin_service->protocol_plugin_get_width(gp);
*oy = (iy * rfi->scale_height) / remmina_plugin_service->protocol_plugin_get_height(gp);
- }
- else
- {
+ }else {
*ox = ix;
*oy = iy;
}
@@ -504,33 +482,31 @@ static gboolean remmina_rdp_event_on_button(GtkWidget* widget, GdkEventButton* e
flag = 0;
- switch (event->button)
- {
- case 1:
- flag |= PTR_FLAGS_BUTTON1;
- break;
- case 2:
- flag |= PTR_FLAGS_BUTTON3;
- break;
- case 3:
- flag |= PTR_FLAGS_BUTTON2;
- break;
- case 8: /* back */
- case 97: /* Xming */
- extended = TRUE;
- flag |= PTR_XFLAGS_BUTTON1;
- break;
- case 9: /* forward */
- case 112: /* Xming */
- extended = TRUE;
- flag |= PTR_XFLAGS_BUTTON2;
- break;
- default:
- return FALSE;
+ switch (event->button) {
+ case 1:
+ flag |= PTR_FLAGS_BUTTON1;
+ break;
+ case 2:
+ flag |= PTR_FLAGS_BUTTON3;
+ break;
+ case 3:
+ flag |= PTR_FLAGS_BUTTON2;
+ break;
+ case 8: /* back */
+ case 97: /* Xming */
+ extended = TRUE;
+ flag |= PTR_XFLAGS_BUTTON1;
+ break;
+ case 9: /* forward */
+ case 112: /* Xming */
+ extended = TRUE;
+ flag |= PTR_XFLAGS_BUTTON2;
+ break;
+ default:
+ return FALSE;
}
- if (event->type == GDK_BUTTON_PRESS)
- {
+ if (event->type == GDK_BUTTON_PRESS) {
if (extended)
flag |= PTR_XFLAGS_DOWN;
else
@@ -540,8 +516,7 @@ static gboolean remmina_rdp_event_on_button(GtkWidget* widget, GdkEventButton* e
rdp_event.type = REMMINA_RDP_EVENT_TYPE_MOUSE;
remmina_rdp_event_translate_pos(gp, event->x, event->y, &rdp_event.mouse_event.x, &rdp_event.mouse_event.y);
- if (flag != 0)
- {
+ if (flag != 0) {
rdp_event.mouse_event.flags = flag;
rdp_event.mouse_event.extended = extended;
remmina_rdp_event_event_push(gp, &rdp_event);
@@ -559,29 +534,28 @@ static gboolean remmina_rdp_event_on_scroll(GtkWidget* widget, GdkEventScroll* e
flag = 0;
rdp_event.type = REMMINA_RDP_EVENT_TYPE_MOUSE;
- switch (event->direction)
- {
- case GDK_SCROLL_UP:
- flag = PTR_FLAGS_WHEEL | 0x0078;
- break;
+ switch (event->direction) {
+ case GDK_SCROLL_UP:
+ flag = PTR_FLAGS_WHEEL | 0x0078;
+ break;
- case GDK_SCROLL_DOWN:
- flag = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
- break;
+ case GDK_SCROLL_DOWN:
+ flag = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
+ break;
#ifdef GDK_SCROLL_SMOOTH
- case GDK_SCROLL_SMOOTH:
- if (event->delta_y < 0)
- flag = PTR_FLAGS_WHEEL | 0x0078;
- if (event->delta_y > 0)
- flag = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
- if (!flag)
- return FALSE;
- break;
+ case GDK_SCROLL_SMOOTH:
+ if (event->delta_y < 0)
+ flag = PTR_FLAGS_WHEEL | 0x0078;
+ if (event->delta_y > 0)
+ flag = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
+ if (!flag)
+ return FALSE;
+ break;
#endif
- default:
- return FALSE;
+ default:
+ return FALSE;
}
rdp_event.mouse_event.flags = flag;
@@ -608,7 +582,7 @@ static gboolean remmina_rdp_event_on_key(GtkWidget* widget, GdkEventKey* event,
/* GTK inspector key is propagated up. Disabled by default.
* enable it by defining ENABLE_GTK_INSPECTOR_KEY */
if ( ( event->state & GDK_CONTROL_MASK ) != 0 && ( event->keyval == GDK_KEY_I || event->keyval == GDK_KEY_D ) ) {
- return FALSE;
+ return FALSE;
}
#endif
@@ -616,31 +590,50 @@ static gboolean remmina_rdp_event_on_key(GtkWidget* widget, GdkEventKey* event,
rdp_event.key_event.up = (event->type == GDK_KEY_PRESS ? False : True);
rdp_event.key_event.extended = False;
- switch (event->keyval)
- {
- case GDK_KEY_Pause:
- /*
- * See https://msdn.microsoft.com/en-us/library/cc240584.aspx
- * 2.2.8.1.1.3.1.1.1 Keyboard Event (TS_KEYBOARD_EVENT)
- * for pause key management
+ switch (event->keyval) {
+ case GDK_KEY_Pause:
+ /*
+ * See https://msdn.microsoft.com/en-us/library/cc240584.aspx
+ * 2.2.8.1.1.3.1.1.1 Keyboard Event (TS_KEYBOARD_EVENT)
+ * for pause key management
+ */
+ rdp_event.key_event.key_code = 0x1D;
+ rdp_event.key_event.up = False;
+ remmina_rdp_event_event_push(gp, &rdp_event);
+ rdp_event.key_event.key_code = 0x45;
+ rdp_event.key_event.up = False;
+ remmina_rdp_event_event_push(gp, &rdp_event);
+ rdp_event.key_event.key_code = 0x1D;
+ rdp_event.key_event.up = True;
+ remmina_rdp_event_event_push(gp, &rdp_event);
+ rdp_event.key_event.key_code = 0x45;
+ rdp_event.key_event.up = True;
+ remmina_rdp_event_event_push(gp, &rdp_event);
+ break;
+
+ default:
+ if (!rfi->use_client_keymap) {
+ scancode = freerdp_keyboard_get_rdp_scancode_from_x11_keycode(event->hardware_keycode);
+ rdp_event.key_event.key_code = scancode & 0xFF;
+ rdp_event.key_event.extended = scancode & 0x100;
+ if (rdp_event.key_event.key_code) {
+ remmina_rdp_event_event_push(gp, &rdp_event);
+ keypress_list_add(gp, rdp_event);
+ }
+ }else {
+ display = gtk_widget_get_display(widget);
+ unicode_keyval = gdk_keyval_to_unicode(event->keyval);
+ /* Decide when whe should send a keycode or a unicode character.
+ * - All non char keys (shift, alt, win) should be sent as keycode
+ * - All special keys (F1-F10, numeric pad, home/end/arrows/pgup/pgdn/ins/del) keycode
+ * - All key pressed while CTRL or ALT or WIN is down are not decoded by gdk_keyval_to_unicode(), so send it as keycode
+ * - All keycodes not translatable to unicode chars, as keycode
+ * - The rest as unicode char
*/
- rdp_event.key_event.key_code = 0x1D;
- rdp_event.key_event.up = False;
- remmina_rdp_event_event_push(gp, &rdp_event);
- rdp_event.key_event.key_code = 0x45;
- rdp_event.key_event.up = False;
- remmina_rdp_event_event_push(gp, &rdp_event);
- rdp_event.key_event.key_code = 0x1D;
- rdp_event.key_event.up = True;
- remmina_rdp_event_event_push(gp, &rdp_event);
- rdp_event.key_event.key_code = 0x45;
- rdp_event.key_event.up = True;
- remmina_rdp_event_event_push(gp, &rdp_event);
- break;
-
- default:
- if (!rfi->use_client_keymap)
- {
+ if (event->keyval >= 0xfe00 || // arrows, shift, alt, Fn, num keypad...
+ unicode_keyval == 0 || // impossible to translate
+ (event->state & (GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SUPER_MASK)) != 0 // a modifier not recognized by gdk_keyval_to_unicode()
+ ) {
scancode = freerdp_keyboard_get_rdp_scancode_from_x11_keycode(event->hardware_keycode);
rdp_event.key_event.key_code = scancode & 0xFF;
rdp_event.key_event.extended = scancode & 0x100;
@@ -648,38 +641,15 @@ static gboolean remmina_rdp_event_on_key(GtkWidget* widget, GdkEventKey* event,
remmina_rdp_event_event_push(gp, &rdp_event);
keypress_list_add(gp, rdp_event);
}
+ } else {
+ rdp_event.type = REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE;
+ rdp_event.key_event.unicode_code = unicode_keyval;
+ rdp_event.key_event.extended = False;
+ remmina_rdp_event_event_push(gp, &rdp_event);
+ keypress_list_add(gp, rdp_event);
}
- else
- {
- display = gtk_widget_get_display(widget);
- unicode_keyval = gdk_keyval_to_unicode(event->keyval);
- /* Decide when whe should send a keycode or a unicode character.
- * - All non char keys (shift, alt, win) should be sent as keycode
- * - All special keys (F1-F10, numeric pad, home/end/arrows/pgup/pgdn/ins/del) keycode
- * - All key pressed while CTRL or ALT or WIN is down are not decoded by gdk_keyval_to_unicode(), so send it as keycode
- * - All keycodes not translatable to unicode chars, as keycode
- * - The rest as unicode char
- */
- if (event->keyval >= 0xfe00 || // arrows, shift, alt, Fn, num keypad...
- unicode_keyval == 0 || // impossible to translate
- (event->state & (GDK_MOD1_MASK | GDK_CONTROL_MASK | GDK_SUPER_MASK)) != 0 // a modifier not recognized by gdk_keyval_to_unicode()
- ) {
- scancode = freerdp_keyboard_get_rdp_scancode_from_x11_keycode(event->hardware_keycode);
- rdp_event.key_event.key_code = scancode & 0xFF;
- rdp_event.key_event.extended = scancode & 0x100;
- if (rdp_event.key_event.key_code) {
- remmina_rdp_event_event_push(gp, &rdp_event);
- keypress_list_add(gp, rdp_event);
- }
- } else {
- rdp_event.type = REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE;
- rdp_event.key_event.unicode_code = unicode_keyval;
- rdp_event.key_event.extended = False;
- remmina_rdp_event_event_push(gp, &rdp_event);
- keypress_list_add(gp, rdp_event);
- }
- }
- break;
+ }
+ break;
}
return TRUE;
@@ -750,31 +720,26 @@ void remmina_rdp_event_init(RemminaProtocolWidget* gp)
G_CALLBACK(remmina_rdp_event_on_focus_in), gp);
RemminaFile* remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE))
- {
+ if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE)) {
clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD);
rfi->clipboard.clipboard_handler = g_signal_connect(clipboard, "owner-change", G_CALLBACK(remmina_rdp_event_on_clipboard), gp);
}
- rfi->pressed_keys = g_array_new(FALSE, TRUE, sizeof (RemminaPluginRdpEvent));
+ rfi->pressed_keys = g_array_new(FALSE, TRUE, sizeof(RemminaPluginRdpEvent));
rfi->event_queue = g_async_queue_new_full(g_free);
rfi->ui_queue = g_async_queue_new();
pthread_mutex_init(&rfi->ui_queue_mutex, NULL);
- if (pipe(rfi->event_pipe))
- {
+ if (pipe(rfi->event_pipe)) {
g_print("Error creating pipes.\n");
rfi->event_pipe[0] = -1;
rfi->event_pipe[1] = -1;
rfi->event_handle = NULL;
- }
- else
- {
+ }else {
flags = fcntl(rfi->event_pipe[0], F_GETFL, 0);
fcntl(rfi->event_pipe[0], F_SETFL, flags | O_NONBLOCK);
rfi->event_handle = CreateFileDescriptorEvent(NULL, FALSE, FALSE, rfi->event_pipe[0], WINPR_FD_READ);
- if (!rfi->event_handle)
- {
+ if (!rfi->event_handle) {
g_print("CreateFileDescriptorEvent() failed\n");
}
}
@@ -792,18 +757,17 @@ void remmina_rdp_event_free_event(RemminaProtocolWidget* gp, RemminaPluginRdpUiO
TRACE_CALL("__func__");
rfContext* rfi = GET_PLUGIN_DATA(gp);
- switch (obj->type)
- {
- case REMMINA_RDP_UI_RFX:
- rfx_message_free(rfi->rfx_context, obj->rfx.message);
- break;
+ switch (obj->type) {
+ case REMMINA_RDP_UI_RFX:
+ rfx_message_free(rfi->rfx_context, obj->rfx.message);
+ break;
- case REMMINA_RDP_UI_NOCODEC:
- free(obj->nocodec.bitmap);
- break;
+ case REMMINA_RDP_UI_NOCODEC:
+ free(obj->nocodec.bitmap);
+ break;
- default:
- break;
+ default:
+ break;
}
g_free(obj);
@@ -819,27 +783,22 @@ void remmina_rdp_event_uninit(RemminaProtocolWidget* gp)
if (!rfi) return;
/* unregister the clipboard monitor */
- if (rfi->clipboard.clipboard_handler)
- {
+ if (rfi->clipboard.clipboard_handler) {
g_signal_handler_disconnect(G_OBJECT(gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD)), rfi->clipboard.clipboard_handler);
rfi->clipboard.clipboard_handler = 0;
}
- if (rfi->delayed_monitor_layout_handler)
- {
+ if (rfi->delayed_monitor_layout_handler) {
g_source_remove(rfi->delayed_monitor_layout_handler);
rfi->delayed_monitor_layout_handler = 0;
}
- if (rfi->ui_handler)
- {
+ if (rfi->ui_handler) {
g_source_remove(rfi->ui_handler);
rfi->ui_handler = 0;
}
- while ((ui =(RemminaPluginRdpUiObject*) g_async_queue_try_pop(rfi->ui_queue)) != NULL)
- {
+ while ((ui = (RemminaPluginRdpUiObject*)g_async_queue_try_pop(rfi->ui_queue)) != NULL) {
remmina_rdp_event_free_event(gp, ui);
}
- if (rfi->surface)
- {
+ if (rfi->surface) {
cairo_surface_destroy(rfi->surface);
rfi->surface = NULL;
}
@@ -853,8 +812,7 @@ void remmina_rdp_event_uninit(RemminaProtocolWidget* gp)
rfi->ui_queue = NULL;
pthread_mutex_destroy(&rfi->ui_queue_mutex);
- if (rfi->event_handle)
- {
+ if (rfi->event_handle) {
CloseHandle(rfi->event_handle);
rfi->event_handle = NULL;
}
@@ -866,12 +824,13 @@ void remmina_rdp_event_uninit(RemminaProtocolWidget* gp)
static void remmina_rdp_event_create_cairo_surface(rfContext* rfi)
{
int stride;
+
if (rfi->surface) {
cairo_surface_destroy(rfi->surface);
rfi->surface = NULL;
}
stride = cairo_format_stride_for_width(rfi->cairo_format, rfi->width);
- rfi->surface = cairo_image_surface_create_for_data((unsigned char*) rfi->primary_buffer, rfi->cairo_format, rfi->width, rfi->height, stride);
+ rfi->surface = cairo_image_surface_create_for_data((unsigned char*)rfi->primary_buffer, rfi->cairo_format, rfi->width, rfi->height, stride);
}
void remmina_rdp_event_update_scale(RemminaProtocolWidget* gp)
@@ -891,7 +850,7 @@ void remmina_rdp_event_update_scale(RemminaProtocolWidget* gp)
/* See if we also must rellocate rfi->surface with different width and height,
* this usually happens after a DesktopResize RDP event*/
if ( rfi->surface && (width != cairo_image_surface_get_width(rfi->surface) ||
- height != cairo_image_surface_get_height(rfi->surface) )) {
+ height != cairo_image_surface_get_height(rfi->surface) )) {
/* Destroys and recreate rfi->surface with new width and height,
* calls gdi_resize and save new gdi->primary buffer pointer */
if (rfi->surface) {
@@ -900,7 +859,7 @@ void remmina_rdp_event_update_scale(RemminaProtocolWidget* gp)
}
rfi->width = width;
rfi->height = height;
- gdi = ((rdpContext *)rfi)->gdi;
+ gdi = ((rdpContext*)rfi)->gdi;
gdi_resize(gdi, width, height);
rfi->primary_buffer = gdi->primary_buffer;
remmina_rdp_event_create_cairo_surface(rfi);
@@ -908,13 +867,10 @@ void remmina_rdp_event_update_scale(RemminaProtocolWidget* gp)
remmina_rdp_event_update_scale_factor(gp);
- if (rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED || rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES)
- {
+ if (rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED || rfi->scale == REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES) {
/* In scaled mode and autores mode, drawing_area will get its dimensions from its parent */
gtk_widget_set_size_request(rfi->drawing_area, -1, -1 );
- }
- else
- {
+ }else {
/* In non scaled mode, the plugins forces dimensions of drawing area */
gtk_widget_set_size_request(rfi->drawing_area, width, height);
}
@@ -952,12 +908,11 @@ static BOOL remmina_rdp_event_create_cursor(RemminaProtocolWidget* gp, RemminaPl
UINT8* data = malloc(pointer->width * pointer->height * 4);
if (freerdp_image_copy_from_pointer_data(
- (BYTE*) data, PIXEL_FORMAT_BGRA32,
- pointer->width * 4, 0, 0, pointer->width, pointer->height,
- pointer->xorMaskData, pointer->lengthXorMask,
- pointer->andMaskData, pointer->lengthAndMask,
- pointer->xorBpp, &(ui->cursor.context->gdi->palette)) < 0)
- {
+ (BYTE*)data, PIXEL_FORMAT_BGRA32,
+ pointer->width * 4, 0, 0, pointer->width, pointer->height,
+ pointer->xorMaskData, pointer->lengthXorMask,
+ pointer->andMaskData, pointer->lengthAndMask,
+ pointer->xorBpp, &(ui->cursor.context->gdi->palette)) < 0) {
free(data);
return FALSE;
}
@@ -1021,36 +976,35 @@ static void remmina_rdp_event_cursor(RemminaProtocolWidget* gp, RemminaPluginRdp
TRACE_CALL("__func__");
rfContext* rfi = GET_PLUGIN_DATA(gp);
- switch (ui->cursor.type)
- {
- case REMMINA_RDP_POINTER_NEW:
- ui->retval = remmina_rdp_event_create_cursor(gp, ui) ? 1 : 0;
- break;
-
- case REMMINA_RDP_POINTER_FREE:
- remmina_rdp_event_free_cursor(gp, ui);
- break;
-
- case REMMINA_RDP_POINTER_SET:
- gdk_window_set_cursor(gtk_widget_get_window(rfi->drawing_area), ui->cursor.pointer->cursor);
- ui->retval = 1;
- break;
-
- case REMMINA_RDP_POINTER_SETPOS:
- ui->retval = remmina_rdp_event_set_pointer_position(gp, ui->pos.x, ui->pos.y) ? 1 : 0;
- break;
-
- case REMMINA_RDP_POINTER_NULL:
- gdk_window_set_cursor(gtk_widget_get_window(rfi->drawing_area),
- gdk_cursor_new_for_display(gdk_display_get_default(),
- GDK_BLANK_CURSOR));
- ui->retval = 1;
- break;
-
- case REMMINA_RDP_POINTER_DEFAULT:
- gdk_window_set_cursor(gtk_widget_get_window(rfi->drawing_area), NULL);
- ui->retval = 1;
- break;
+ switch (ui->cursor.type) {
+ case REMMINA_RDP_POINTER_NEW:
+ ui->retval = remmina_rdp_event_create_cursor(gp, ui) ? 1 : 0;
+ break;
+
+ case REMMINA_RDP_POINTER_FREE:
+ remmina_rdp_event_free_cursor(gp, ui);
+ break;
+
+ case REMMINA_RDP_POINTER_SET:
+ gdk_window_set_cursor(gtk_widget_get_window(rfi->drawing_area), ui->cursor.pointer->cursor);
+ ui->retval = 1;
+ break;
+
+ case REMMINA_RDP_POINTER_SETPOS:
+ ui->retval = remmina_rdp_event_set_pointer_position(gp, ui->pos.x, ui->pos.y) ? 1 : 0;
+ break;
+
+ case REMMINA_RDP_POINTER_NULL:
+ gdk_window_set_cursor(gtk_widget_get_window(rfi->drawing_area),
+ gdk_cursor_new_for_display(gdk_display_get_default(),
+ GDK_BLANK_CURSOR));
+ ui->retval = 1;
+ break;
+
+ case REMMINA_RDP_POINTER_DEFAULT:
+ gdk_window_set_cursor(gtk_widget_get_window(rfi->drawing_area), NULL);
+ ui->retval = 1;
+ break;
}
}
@@ -1069,45 +1023,43 @@ void remmina_rdp_event_unfocus(RemminaProtocolWidget* gp)
static void remmina_rdp_event_process_event(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui)
{
TRACE_CALL("__func__");
- switch (ui->event.type)
- {
- case REMMINA_RDP_UI_EVENT_UPDATE_SCALE:
- remmina_rdp_ui_event_update_scale(gp, ui);
- break;
+ switch (ui->event.type) {
+ case REMMINA_RDP_UI_EVENT_UPDATE_SCALE:
+ remmina_rdp_ui_event_update_scale(gp, ui);
+ break;
}
}
static void remmina_rdp_event_process_ui_event(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui)
{
TRACE_CALL("__func__");
- switch (ui->type)
- {
- case REMMINA_RDP_UI_UPDATE_REGION:
- remmina_rdp_event_update_region(gp, ui);
- break;
-
- case REMMINA_RDP_UI_CONNECTED:
- remmina_rdp_event_connected(gp, ui);
- break;
-
- case REMMINA_RDP_UI_RECONNECT_PROGRESS:
- remmina_rdp_event_reconnect_progress(gp, ui);
- break;
-
- case REMMINA_RDP_UI_CURSOR:
- remmina_rdp_event_cursor(gp, ui);
- break;
-
- case REMMINA_RDP_UI_CLIPBOARD:
- remmina_rdp_event_process_clipboard(gp, ui);
- break;
-
- case REMMINA_RDP_UI_EVENT:
- remmina_rdp_event_process_event(gp,ui);
- break;
-
- default:
- break;
+ switch (ui->type) {
+ case REMMINA_RDP_UI_UPDATE_REGION:
+ remmina_rdp_event_update_region(gp, ui);
+ break;
+
+ case REMMINA_RDP_UI_CONNECTED:
+ remmina_rdp_event_connected(gp, ui);
+ break;
+
+ case REMMINA_RDP_UI_RECONNECT_PROGRESS:
+ remmina_rdp_event_reconnect_progress(gp, ui);
+ break;
+
+ case REMMINA_RDP_UI_CURSOR:
+ remmina_rdp_event_cursor(gp, ui);
+ break;
+
+ case REMMINA_RDP_UI_CLIPBOARD:
+ remmina_rdp_event_process_clipboard(gp, ui);
+ break;
+
+ case REMMINA_RDP_UI_EVENT:
+ remmina_rdp_event_process_event(gp, ui);
+ break;
+
+ default:
+ break;
}
}
@@ -1119,12 +1071,10 @@ static gboolean remmina_rdp_event_process_ui_queue(RemminaProtocolWidget* gp)
RemminaPluginRdpUiObject* ui;
pthread_mutex_lock(&rfi->ui_queue_mutex);
- ui = (RemminaPluginRdpUiObject*) g_async_queue_try_pop(rfi->ui_queue);
- if (ui)
- {
+ ui = (RemminaPluginRdpUiObject*)g_async_queue_try_pop(rfi->ui_queue);
+ if (ui) {
pthread_mutex_lock(&ui->sync_wait_mutex);
- if (!rfi->thread_cancelled)
- {
+ if (!rfi->thread_cancelled) {
remmina_rdp_event_process_ui_event(gp, ui);
}
// Should we signal the caller thread to unlock ?
@@ -1139,9 +1089,7 @@ static gboolean remmina_rdp_event_process_ui_queue(RemminaProtocolWidget* gp)
pthread_mutex_unlock(&rfi->ui_queue_mutex);
return TRUE;
- }
- else
- {
+ }else {
rfi->ui_handler = 0;
pthread_mutex_unlock(&rfi->ui_queue_mutex);
return FALSE;
@@ -1159,7 +1107,7 @@ static void remmina_rdp_event_queue_ui(RemminaProtocolWidget* gp, RemminaPluginR
return;
}
- if(remmina_plugin_service->is_main_thread()) {
+ if (remmina_plugin_service->is_main_thread()) {
remmina_rdp_event_process_ui_event(gp, ui);
return;
}
@@ -1172,7 +1120,7 @@ static void remmina_rdp_event_queue_ui(RemminaProtocolWidget* gp, RemminaPluginR
ui->complete = FALSE;
if (ui_sync_save) {
- pthread_mutex_init(&ui->sync_wait_mutex,NULL);
+ pthread_mutex_init(&ui->sync_wait_mutex, NULL);
pthread_cond_init(&ui->sync_wait_cond, NULL);
}
@@ -1181,14 +1129,14 @@ static void remmina_rdp_event_queue_ui(RemminaProtocolWidget* gp, RemminaPluginR
g_async_queue_push(rfi->ui_queue, ui);
if (!rfi->ui_handler) {
- rfi->ui_handler = IDLE_ADD((GSourceFunc) remmina_rdp_event_process_ui_queue, gp);
+ rfi->ui_handler = IDLE_ADD((GSourceFunc)remmina_rdp_event_process_ui_queue, gp);
}
if (ui_sync_save) {
/* Wait for main thread function completion before returning */
pthread_mutex_lock(&ui->sync_wait_mutex);
pthread_mutex_unlock(&rfi->ui_queue_mutex);
- while(!ui->complete) {
+ while (!ui->complete) {
pthread_cond_wait(&ui->sync_wait_cond, &ui->sync_wait_mutex);
}
pthread_cond_destroy(&ui->sync_wait_cond);
diff --git a/remmina-plugins/rdp/rdp_file.c b/remmina-plugins/rdp/rdp_file.c
index ed9122586..6f81cc642 100644
--- a/remmina-plugins/rdp/rdp_file.c
+++ b/remmina-plugins/rdp/rdp_file.c
@@ -62,97 +62,56 @@ gboolean remmina_rdp_file_import_test(const gchar* from_file)
static void remmina_rdp_file_import_field(RemminaFile* remminafile, const gchar* key, const gchar* value)
{
TRACE_CALL("__func__");
- if (g_strcmp0(key, "desktopwidth") == 0)
- {
+ if (g_strcmp0(key, "desktopwidth") == 0) {
remmina_plugin_service->file_set_string(remminafile, "resolution_width", value);
- }
- else if (g_strcmp0(key, "desktopheight") == 0)
- {
+ }else if (g_strcmp0(key, "desktopheight") == 0) {
remmina_plugin_service->file_set_string(remminafile, "resolution_height", value);
- }
- else if (g_strcmp0(key, "session bpp") == 0)
- {
+ }else if (g_strcmp0(key, "session bpp") == 0) {
remmina_plugin_service->file_set_string(remminafile, "colordepth", value);
- }
- else if (g_strcmp0(key, "keyboardhook") == 0)
- {
- remmina_plugin_service->file_set_int(remminafile, "keyboard_grab", (atoi (value) == 1));
- }
- else if (g_strcmp0(key, "full address") == 0)
- {
+ }else if (g_strcmp0(key, "keyboardhook") == 0) {
+ remmina_plugin_service->file_set_int(remminafile, "keyboard_grab", (atoi(value) == 1));
+ }else if (g_strcmp0(key, "full address") == 0) {
remmina_plugin_service->file_set_string(remminafile, "server", value);
- }
- else if (g_strcmp0(key, "audiomode") == 0)
- {
- switch (atoi(value))
- {
- case 0:
- remmina_plugin_service->file_set_string(remminafile, "sound", "local");
- break;
- case 1:
- remmina_plugin_service->file_set_string(remminafile, "sound", "remote");
- break;
+ }else if (g_strcmp0(key, "audiomode") == 0) {
+ switch (atoi(value)) {
+ case 0:
+ remmina_plugin_service->file_set_string(remminafile, "sound", "local");
+ break;
+ case 1:
+ remmina_plugin_service->file_set_string(remminafile, "sound", "remote");
+ break;
}
- }
- else if (g_strcmp0(key, "microphone") == 0)
- {
- remmina_plugin_service->file_set_int(remminafile, "microphone", (atoi (value) == 1));
- }
- else if (g_strcmp0(key, "redirectprinters") == 0)
- {
- remmina_plugin_service->file_set_int(remminafile, "shareprinter", (atoi (value) == 1));
- }
- else if (g_strcmp0(key, "redirectsmartcard") == 0)
- {
- remmina_plugin_service->file_set_int(remminafile, "sharesmartcard", (atoi (value) == 1));
- }
- else if (g_strcmp0(key, "redirectclipboard") == 0)
- {
- remmina_plugin_service->file_set_int(remminafile, "disableclipboard", (atoi (value) != 1));
- }
- else if (g_strcmp0(key, "alternate shell") == 0)
- {
+ }else if (g_strcmp0(key, "microphone") == 0) {
+ remmina_plugin_service->file_set_int(remminafile, "microphone", (atoi(value) == 1));
+ } else if (g_strcmp0(key, "redirectprinters") == 0) {
+ remmina_plugin_service->file_set_int(remminafile, "shareprinter", (atoi(value) == 1));
+ }else if (g_strcmp0(key, "redirectsmartcard") == 0) {
+ remmina_plugin_service->file_set_int(remminafile, "sharesmartcard", (atoi(value) == 1));
+ }else if (g_strcmp0(key, "redirectclipboard") == 0) {
+ remmina_plugin_service->file_set_int(remminafile, "disableclipboard", (atoi(value) != 1));
+ }else if (g_strcmp0(key, "alternate shell") == 0) {
remmina_plugin_service->file_set_string(remminafile, "exec", value);
- }
- else if (g_strcmp0(key, "shell working directory") == 0)
- {
+ }else if (g_strcmp0(key, "shell working directory") == 0) {
remmina_plugin_service->file_set_string(remminafile, "execpath", value);
- }
- else if (g_strcmp0(key, "loadbalanceinfo") == 0)
- {
+ }else if (g_strcmp0(key, "loadbalanceinfo") == 0) {
remmina_plugin_service->file_set_string(remminafile, "loadbalanceinfo", value);
- }
- else if (g_strcmp0(key, "gatewayhostname") == 0)
- {
+ }else if (g_strcmp0(key, "gatewayhostname") == 0) {
remmina_plugin_service->file_set_string(remminafile, "gateway_server", value);
- }
- else if (g_strcmp0(key, "gatewayusagemethod") == 0)
- {
+ }else if (g_strcmp0(key, "gatewayusagemethod") == 0) {
remmina_plugin_service->file_set_string(remminafile, "gatewayusagemethod", value);
- }
- else if (g_strcmp0(key, "gatewaycredentialssource") == 0)
- {
+ }else if (g_strcmp0(key, "gatewaycredentialssource") == 0) {
remmina_plugin_service->file_set_string(remminafile, "gatewaycredentialssource", value);
- }
- else if (g_strcmp0(key, "gatewayprofileusagemethod") == 0)
- {
+ }else if (g_strcmp0(key, "gatewayprofileusagemethod") == 0) {
remmina_plugin_service->file_set_string(remminafile, "gatewayprofileusagemethod", value);
}
/* tsclient fields, import only */
- else if (g_strcmp0(key, "client hostname") == 0)
- {
+ else if (g_strcmp0(key, "client hostname") == 0) {
remmina_plugin_service->file_set_string(remminafile, "clientname", value);
- }
- else if (g_strcmp0(key, "domain") == 0)
- {
+ }else if (g_strcmp0(key, "domain") == 0) {
remmina_plugin_service->file_set_string(remminafile, "domain", value);
- }
- else if (g_strcmp0(key, "username") == 0)
- {
+ }else if (g_strcmp0(key, "username") == 0) {
remmina_plugin_service->file_set_string(remminafile, "username", value);
- }
- else if (g_strcmp0(key, "password") == 0)
- {
+ }else if (g_strcmp0(key, "password") == 0) {
remmina_plugin_service->file_set_string(remminafile, "password", value);
}
}
@@ -168,60 +127,48 @@ static RemminaFile* remmina_rdp_file_import_channel(GIOChannel* channel)
RemminaFile* remminafile;
guchar magic[2] = { 0 };
- if (g_io_channel_set_encoding(channel, NULL, &error) != G_IO_STATUS_NORMAL)
- {
+ if (g_io_channel_set_encoding(channel, NULL, &error) != G_IO_STATUS_NORMAL) {
g_print("g_io_channel_set_encoding: %s\n", error->message);
return NULL;
}
/* Try to detect the UTF-16 encoding */
- if (g_io_channel_read_chars(channel, (gchar*) magic, 2, &bytes_read, &error) != G_IO_STATUS_NORMAL)
- {
+ if (g_io_channel_read_chars(channel, (gchar*)magic, 2, &bytes_read, &error) != G_IO_STATUS_NORMAL) {
g_print("g_io_channel_read_chars: %s\n", error->message);
return NULL;
}
- if (magic[0] == 0xFF && magic[1] == 0xFE)
- {
+ if (magic[0] == 0xFF && magic[1] == 0xFE) {
enc = "UTF-16LE";
- }
- else if (magic[0] == 0xFE && magic[1] == 0xFF)
- {
+ }else if (magic[0] == 0xFE && magic[1] == 0xFF) {
enc = "UTF-16BE";
- }
- else
- {
+ }else {
enc = "UTF-8";
- if (g_io_channel_seek_position(channel, 0, G_SEEK_SET, &error) != G_IO_STATUS_NORMAL)
- {
+ if (g_io_channel_seek_position(channel, 0, G_SEEK_SET, &error) != G_IO_STATUS_NORMAL) {
g_print("g_io_channel_seek: failed\n");
return NULL;
}
}
- if (g_io_channel_set_encoding(channel, enc, &error) != G_IO_STATUS_NORMAL)
- {
+ if (g_io_channel_set_encoding(channel, enc, &error) != G_IO_STATUS_NORMAL) {
g_print("g_io_channel_set_encoding: %s\n", error->message);
return NULL;
}
remminafile = remmina_plugin_service->file_new();
- while (g_io_channel_read_line(channel, &line, NULL, &bytes_read, &error) == G_IO_STATUS_NORMAL)
- {
+ while (g_io_channel_read_line(channel, &line, NULL, &bytes_read, &error) == G_IO_STATUS_NORMAL) {
if (line == NULL)
break;
line[bytes_read] = '\0';
p = strchr(line, ':');
- if (p)
- {
+ if (p) {
*p++ = '\0';
- p = strchr (p, ':');
+ p = strchr(p, ':');
- if (p)
- {
+ if (p) {
p++;
remmina_rdp_file_import_field(remminafile, line, p);
}
@@ -246,8 +193,7 @@ RemminaFile* remmina_rdp_file_import(const gchar* from_file)
channel = g_io_channel_new_file(from_file, "r", &error);
- if (channel == NULL)
- {
+ if (channel == NULL) {
g_print("Failed to import %s: %s\n", from_file, error->message);
return NULL;
}
@@ -276,12 +222,10 @@ gboolean remmina_rdp_file_export_channel(RemminaFile* remminafile, FILE* fp)
fprintf(fp, "screen mode id:i:2\r\n");
cs = remmina_plugin_service->file_get_string(remminafile, "resolution");
- if (cs)
- {
+ if (cs) {
s = g_strdup(cs);
p = strchr(s, 'x');
- if (p)
- {
+ if (p) {
*p++ = '\0';
fprintf(fp, "desktopwidth:i:%s\r\n", s);
fprintf(fp, "desktopheight:i:%s\r\n", p);
@@ -344,21 +288,17 @@ gboolean remmina_rdp_file_export(RemminaFile* remminafile, const gchar* to_file)
gchar* p;
gboolean ret;
- p = strrchr (to_file, '.');
+ p = strrchr(to_file, '.');
- if (p && (g_strcmp0(p + 1, "rdp") == 0 || g_strcmp0(p + 1, "RDP") == 0))
- {
+ if (p && (g_strcmp0(p + 1, "rdp") == 0 || g_strcmp0(p + 1, "RDP") == 0)) {
p = g_strdup(to_file);
- }
- else
- {
+ }else {
p = g_strdup_printf("%s.rdp", to_file);
}
fp = g_fopen(p, "w+");
- if (fp == NULL)
- {
+ if (fp == NULL) {
g_print("Failed to export %s\n", p);
g_free(p);
return FALSE;
diff --git a/remmina-plugins/rdp/rdp_graphics.c b/remmina-plugins/rdp/rdp_graphics.c
index d6015162a..bd7701b1a 100644
--- a/remmina-plugins/rdp/rdp_graphics.c
+++ b/remmina-plugins/rdp/rdp_graphics.c
@@ -56,29 +56,25 @@ BOOL rf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap)
UINT8* data;
Pixmap pixmap;
XImage* image;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
XSetFunction(rfi->display, rfi->gc, GXcopy);
pixmap = XCreatePixmap(rfi->display, rfi->drawable, bitmap->width, bitmap->height, rfi->depth);
- if (bitmap->data != NULL)
- {
+ if (bitmap->data != NULL) {
data = freerdp_image_convert(bitmap->data, NULL,
- bitmap->width, bitmap->height, rfi->srcBpp, rfi->bpp, rfi->clrconv);
+ bitmap->width, bitmap->height, rfi->srcBpp, rfi->bpp, rfi->clrconv);
- if (bitmap->ephemeral != TRUE)
- {
+ if (bitmap->ephemeral != TRUE) {
image = XCreateImage(rfi->display, rfi->visual, rfi->depth,
- ZPixmap, 0, (char*) data, bitmap->width, bitmap->height, rfi->scanline_pad, 0);
+ ZPixmap, 0, (char*)data, bitmap->width, bitmap->height, rfi->scanline_pad, 0);
XPutImage(rfi->display, pixmap, rfi->gc, image, 0, 0, 0, 0, bitmap->width, bitmap->height);
XFree(image);
if (data != bitmap->data) && (data != NULL)
free(data);
- }
- else
- {
+ }else {
if (data != bitmap->data) && (data != NULL)
free(bitmap->data);
@@ -86,7 +82,7 @@ BOOL rf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap)
}
}
- ((rfBitmap*) bitmap)->pixmap = pixmap;
+ ((rfBitmap*)bitmap)->pixmap = pixmap;
#endif
return TRUE;
}
@@ -95,12 +91,12 @@ void rf_Bitmap_Free(rdpContext* context, rdpBitmap* bitmap)
{
TRACE_CALL("__func__");
#ifdef RF_BITMAP
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
printf("rf_Bitmap_Free\n");
- if (((rfBitmap*) bitmap)->pixmap != 0)
- XFreePixmap(rfi->display, ((rfBitmap*) bitmap)->pixmap);
+ if (((rfBitmap*)bitmap)->pixmap != 0)
+ XFreePixmap(rfi->display, ((rfBitmap*)bitmap)->pixmap);
#endif
}
@@ -110,7 +106,7 @@ BOOL rf_Bitmap_Paint(rdpContext* context, rdpBitmap* bitmap)
#ifdef RF_BITMAP
XImage* image;
int width, height;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
printf("rf_Bitmap_Paint\n");
@@ -120,10 +116,10 @@ BOOL rf_Bitmap_Paint(rdpContext* context, rdpBitmap* bitmap)
XSetFunction(rfi->display, rfi->gc, GXcopy);
image = XCreateImage(rfi->display, rfi->visual, rfi->depth,
- ZPixmap, 0, (char*) bitmap->data, bitmap->width, bitmap->height, rfi->scanline_pad, 0);
+ ZPixmap, 0, (char*)bitmap->data, bitmap->width, bitmap->height, rfi->scanline_pad, 0);
XPutImage(rfi->display, rfi->primary, rfi->gc,
- image, 0, 0, bitmap->left, bitmap->top, width, height);
+ image, 0, 0, bitmap->left, bitmap->top, width, height);
XFree(image);
@@ -136,7 +132,7 @@ BOOL rf_Bitmap_Paint(rdpContext* context, rdpBitmap* bitmap)
}
BOOL rf_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap,
- const BYTE* data, UINT32 width, UINT32 height, UINT32 bpp, UINT32 length, BOOL compressed, UINT32 codec_id)
+ const BYTE* data, UINT32 width, UINT32 height, UINT32 bpp, UINT32 length, BOOL compressed, UINT32 codec_id)
{
TRACE_CALL("__func__");
#ifdef RF_BITMAP
@@ -147,23 +143,19 @@ BOOL rf_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap,
size = width * height * (bpp + 7) / 8;
if (bitmap->data == NULL)
- bitmap->data = (UINT8*) xmalloc(size);
+ bitmap->data = (UINT8*)xmalloc(size);
else
- bitmap->data = (UINT8*) xrealloc(bitmap->data, size);
+ bitmap->data = (UINT8*)xrealloc(bitmap->data, size);
- if (compressed)
- {
+ if (compressed) {
BOOL status;
status = bitmap_decompress(data, bitmap->data, width, height, length, bpp, bpp);
- if (status != TRUE)
- {
+ if (status != TRUE) {
printf("Bitmap Decompression Failed\n");
}
- }
- else
- {
+ }else {
freerdp_image_flip(data, bitmap->data, width, height, bpp);
}
@@ -178,12 +170,12 @@ BOOL rf_Bitmap_SetSurface(rdpContext* context, rdpBitmap* bitmap, BOOL primary)
{
TRACE_CALL("__func__");
#ifdef RF_BITMAP
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
if (primary)
rfi->drawing = rfi->primary;
else
- rfi->drawing = ((rfBitmap*) bitmap)->pixmap;
+ rfi->drawing = ((rfBitmap*)bitmap)->pixmap;
#endif
return TRUE;
}
@@ -194,14 +186,13 @@ BOOL rf_Pointer_New(rdpContext* context, rdpPointer* pointer)
{
TRACE_CALL("__func__");
RemminaPluginRdpUiObject* ui;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
- if ((pointer->andMaskData != 0) && (pointer->xorMaskData != 0))
- {
+ if ((pointer->andMaskData != 0) && (pointer->xorMaskData != 0)) {
ui = g_new0(RemminaPluginRdpUiObject, 1);
ui->type = REMMINA_RDP_UI_CURSOR;
ui->cursor.context = context;
- ui->cursor.pointer = (rfPointer*) pointer;
+ ui->cursor.pointer = (rfPointer*)pointer;
ui->cursor.type = REMMINA_RDP_POINTER_NEW;
return remmina_rdp_event_queue_ui_sync_retint(rfi->protocol_widget, ui) ? TRUE : FALSE;
}
@@ -212,18 +203,18 @@ void rf_Pointer_Free(rdpContext* context, rdpPointer* pointer)
{
TRACE_CALL("__func__");
RemminaPluginRdpUiObject* ui;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
#if GTK_VERSION == 2
- if (((rfPointer*) pointer)->cursor != NULL)
+ if (((rfPointer*)pointer)->cursor != NULL)
#else
- if (G_IS_OBJECT(((rfPointer*) pointer)->cursor))
+ if (G_IS_OBJECT(((rfPointer*)pointer)->cursor))
#endif
{
ui = g_new0(RemminaPluginRdpUiObject, 1);
ui->type = REMMINA_RDP_UI_CURSOR;
ui->cursor.context = context;
- ui->cursor.pointer = (rfPointer*) pointer;
+ ui->cursor.pointer = (rfPointer*)pointer;
ui->cursor.type = REMMINA_RDP_POINTER_FREE;
remmina_rdp_event_queue_ui_sync_retint(rfi->protocol_widget, ui);
}
@@ -233,11 +224,11 @@ BOOL rf_Pointer_Set(rdpContext* context, const rdpPointer* pointer)
{
TRACE_CALL("__func__");
RemminaPluginRdpUiObject* ui;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
ui = g_new0(RemminaPluginRdpUiObject, 1);
ui->type = REMMINA_RDP_UI_CURSOR;
- ui->cursor.pointer = (rfPointer*) pointer;
+ ui->cursor.pointer = (rfPointer*)pointer;
ui->cursor.type = REMMINA_RDP_POINTER_SET;
return remmina_rdp_event_queue_ui_sync_retint(rfi->protocol_widget, ui) ? TRUE : FALSE;
@@ -248,7 +239,7 @@ BOOL rf_Pointer_SetNull(rdpContext* context)
{
TRACE_CALL("__func__");
RemminaPluginRdpUiObject* ui;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
ui = g_new0(RemminaPluginRdpUiObject, 1);
ui->type = REMMINA_RDP_UI_CURSOR;
@@ -261,7 +252,7 @@ BOOL rf_Pointer_SetDefault(rdpContext* context)
{
TRACE_CALL("__func__");
RemminaPluginRdpUiObject* ui;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
ui = g_new0(RemminaPluginRdpUiObject, 1);
ui->type = REMMINA_RDP_UI_CURSOR;
@@ -274,7 +265,7 @@ BOOL rf_Pointer_SetPosition(rdpContext* context, UINT32 x, UINT32 y)
{
TRACE_CALL("__func__");
RemminaPluginRdpUiObject* ui;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
ui = g_new0(RemminaPluginRdpUiObject, 1);
ui->type = REMMINA_RDP_UI_CURSOR;
ui->cursor.type = REMMINA_RDP_POINTER_SETPOS;
@@ -295,15 +286,15 @@ BOOL rf_Glyph_New(rdpContext* context, const rdpGlyph* glyph)
rfContext* rfi;
rfGlyph* rf_glyph;
- rf_glyph = (rfGlyph*) glyph;
- rfi = (rfContext*) context;
+ rf_glyph = (rfGlyph*)glyph;
+ rfi = (rfContext*)context;
scanline = (glyph->cx + 7) / 8;
rf_glyph->pixmap = XCreatePixmap(rfi->display, rfi->drawing, glyph->cx, glyph->cy, 1);
image = XCreateImage(rfi->display, rfi->visual, 1,
- ZPixmap, 0, (char*) glyph->aj, glyph->cx, glyph->cy, 8, scanline);
+ ZPixmap, 0, (char*)glyph->aj, glyph->cx, glyph->cy, 8, scanline);
image->byte_order = MSBFirst;
image->bitmap_bit_order = MSBFirst;
@@ -319,23 +310,23 @@ void rf_Glyph_Free(rdpContext* context, rdpGlyph* glyph)
{
TRACE_CALL("__func__");
#ifdef RF_GLYPH
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
- if (((rfGlyph*) glyph)->pixmap != 0)
- XFreePixmap(rfi->display, ((rfGlyph*) glyph)->pixmap);
+ if (((rfGlyph*)glyph)->pixmap != 0)
+ XFreePixmap(rfi->display, ((rfGlyph*)glyph)->pixmap);
#endif
}
static BOOL rf_Glyph_Draw(rdpContext* context, const rdpGlyph* glyph, UINT32 x,
- UINT32 y, UINT32 w, UINT32 h, UINT32 sx, UINT32 sy,
- BOOL fOpRedundant)
+ UINT32 y, UINT32 w, UINT32 h, UINT32 sx, UINT32 sy,
+ BOOL fOpRedundant)
{
TRACE_CALL("__func__");
#ifdef RF_GLYPH
rfGlyph* rf_glyph;
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
- rf_glyph = (rfGlyph*) glyph;
+ rf_glyph = (rfGlyph*)glyph;
XSetStipple(rfi->display, rfi->gc, rf_glyph->pixmap);
XSetTSOrigin(rfi->display, rfi->gc, x, y);
@@ -346,20 +337,20 @@ static BOOL rf_Glyph_Draw(rdpContext* context, const rdpGlyph* glyph, UINT32 x,
}
static BOOL rf_Glyph_BeginDraw(rdpContext* context, UINT32 x, UINT32 y,
- UINT32 width, UINT32 height, UINT32 bgcolor,
- UINT32 fgcolor, BOOL fOpRedundant)
+ UINT32 width, UINT32 height, UINT32 bgcolor,
+ UINT32 fgcolor, BOOL fOpRedundant)
{
TRACE_CALL("__func__");
#ifdef RF_GLYPH
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
- bgcolor = (rfi->clrconv->invert)?
- freerdp_color_convert_var_bgr(bgcolor, rfi->srcBpp, 32, rfi->clrconv):
- freerdp_color_convert_var_rgb(bgcolor, rfi->srcBpp, 32, rfi->clrconv);
+ bgcolor = (rfi->clrconv->invert) ?
+ freerdp_color_convert_var_bgr(bgcolor, rfi->srcBpp, 32, rfi->clrconv) :
+ freerdp_color_convert_var_rgb(bgcolor, rfi->srcBpp, 32, rfi->clrconv);
- fgcolor = (rfi->clrconv->invert)?
- freerdp_color_convert_var_bgr(fgcolor, rfi->srcBpp, 32, rfi->clrconv):
- freerdp_color_convert_var_rgb(fgcolor, rfi->srcBpp, 32, rfi->clrconv);
+ fgcolor = (rfi->clrconv->invert) ?
+ freerdp_color_convert_var_bgr(fgcolor, rfi->srcBpp, 32, rfi->clrconv) :
+ freerdp_color_convert_var_rgb(fgcolor, rfi->srcBpp, 32, rfi->clrconv);
XSetFunction(rfi->display, rfi->gc, GXcopy);
XSetFillStyle(rfi->display, rfi->gc, FillSolid);
@@ -374,15 +365,14 @@ static BOOL rf_Glyph_BeginDraw(rdpContext* context, UINT32 x, UINT32 y,
}
static BOOL rf_Glyph_EndDraw(rdpContext* context, UINT32 x, UINT32 y,
- UINT32 width, UINT32 height,
- UINT32 bgcolor, UINT32 fgcolor)
+ UINT32 width, UINT32 height,
+ UINT32 bgcolor, UINT32 fgcolor)
{
TRACE_CALL("__func__");
#ifdef RF_GLYPH
- rfContext* rfi = (rfContext*) context;
+ rfContext* rfi = (rfContext*)context;
- if (rfi->drawing == rfi->primary)
- {
+ if (rfi->drawing == rfi->primary) {
//XCopyArea(rfi->display, rfi->primary, rfi->drawable, rfi->gc, x, y, width, height, x, y);
//gdi_InvalidateRegion(rfi->hdc, x, y, width, height);
}
@@ -399,7 +389,7 @@ void rf_register_graphics(rdpGraphics* graphics)
rdpPointer* pointer;
rdpGlyph* glyph;
- bitmap = (rdpBitmap*) malloc(sizeof(rdpBitmap));
+ bitmap = (rdpBitmap*)malloc(sizeof(rdpBitmap));
ZeroMemory(bitmap, sizeof(rdpBitmap));
bitmap->size = sizeof(rfBitmap);
@@ -412,7 +402,7 @@ void rf_register_graphics(rdpGraphics* graphics)
graphics_register_bitmap(graphics, bitmap);
free(bitmap);
- pointer = (rdpPointer*) malloc(sizeof(rdpPointer));
+ pointer = (rdpPointer*)malloc(sizeof(rdpPointer));
ZeroMemory(pointer, sizeof(rdpPointer));
pointer->size = sizeof(rfPointer);
@@ -428,7 +418,7 @@ void rf_register_graphics(rdpGraphics* graphics)
free(pointer);
- glyph = (rdpGlyph*) malloc(sizeof(rdpGlyph));
+ glyph = (rdpGlyph*)malloc(sizeof(rdpGlyph));
ZeroMemory(glyph, sizeof(rdpGlyph));
glyph->size = sizeof(rfGlyph);
diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c
index 9f20fe413..6cf7807b2 100644
--- a/remmina-plugins/rdp/rdp_plugin.c
+++ b/remmina-plugins/rdp/rdp_plugin.c
@@ -58,13 +58,13 @@
#define REMMINA_RDP_FEATURE_SCALE 2
#define REMMINA_RDP_FEATURE_UNFOCUS 3
#define REMMINA_RDP_FEATURE_TOOL_SENDCTRLALTDEL 4
-#define REMMINA_RDP_FEATURE_DYNRESUPDATE 5
+#define REMMINA_RDP_FEATURE_DYNRESUPDATE 5
/* Some string settings of freerdp are preallocated buffers of N bytes */
-#define FREERDP_CLIENTHOSTNAME_LEN 32
+#define FREERDP_CLIENTHOSTNAME_LEN 32
RemminaPluginService* remmina_plugin_service = NULL;
-static char remmina_rdp_plugin_default_drive_name[]="RemminaDisk";
+static char remmina_rdp_plugin_default_drive_name[] = "RemminaDisk";
static BOOL rf_process_event_queue(RemminaProtocolWidget* gp)
{
@@ -80,63 +80,61 @@ static BOOL rf_process_event_queue(RemminaProtocolWidget* gp)
input = rfi->instance->input;
- while ((event =(RemminaPluginRdpEvent*) g_async_queue_try_pop(rfi->event_queue)) != NULL)
- {
- switch (event->type)
- {
- case REMMINA_RDP_EVENT_TYPE_SCANCODE:
- flags = event->key_event.extended ? KBD_FLAGS_EXTENDED : 0;
- flags |= event->key_event.up ? KBD_FLAGS_RELEASE : KBD_FLAGS_DOWN;
- input->KeyboardEvent(input, flags, event->key_event.key_code);
- break;
+ while ((event = (RemminaPluginRdpEvent*)g_async_queue_try_pop(rfi->event_queue)) != NULL) {
+ switch (event->type) {
+ case REMMINA_RDP_EVENT_TYPE_SCANCODE:
+ flags = event->key_event.extended ? KBD_FLAGS_EXTENDED : 0;
+ flags |= event->key_event.up ? KBD_FLAGS_RELEASE : KBD_FLAGS_DOWN;
+ input->KeyboardEvent(input, flags, event->key_event.key_code);
+ break;
- case REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE:
- /*
- * TS_UNICODE_KEYBOARD_EVENT RDP message, see https://msdn.microsoft.com/en-us/library/cc240585.aspx
- */
- flags = event->key_event.up ? KBD_FLAGS_RELEASE : KBD_FLAGS_DOWN;
- input->UnicodeKeyboardEvent(input, flags, event->key_event.unicode_code);
- break;
+ case REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE:
+ /*
+ * TS_UNICODE_KEYBOARD_EVENT RDP message, see https://msdn.microsoft.com/en-us/library/cc240585.aspx
+ */
+ flags = event->key_event.up ? KBD_FLAGS_RELEASE : KBD_FLAGS_DOWN;
+ input->UnicodeKeyboardEvent(input, flags, event->key_event.unicode_code);
+ break;
- case REMMINA_RDP_EVENT_TYPE_MOUSE:
- if (event->mouse_event.extended)
- input->ExtendedMouseEvent(input, event->mouse_event.flags,
- event->mouse_event.x, event->mouse_event.y);
- else
- input->MouseEvent(input, event->mouse_event.flags,
- event->mouse_event.x, event->mouse_event.y);
- break;
+ case REMMINA_RDP_EVENT_TYPE_MOUSE:
+ if (event->mouse_event.extended)
+ input->ExtendedMouseEvent(input, event->mouse_event.flags,
+ event->mouse_event.x, event->mouse_event.y);
+ else
+ input->MouseEvent(input, event->mouse_event.flags,
+ event->mouse_event.x, event->mouse_event.y);
+ break;
- case REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_LIST:
- rfi->clipboard.context->ClientFormatList(rfi->clipboard.context, event->clipboard_formatlist.pFormatList);
- free(event->clipboard_formatlist.pFormatList);
- break;
+ case REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_LIST:
+ rfi->clipboard.context->ClientFormatList(rfi->clipboard.context, event->clipboard_formatlist.pFormatList);
+ free(event->clipboard_formatlist.pFormatList);
+ break;
- case REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_DATA_RESPONSE:
- rfi->clipboard.context->ClientFormatDataResponse(rfi->clipboard.context, event->clipboard_formatdataresponse.pFormatDataResponse);
- if (event->clipboard_formatdataresponse.pFormatDataResponse->requestedFormatData)
- free(event->clipboard_formatdataresponse.pFormatDataResponse->requestedFormatData);
- free(event->clipboard_formatdataresponse.pFormatDataResponse);
- break;
+ case REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_DATA_RESPONSE:
+ rfi->clipboard.context->ClientFormatDataResponse(rfi->clipboard.context, event->clipboard_formatdataresponse.pFormatDataResponse);
+ if (event->clipboard_formatdataresponse.pFormatDataResponse->requestedFormatData)
+ free(event->clipboard_formatdataresponse.pFormatDataResponse->requestedFormatData);
+ free(event->clipboard_formatdataresponse.pFormatDataResponse);
+ break;
- case REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_DATA_REQUEST:
- rfi->clipboard.context->ClientFormatDataRequest(rfi->clipboard.context, event->clipboard_formatdatarequest.pFormatDataRequest);
- free(event->clipboard_formatdatarequest.pFormatDataRequest);
- break;
+ case REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_DATA_REQUEST:
+ rfi->clipboard.context->ClientFormatDataRequest(rfi->clipboard.context, event->clipboard_formatdatarequest.pFormatDataRequest);
+ free(event->clipboard_formatdatarequest.pFormatDataRequest);
+ break;
- case REMMINA_RDP_EVENT_TYPE_SEND_MONITOR_LAYOUT:
- dcml = g_malloc0(sizeof(DISPLAY_CONTROL_MONITOR_LAYOUT));
- if (dcml) {
- dcml->Flags = DISPLAY_CONTROL_MONITOR_PRIMARY;
- dcml->Width = event->monitor_layout.width;
- dcml->Height = event->monitor_layout.height;
- dcml->Orientation = event->monitor_layout.desktopOrientation;
- dcml->DesktopScaleFactor = event->monitor_layout.desktopScaleFactor;
- dcml->DeviceScaleFactor = event->monitor_layout.deviceScaleFactor;
- rfi->dispcontext->SendMonitorLayout(rfi->dispcontext, 1, dcml);
- g_free(dcml);
- }
- break;
+ case REMMINA_RDP_EVENT_TYPE_SEND_MONITOR_LAYOUT:
+ dcml = g_malloc0(sizeof(DISPLAY_CONTROL_MONITOR_LAYOUT));
+ if (dcml) {
+ dcml->Flags = DISPLAY_CONTROL_MONITOR_PRIMARY;
+ dcml->Width = event->monitor_layout.width;
+ dcml->Height = event->monitor_layout.height;
+ dcml->Orientation = event->monitor_layout.desktopOrientation;
+ dcml->DesktopScaleFactor = event->monitor_layout.desktopScaleFactor;
+ dcml->DeviceScaleFactor = event->monitor_layout.deviceScaleFactor;
+ rfi->dispcontext->SendMonitorLayout(rfi->dispcontext, 1, dcml);
+ g_free(dcml);
+ }
+ break;
}
g_free(event);
@@ -191,12 +189,9 @@ static gboolean remmina_rdp_tunnel_init(RemminaProtocolWidget* gp)
rfi->settings->ServerHostname = strdup(host);
- if (cert_port == 3389)
- {
+ if (cert_port == 3389) {
rfi->settings->CertificateName = strdup(cert_host);
- }
- else
- {
+ }else {
s = g_strdup_printf("%s:%d", cert_host, cert_port);
rfi->settings->CertificateName = strdup(s);
g_free(s);
@@ -229,8 +224,7 @@ BOOL rf_auto_reconnect(rfContext* rfi)
return FALSE;
}
- if (!settings->AutoReconnectionEnabled)
- {
+ if (!settings->AutoReconnectionEnabled) {
/* No auto-reconnect - just quit */
rfi->is_reconnecting = FALSE;
return FALSE;
@@ -252,11 +246,9 @@ BOOL rf_auto_reconnect(rfContext* rfi)
usleep(500000);
/* Perform an auto-reconnect. */
- while (TRUE)
- {
+ while (TRUE) {
/* Quit retrying if max retries has been exceeded */
- if (rfi->reconnect_nattempt++ >= rfi->reconnect_maxattempts)
- {
+ if (rfi->reconnect_nattempt++ >= rfi->reconnect_maxattempts) {
remmina_plugin_service->log_printf("[RDP][%s] maximum number of reconnection attempts exceeded.\n",
rfi->settings->ServerHostname);
break;
@@ -277,8 +269,7 @@ BOOL rf_auto_reconnect(rfContext* rfi)
remmina_plugin_service->log_printf("[RDP][%s] unable to recreate tunnel with remmina_rdp_tunnel_init.\n",
rfi->settings->ServerHostname);
} else {
- if (freerdp_reconnect(rfi->instance))
- {
+ if (freerdp_reconnect(rfi->instance)) {
/* Reconnection is successful */
remmina_plugin_service->log_printf("[RDP][%s] reconnection successful.\n",
rfi->settings->ServerHostname);
@@ -316,7 +307,7 @@ BOOL rf_end_paint(rdpContext* context)
RemminaPluginRdpUiObject* ui;
gdi = context->gdi;
- rfi = (rfContext*) context;
+ rfi = (rfContext*)context;
gp = rfi->protocol_widget;
if (gdi->primary->hdc->hwnd->invalid->null)
@@ -346,7 +337,7 @@ static BOOL rf_desktop_resize(rdpContext* context)
RemminaProtocolWidget* gp;
RemminaPluginRdpUiObject* ui;
- rfi = (rfContext*) context;
+ rfi = (rfContext*)context;
gp = rfi->protocol_widget;
remmina_plugin_service->protocol_plugin_set_width(gp, rfi->settings->DesktopWidth);
@@ -371,7 +362,7 @@ static BOOL remmina_rdp_pre_connect(freerdp* instance)
ALIGN64 rdpSettings* settings;
RemminaProtocolWidget* gp;
- rfi = (rfContext*) instance->context;
+ rfi = (rfContext*)instance->context;
settings = instance->settings;
gp = rfi->protocol_widget;
@@ -408,8 +399,7 @@ static BOOL remmina_rdp_pre_connect(freerdp* instance)
settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = False;
settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = False;
- if (settings->RemoteFxCodec == True)
- {
+ if (settings->RemoteFxCodec == True) {
settings->FrameAcknowledge = False;
settings->LargePointerFlag = True;
settings->PerformanceFlags = PERF_FLAG_NONE;
@@ -437,19 +427,17 @@ static UINT32 rf_get_local_color_format(rfContext* rfi, BOOL aligned)
if (rfi->bpp == 32)
DstFormat = (!invert) ? PIXEL_FORMAT_RGBA32 : PIXEL_FORMAT_BGRA32;
- else if (rfi->bpp == 24)
- {
+ else if (rfi->bpp == 24) {
if (aligned)
DstFormat = (!invert) ? PIXEL_FORMAT_RGBX32 : PIXEL_FORMAT_BGRX32;
else
DstFormat = (!invert) ? PIXEL_FORMAT_RGB24 : PIXEL_FORMAT_BGR24;
- }
- else if (rfi->bpp == 16)
- DstFormat = (!invert) ? PIXEL_FORMAT_RGB16 : PIXEL_FORMAT_BGR16;
+ }else if (rfi->bpp == 16)
+ DstFormat = (!invert) ? PIXEL_FORMAT_RGB16 : PIXEL_FORMAT_BGR16;
else if (rfi->bpp == 15)
- DstFormat = (!invert) ? PIXEL_FORMAT_RGB16 : PIXEL_FORMAT_BGR16;
+ DstFormat = (!invert) ? PIXEL_FORMAT_RGB16 : PIXEL_FORMAT_BGR16;
else
- DstFormat = (!invert) ? PIXEL_FORMAT_RGBX32 : PIXEL_FORMAT_BGRX32;
+ DstFormat = (!invert) ? PIXEL_FORMAT_RGBX32 : PIXEL_FORMAT_BGRX32;
return DstFormat;
}
@@ -464,7 +452,7 @@ static BOOL remmina_rdp_post_connect(freerdp* instance)
rdpGdi* gdi;
int hdcBytesPerPixel, hdcBitsPerPixel;
- rfi = (rfContext*) instance->context;
+ rfi = (rfContext*)instance->context;
gp = rfi->protocol_widget;
rfi->width = rfi->settings->DesktopWidth;
@@ -476,20 +464,15 @@ static BOOL remmina_rdp_post_connect(freerdp* instance)
rf_register_graphics(instance->context->graphics);
- if (rfi->bpp == 32)
- {
+ if (rfi->bpp == 32) {
hdcBytesPerPixel = 4;
hdcBitsPerPixel = 32;
rfi->cairo_format = CAIRO_FORMAT_ARGB32;
- }
- else if (rfi->bpp == 24)
- {
+ }else if (rfi->bpp == 24) {
hdcBytesPerPixel = 4;
hdcBitsPerPixel = 32;
rfi->cairo_format = CAIRO_FORMAT_RGB24;
- }
- else
- {
+ }else {
hdcBytesPerPixel = 2;
hdcBitsPerPixel = 16;
rfi->cairo_format = CAIRO_FORMAT_RGB16_565;
@@ -500,18 +483,18 @@ static BOOL remmina_rdp_post_connect(freerdp* instance)
rfi->primary_buffer = gdi->primary_buffer;
/* rfi->hdc = gdi_GetDC();
- rfi->hdc->bitsPerPixel = hdcBitsPerPixel;
- rfi->hdc->bytesPerPixel = hdcBytesPerPixel;
+ rfi->hdc->bitsPerPixel = hdcBitsPerPixel;
+ rfi->hdc->bytesPerPixel = hdcBytesPerPixel;
- rfi->hdc->hwnd = (HGDI_WND) malloc(sizeof(GDI_WND));
- rfi->hdc->hwnd->invalid = gdi_CreateRectRgn(0, 0, 0, 0);
- rfi->hdc->hwnd->invalid->null = 1;
+ rfi->hdc->hwnd = (HGDI_WND) malloc(sizeof(GDI_WND));
+ rfi->hdc->hwnd->invalid = gdi_CreateRectRgn(0, 0, 0, 0);
+ rfi->hdc->hwnd->invalid->null = 1;
- rfi->hdc->hwnd->count = 32;
- rfi->hdc->hwnd->cinvalid = (HGDI_RGN) malloc(sizeof(GDI_RGN) * rfi->hdc->hwnd->count);
- rfi->hdc->hwnd->ninvalid = 0;
- *
-*/
+ rfi->hdc->hwnd->count = 32;
+ rfi->hdc->hwnd->cinvalid = (HGDI_RGN) malloc(sizeof(GDI_RGN) * rfi->hdc->hwnd->count);
+ rfi->hdc->hwnd->ninvalid = 0;
+ *
+ */
pointer_cache_register_callbacks(instance->update);
@@ -540,14 +523,13 @@ static BOOL remmina_rdp_authenticate(freerdp* instance, char** username, char**
gboolean disablepasswordstoring;
RemminaFile* remminafile;
- rfi = (rfContext*) instance->context;
+ rfi = (rfContext*)instance->context;
gp = rfi->protocol_widget;
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
disablepasswordstoring = remmina_plugin_service->file_get_int(remminafile, "disablepasswordstoring", FALSE);
ret = remmina_plugin_service->protocol_plugin_init_authuserpwd(gp, TRUE, !disablepasswordstoring);
- if (ret == GTK_RESPONSE_OK)
- {
+ if (ret == GTK_RESPONSE_OK) {
s_username = remmina_plugin_service->protocol_plugin_init_get_username(gp);
if (s_username) rfi->settings->Username = strdup(s_username);
@@ -558,8 +540,7 @@ static BOOL remmina_rdp_authenticate(freerdp* instance, char** username, char**
if (s_domain) rfi->settings->Domain = strdup(s_domain);
save = remmina_plugin_service->protocol_plugin_init_get_savepassword(gp);
- if (save)
- {
+ if (save) {
// User has requested to save credentials. We put all the new cretentials
// into remminafile->settings. They will be saved later, on successful connection, by
// remmina_connection_window.c
@@ -575,9 +556,7 @@ static BOOL remmina_rdp_authenticate(freerdp* instance, char** username, char**
if ( s_domain ) g_free( s_domain );
return True;
- }
- else
- {
+ }else {
rfi->user_cancelled = TRUE;
return False;
}
@@ -586,14 +565,14 @@ static BOOL remmina_rdp_authenticate(freerdp* instance, char** username, char**
}
static DWORD remmina_rdp_verify_certificate(freerdp* instance, const char *common_name, const char* subject,
- const char* issuer, const char* fingerprint, BOOL host_mismatch)
+ const char* issuer, const char* fingerprint, BOOL host_mismatch)
{
TRACE_CALL("__func__");
gint status;
rfContext* rfi;
RemminaProtocolWidget* gp;
- rfi = (rfContext*) instance->context;
+ rfi = (rfContext*)instance->context;
gp = rfi->protocol_widget;
status = remmina_plugin_service->protocol_plugin_init_certificate(gp, subject, issuer, fingerprint);
@@ -604,15 +583,15 @@ static DWORD remmina_rdp_verify_certificate(freerdp* instance, const char *commo
return 1;
}
static DWORD remmina_rdp_verify_changed_certificate(freerdp* instance,
- const char* common_name, const char* subject, const char* issuer,
- const char* new_fingerprint, const char* old_subject, const char* old_issuer, const char* old_fingerprint)
+ const char* common_name, const char* subject, const char* issuer,
+ const char* new_fingerprint, const char* old_subject, const char* old_issuer, const char* old_fingerprint)
{
TRACE_CALL("__func__");
gint status;
rfContext* rfi;
RemminaProtocolWidget* gp;
- rfi = (rfContext*) instance->context;
+ rfi = (rfContext*)instance->context;
gp = rfi->protocol_widget;
status = remmina_plugin_service->protocol_plugin_changed_certificate(gp, subject, issuer, new_fingerprint, old_fingerprint);
@@ -632,41 +611,34 @@ static void remmina_rdp_main_loop(RemminaProtocolWidget* gp)
gchar buf[100];
rfContext* rfi = GET_PLUGIN_DATA(gp);
- while (!freerdp_shall_disconnect(rfi->instance))
- {
+ while (!freerdp_shall_disconnect(rfi->instance)) {
nCount = freerdp_get_event_handles(rfi->instance->context, &handles[0], 64);
- if (rfi->event_handle)
- {
+ if (rfi->event_handle) {
handles[nCount++] = rfi->event_handle;
}
- if (nCount == 0)
- {
+ if (nCount == 0) {
fprintf(stderr, "freerdp_get_event_handles failed\n");
break;
}
status = WaitForMultipleObjects(nCount, handles, FALSE, 100);
- if (status == WAIT_FAILED)
- {
+ if (status == WAIT_FAILED) {
fprintf(stderr, "WaitForMultipleObjects failed with %lu\n", (unsigned long)status);
break;
}
if (rfi->event_handle && WaitForSingleObject(rfi->event_handle, 0) == WAIT_OBJECT_0) {
- if (!rf_process_event_queue(gp))
- {
+ if (!rf_process_event_queue(gp)) {
fprintf(stderr, "Failed to process local kb/mouse event queue\n");
break;
}
- if (read(rfi->event_pipe[0], buf, sizeof (buf)))
- {
+ if (read(rfi->event_pipe[0], buf, sizeof(buf))) {
}
}
- if (!freerdp_check_event_handles(rfi->instance->context))
- {
+ if (!freerdp_check_event_handles(rfi->instance->context)) {
if (rf_auto_reconnect(rfi)) {
/* Reset the possible reason/error which made us doing many reconnection reattempts and continue */
remmina_plugin_service->protocol_plugin_set_error(gp, NULL);
@@ -684,10 +656,8 @@ int remmina_rdp_load_static_channel_addin(rdpChannels* channels, rdpSettings* se
void* entry;
entry = freerdp_load_channel_addin_entry(name, NULL, NULL, FREERDP_ADDIN_CHANNEL_STATIC);
- if (entry)
- {
- if (freerdp_channels_client_load(channels, settings, entry, data) == 0)
- {
+ if (entry) {
+ if (freerdp_channels_client_load(channels, settings, entry, data) == 0) {
fprintf(stderr, "loading channel %s\n", name);
return 0;
}
@@ -740,8 +710,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
rfi->settings->ColorDepth = remmina_plugin_service->file_get_int(remminafile, "colordepth", 0);
- if (rfi->settings->ColorDepth == 0)
- {
+ if (rfi->settings->ColorDepth == 0) {
rfi->settings->RemoteFxCodec = True;
rfi->settings->ColorDepth = 32;
}
@@ -766,16 +735,14 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
s = remmina_plugin_service->file_get_string(remminafile, "password");
- if (s)
- {
+ if (s) {
rfi->settings->Password = strdup(s);
rfi->settings->AutoLogonEnabled = 1;
}
/* Remote Desktop Gateway server address */
rfi->settings->GatewayEnabled = FALSE;
s = remmina_plugin_service->file_get_string(remminafile, "gateway_server");
- if (s)
- {
+ if (s) {
remmina_plugin_service->get_server_port(s, 443, &gateway_host, &gateway_port);
rfi->settings->GatewayHostname = gateway_host;
rfi->settings->GatewayPort = gateway_port;
@@ -783,28 +750,24 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
rfi->settings->GatewayUseSameCredentials = TRUE;
}
/* Remote Desktop Gateway domain */
- if (remmina_plugin_service->file_get_string(remminafile, "gateway_domain"))
- {
+ if (remmina_plugin_service->file_get_string(remminafile, "gateway_domain")) {
rfi->settings->GatewayDomain = strdup(remmina_plugin_service->file_get_string(remminafile, "gateway_domain"));
rfi->settings->GatewayUseSameCredentials = FALSE;
}
/* Remote Desktop Gateway username */
- if (remmina_plugin_service->file_get_string(remminafile, "gateway_username"))
- {
+ if (remmina_plugin_service->file_get_string(remminafile, "gateway_username")) {
rfi->settings->GatewayUsername = strdup(remmina_plugin_service->file_get_string(remminafile, "gateway_username"));
rfi->settings->GatewayUseSameCredentials = FALSE;
}
/* Remote Desktop Gateway password */
s = remmina_plugin_service->file_get_string(remminafile, "gateway_password");
- if(s)
- {
+ if (s) {
rfi->settings->GatewayPassword = strdup(s);
rfi->settings->GatewayUseSameCredentials = FALSE;
}
/* If no different credentials were provided for the Remote Desktop Gateway
* use the same authentication credentials for the host */
- if (rfi->settings->GatewayEnabled && rfi->settings->GatewayUseSameCredentials)
- {
+ if (rfi->settings->GatewayEnabled && rfi->settings->GatewayUseSameCredentials) {
g_free(rfi->settings->GatewayDomain);
rfi->settings->GatewayDomain = g_strdup(rfi->settings->Domain);
g_free(rfi->settings->GatewayUsername);
@@ -815,34 +778,28 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
/* Remote Desktop Gateway usage */
if (rfi->settings->GatewayEnabled)
freerdp_set_gateway_usage_method(rfi->settings,
- remmina_plugin_service->file_get_int(remminafile, "gateway_usage", FALSE) ? TSC_PROXY_MODE_DETECT : TSC_PROXY_MODE_DIRECT);
+ remmina_plugin_service->file_get_int(remminafile, "gateway_usage", FALSE) ? TSC_PROXY_MODE_DETECT : TSC_PROXY_MODE_DIRECT);
/* Certificate ignore */
rfi->settings->IgnoreCertificate = remmina_plugin_service->file_get_int(remminafile, "cert_ignore", 0);
/* ClientHostname is internally preallocated to 32 bytes by libfreerdp */
- if ((cs=remmina_plugin_service->file_get_string(remminafile, "clientname")))
- {
- strncpy(rfi->settings->ClientHostname, cs, FREERDP_CLIENTHOSTNAME_LEN-1);
+ if ((cs = remmina_plugin_service->file_get_string(remminafile, "clientname"))) {
+ strncpy(rfi->settings->ClientHostname, cs, FREERDP_CLIENTHOSTNAME_LEN - 1);
+ }else {
+ strncpy(rfi->settings->ClientHostname, g_get_host_name(), FREERDP_CLIENTHOSTNAME_LEN - 1);
}
- else
- {
- strncpy(rfi->settings->ClientHostname, g_get_host_name(), FREERDP_CLIENTHOSTNAME_LEN-1);
- }
- rfi->settings->ClientHostname[FREERDP_CLIENTHOSTNAME_LEN-1]=0;
+ rfi->settings->ClientHostname[FREERDP_CLIENTHOSTNAME_LEN - 1] = 0;
- if (remmina_plugin_service->file_get_string(remminafile, "loadbalanceinfo"))
- {
- rfi->settings->LoadBalanceInfo = (BYTE*) strdup(remmina_plugin_service->file_get_string(remminafile, "loadbalanceinfo"));
- rfi->settings->LoadBalanceInfoLength = (UINT32) strlen((char *) rfi->settings->LoadBalanceInfo);
+ if (remmina_plugin_service->file_get_string(remminafile, "loadbalanceinfo")) {
+ rfi->settings->LoadBalanceInfo = (BYTE*)strdup(remmina_plugin_service->file_get_string(remminafile, "loadbalanceinfo"));
+ rfi->settings->LoadBalanceInfoLength = (UINT32)strlen((char*)rfi->settings->LoadBalanceInfo);
}
- if (remmina_plugin_service->file_get_string(remminafile, "exec"))
- {
+ if (remmina_plugin_service->file_get_string(remminafile, "exec")) {
rfi->settings->AlternateShell = strdup(remmina_plugin_service->file_get_string(remminafile, "exec"));
}
- if (remmina_plugin_service->file_get_string(remminafile, "execpath"))
- {
+ if (remmina_plugin_service->file_get_string(remminafile, "execpath")) {
rfi->settings->ShellWorkingDirectory = strdup(remmina_plugin_service->file_get_string(remminafile, "execpath"));
}
@@ -850,30 +807,26 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
value = remmina_plugin_service->pref_get_value(sm);
g_free(sm);
- if (value && value[0])
- {
+ if (value && value[0]) {
rfi->settings->PerformanceFlags = strtoul(value, NULL, 16);
- }
- else
- {
- switch (remmina_plugin_service->file_get_int(remminafile, "quality", DEFAULT_QUALITY_0))
- {
- case 9:
- rfi->settings->PerformanceFlags = DEFAULT_QUALITY_9;
- break;
+ }else {
+ switch (remmina_plugin_service->file_get_int(remminafile, "quality", DEFAULT_QUALITY_0)) {
+ case 9:
+ rfi->settings->PerformanceFlags = DEFAULT_QUALITY_9;
+ break;
- case 2:
- rfi->settings->PerformanceFlags = DEFAULT_QUALITY_2;
- break;
+ case 2:
+ rfi->settings->PerformanceFlags = DEFAULT_QUALITY_2;
+ break;
- case 1:
- rfi->settings->PerformanceFlags = DEFAULT_QUALITY_1;
- break;
+ case 1:
+ rfi->settings->PerformanceFlags = DEFAULT_QUALITY_1;
+ break;
- case 0:
- default:
- rfi->settings->PerformanceFlags = DEFAULT_QUALITY_0;
- break;
+ case 0:
+ default:
+ rfi->settings->PerformanceFlags = DEFAULT_QUALITY_0;
+ break;
}
}
g_free(value);
@@ -881,13 +834,12 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
/* PerformanceFlags bitmask need also to be splitted into BOOL variables
* like rfi->settings->DisableWallpaper, rfi->settings->AllowFontSmoothing...
* or freerdp_get_param_bool() function will return the wrong value
- */
+ */
freerdp_performance_flags_split(rfi->settings);
rfi->settings->KeyboardLayout = remmina_rdp_settings_get_keyboard_layout();
- if (remmina_plugin_service->file_get_int(remminafile, "console", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "console", FALSE)) {
rfi->settings->ConsoleSession = True;
}
@@ -895,23 +847,18 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
- if (g_strcmp0(cs, "rdp") == 0)
- {
+ if (g_strcmp0(cs, "rdp") == 0) {
rfi->settings->RdpSecurity = True;
rfi->settings->TlsSecurity = False;
rfi->settings->NlaSecurity = False;
rfi->settings->ExtSecurity = False;
rfi->settings->UseRdpSecurityLayer = True;
- }
- else if (g_strcmp0(cs, "tls") == 0)
- {
+ }else if (g_strcmp0(cs, "tls") == 0) {
rfi->settings->RdpSecurity = False;
rfi->settings->TlsSecurity = True;
rfi->settings->NlaSecurity = False;
rfi->settings->ExtSecurity = False;
- }
- else if (g_strcmp0(cs, "nla") == 0)
- {
+ }else if (g_strcmp0(cs, "nla") == 0) {
rfi->settings->RdpSecurity = False;
rfi->settings->TlsSecurity = False;
rfi->settings->NlaSecurity = True;
@@ -929,8 +876,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
remmina_rdp_settings_get_orientation_scale_prefs(&desktopOrientation, &desktopScaleFactor, &deviceScaleFactor);
rfi->settings->DesktopOrientation = desktopOrientation;
- if (desktopScaleFactor != 0 && deviceScaleFactor != 0)
- {
+ if (desktopScaleFactor != 0 && deviceScaleFactor != 0) {
rfi->settings->DesktopScaleFactor = desktopScaleFactor;
rfi->settings->DeviceScaleFactor = deviceScaleFactor;
}
@@ -942,30 +888,23 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
cs = remmina_plugin_service->file_get_string(remminafile, "sound");
- if (g_strcmp0(cs, "remote") == 0)
- {
+ if (g_strcmp0(cs, "remote") == 0) {
rfi->settings->RemoteConsoleAudio = 1;
- }
- else if (g_str_has_prefix(cs, "local"))
- {
+ }else if (g_str_has_prefix(cs, "local")) {
rdpsnd_nparams = 0;
rdpsnd_params[rdpsnd_nparams++] = "rdpsnd";
cs = strchr(cs, ',');
- if (cs)
- {
+ if (cs) {
rdpsnd_rate = atoi(cs + 1);
- if (rdpsnd_rate > 1000 && rdpsnd_rate < 150000)
- {
+ if (rdpsnd_rate > 1000 && rdpsnd_rate < 150000) {
snprintf( rdpsnd_param1, sizeof(rdpsnd_param1), "rate:%d", rdpsnd_rate );
rdpsnd_params[rdpsnd_nparams++] = rdpsnd_param1;
- cs = strchr(cs +1, ',');
- if (cs)
- {
+ cs = strchr(cs + 1, ',');
+ if (cs) {
rdpsnd_channel = atoi(cs + 1);
- if (rdpsnd_channel >= 1 && rdpsnd_channel <= 2)
- {
+ if (rdpsnd_channel >= 1 && rdpsnd_channel <= 2) {
snprintf( rdpsnd_param2, sizeof(rdpsnd_param2), "channel:%d", rdpsnd_channel );
rdpsnd_params[rdpsnd_nparams++] = rdpsnd_param2;
}
@@ -973,12 +912,11 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
}
}
- freerdp_client_add_static_channel(rfi->settings, rdpsnd_nparams, (char**) rdpsnd_params);
+ freerdp_client_add_static_channel(rfi->settings, rdpsnd_nparams, (char**)rdpsnd_params);
}
- if ( remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? TRUE : FALSE )
- {
+ if ( remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? TRUE : FALSE ) {
char* p[1];
int count;
@@ -988,16 +926,15 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
freerdp_client_add_dynamic_channel(rfi->settings, count, p);
}
- rfi->settings->RedirectClipboard = ( remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ? FALSE: TRUE );
+ rfi->settings->RedirectClipboard = ( remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ? FALSE : TRUE );
cs = remmina_plugin_service->file_get_string(remminafile, "sharefolder");
- if (cs && cs[0] == '/')
- {
+ if (cs && cs[0] == '/') {
RDPDR_DRIVE* drive;
gsize sz;
- drive = (RDPDR_DRIVE*) malloc(sizeof(RDPDR_DRIVE));
+ drive = (RDPDR_DRIVE*)malloc(sizeof(RDPDR_DRIVE));
ZeroMemory(drive, sizeof(RDPDR_DRIVE));
s = strrchr( cs, '/' );
@@ -1012,14 +949,13 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
drive->Path = _strdup(cs);
g_free(sm);
- freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*) drive);
+ freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)drive);
rfi->settings->DeviceRedirection = TRUE;
}
- if (remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE)) {
RDPDR_PRINTER* printer;
- printer = (RDPDR_PRINTER*) malloc(sizeof(RDPDR_PRINTER));
+ printer = (RDPDR_PRINTER*)malloc(sizeof(RDPDR_PRINTER));
ZeroMemory(printer, sizeof(RDPDR_PRINTER));
printer->Type = RDPDR_DTYP_PRINT;
@@ -1027,13 +963,12 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
rfi->settings->DeviceRedirection = TRUE;
rfi->settings->RedirectPrinters = TRUE;
- freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*) printer);
+ freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)printer);
}
- if (remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE)) {
RDPDR_SMARTCARD* smartcard;
- smartcard = (RDPDR_SMARTCARD*) malloc(sizeof(RDPDR_SMARTCARD));
+ smartcard = (RDPDR_SMARTCARD*)malloc(sizeof(RDPDR_SMARTCARD));
ZeroMemory(smartcard, sizeof(RDPDR_SMARTCARD));
smartcard->Type = RDPDR_DTYP_SMARTCARD;
@@ -1043,59 +978,58 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
rfi->settings->DeviceRedirection = TRUE;
rfi->settings->RedirectSmartCards = TRUE;
- freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*) smartcard);
+ freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)smartcard);
}
- if (!freerdp_connect(rfi->instance))
- {
- if (!rfi->user_cancelled)
- {
+ if (!freerdp_connect(rfi->instance)) {
+ if (!rfi->user_cancelled) {
UINT32 e;
e = freerdp_get_last_error(rfi->instance->context);
- switch(e) {
- case FREERDP_ERROR_AUTHENTICATION_FAILED:
- case STATUS_LOGON_FAILURE: // wrong return code from FreeRDP introduced at the end of July 2016 ?
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Authentication to RDP server %s failed.\nCheck username, password and domain."),
- rfi->settings->ServerHostname );
- // Invalidate the saved password, so the user will be re-asked at next logon
- remmina_plugin_service->file_unsave_password(remminafile);
- break;
- case STATUS_ACCOUNT_LOCKED_OUT:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount is locked out."),
- rfi->settings->ServerHostname );
- break;
- case STATUS_ACCOUNT_EXPIRED:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount is expired."),
- rfi->settings->ServerHostname );
- break;
- case STATUS_PASSWORD_EXPIRED:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nPassword expired."),
- rfi->settings->ServerHostname );
- break;
- case STATUS_ACCOUNT_DISABLED:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount is disabled."),
- rfi->settings->ServerHostname );
- break;
- case STATUS_ACCOUNT_RESTRICTION:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount has restrictions."),
- rfi->settings->ServerHostname );
- break;
- case FREERDP_ERROR_CONNECT_FAILED:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Connection to RDP server %s failed."), rfi->settings->ServerHostname );
- break;
- case FREERDP_ERROR_DNS_NAME_NOT_FOUND:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to find the address of RDP server %s."), rfi->settings->ServerHostname );
- break;
- case FREERDP_ERROR_TLS_CONNECT_FAILED:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Error connecting to RDP server %s. TLS connection failed. Check that client and server support a common TLS version."), rfi->settings->ServerHostname );
- break;
- case FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to establish a connection to RDP server %s."), rfi->settings->ServerHostname );
- break;
- default:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to connect to RDP server %s"), rfi->settings->ServerHostname);
- break;
+ switch (e) {
+ case FREERDP_ERROR_AUTHENTICATION_FAILED:
+ case STATUS_LOGON_FAILURE: // wrong return code from FreeRDP introduced at the end of July 2016 ?
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Authentication to RDP server %s failed.\nCheck username, password and domain."),
+ rfi->settings->ServerHostname );
+ // Invalidate the saved password, so the user will be re-asked at next logon
+ remmina_plugin_service->file_unsave_password(remminafile);
+ break;
+ case STATUS_ACCOUNT_LOCKED_OUT:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount is locked out."),
+ rfi->settings->ServerHostname );
+ break;
+ case STATUS_ACCOUNT_EXPIRED:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount is expired."),
+ rfi->settings->ServerHostname );
+ break;
+ case STATUS_PASSWORD_EXPIRED:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nPassword expired."),
+ rfi->settings->ServerHostname );
+ break;
+ case STATUS_ACCOUNT_DISABLED:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount is disabled."),
+ rfi->settings->ServerHostname );
+ break;
+ case STATUS_ACCOUNT_RESTRICTION:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Access to RDP server %s failed.\nAccount has restrictions."),
+ rfi->settings->ServerHostname );
+ break;
+ case FREERDP_ERROR_CONNECT_FAILED:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Connection to RDP server %s failed."), rfi->settings->ServerHostname );
+ break;
+ case FREERDP_ERROR_DNS_NAME_NOT_FOUND:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to find the address of RDP server %s."), rfi->settings->ServerHostname );
+ break;
+ case FREERDP_ERROR_TLS_CONNECT_FAILED:
+ remmina_plugin_service->protocol_plugin_set_error(gp,
+ _("Error connecting to RDP server %s. TLS connection failed. Check that client and server support a common TLS version."), rfi->settings->ServerHostname );
+ break;
+ case FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to establish a connection to RDP server %s."), rfi->settings->ServerHostname );
+ break;
+ default:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to connect to RDP server %s"), rfi->settings->ServerHostname);
+ break;
}
}
@@ -1117,7 +1051,7 @@ static gpointer remmina_rdp_main_thread(gpointer data)
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
CANCEL_ASYNC
- gp = (RemminaProtocolWidget*) data;
+ gp = (RemminaProtocolWidget*)data;
rfi = GET_PLUGIN_DATA(gp);
remmina_rdp_main(gp);
rfi->thread = 0;
@@ -1125,7 +1059,7 @@ static gpointer remmina_rdp_main_thread(gpointer data)
/* Signal main thread that we closed the connection. But wait 200ms, because we may
* have outstaiding events to process in the meanwhile */
- g_timeout_add(200, ((GSourceFunc) remmina_plugin_service->protocol_plugin_close_connection), gp);
+ g_timeout_add(200, ((GSourceFunc)remmina_plugin_service->protocol_plugin_close_connection), gp);
return NULL;
}
@@ -1145,7 +1079,7 @@ static void remmina_rdp_init(RemminaProtocolWidget* gp)
instance->ContextSize = sizeof(rfContext);
freerdp_context_new(instance);
- rfi = (rfContext*) instance->context;
+ rfi = (rfContext*)instance->context;
g_object_set_data_full(G_OBJECT(gp), "plugin-data", rfi, free);
@@ -1167,8 +1101,7 @@ static gboolean remmina_rdp_open_connection(RemminaProtocolWidget* gp)
rfi->scale = remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp);
- if (pthread_create(&rfi->thread, NULL, remmina_rdp_main_thread, gp))
- {
+ if (pthread_create(&rfi->thread, NULL, remmina_rdp_main_thread, gp)) {
remmina_plugin_service->protocol_plugin_set_error(gp, "%s",
"Failed to initialize pthread. Falling back to non-thread mode...");
@@ -1187,14 +1120,12 @@ static gboolean remmina_rdp_close_connection(RemminaProtocolWidget* gp)
freerdp* instance;
RemminaPluginRdpUiObject* ui;
- if (freerdp_get_last_error(rfi->instance->context) == 0x10005)
- {
+ if (freerdp_get_last_error(rfi->instance->context) == 0x10005) {
remmina_plugin_service->protocol_plugin_set_error(gp, "Another user connected to the server (%s), forcing the disconnection of the current connection.", rfi->settings->ServerHostname);
}
instance = rfi->instance;
- if (rfi->thread)
- {
- rfi->thread_cancelled = TRUE; // Avoid all rf_queue function to run
+ if (rfi->thread) {
+ rfi->thread_cancelled = TRUE; // Avoid all rf_queue function to run
pthread_cancel(rfi->thread);
if (rfi->thread)
@@ -1209,8 +1140,7 @@ static gboolean remmina_rdp_close_connection(RemminaProtocolWidget* gp)
ui->clipboard.type = REMMINA_RDP_UI_CLIPBOARD_DETACH_OWNER;
remmina_rdp_event_queue_ui_sync_retint(gp, ui);
- if (instance)
- {
+ if (instance) {
if ( rfi->connected ) {
freerdp_disconnect(instance);
rfi->connected = False;
@@ -1223,14 +1153,12 @@ static gboolean remmina_rdp_close_connection(RemminaProtocolWidget* gp)
}
remmina_rdp_clipboard_free(rfi);
- if (rfi->rfx_context)
- {
+ if (rfi->rfx_context) {
rfx_context_free(rfi->rfx_context);
rfi->rfx_context = NULL;
}
- if (instance)
- {
+ if (instance) {
gdi_free(instance);
cache_free(instance->context->cache);
instance->context->cache = NULL;
@@ -1241,7 +1169,7 @@ static gboolean remmina_rdp_close_connection(RemminaProtocolWidget* gp)
if (instance) {
freerdp_context_free(instance); /* context is rfContext* rfi */
- freerdp_free(instance); /* This implicitly frees instance->context and rfi is no longer valid */
+ freerdp_free(instance); /* This implicitly frees instance->context and rfi is no longer valid */
}
/* Remove instance->context from gp object data to avoid double free */
@@ -1267,32 +1195,31 @@ static void remmina_rdp_call_feature(RemminaProtocolWidget* gp, const RemminaPro
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- switch (feature->id)
- {
- case REMMINA_RDP_FEATURE_UNFOCUS:
- remmina_rdp_event_unfocus(gp);
- break;
+ switch (feature->id) {
+ case REMMINA_RDP_FEATURE_UNFOCUS:
+ remmina_rdp_event_unfocus(gp);
+ break;
- case REMMINA_RDP_FEATURE_SCALE:
- rfi->scale = remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp);
- remmina_rdp_event_update_scale(gp);
- break;
+ case REMMINA_RDP_FEATURE_SCALE:
+ rfi->scale = remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp);
+ remmina_rdp_event_update_scale(gp);
+ break;
- case REMMINA_RDP_FEATURE_DYNRESUPDATE:
- break;
+ case REMMINA_RDP_FEATURE_DYNRESUPDATE:
+ break;
- case REMMINA_RDP_FEATURE_TOOL_REFRESH:
- gtk_widget_queue_draw_area(rfi->drawing_area, 0, 0,
- remmina_plugin_service->protocol_plugin_get_width(gp),
- remmina_plugin_service->protocol_plugin_get_height(gp));
- break;
+ case REMMINA_RDP_FEATURE_TOOL_REFRESH:
+ gtk_widget_queue_draw_area(rfi->drawing_area, 0, 0,
+ remmina_plugin_service->protocol_plugin_get_width(gp),
+ remmina_plugin_service->protocol_plugin_get_height(gp));
+ break;
- case REMMINA_RDP_FEATURE_TOOL_SENDCTRLALTDEL:
- remmina_rdp_send_ctrlaltdel(gp);
- break;
+ case REMMINA_RDP_FEATURE_TOOL_SENDCTRLALTDEL:
+ remmina_rdp_send_ctrlaltdel(gp);
+ break;
- default:
- break;
+ default:
+ break;
}
}
@@ -1308,54 +1235,53 @@ static void remmina_rdp_keystroke(RemminaProtocolWidget *gp, const guint keystro
static gboolean remmina_rdp_get_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)
{
- rfContext* rfi = GET_PLUGIN_DATA(gp);
- rdpGdi* gdi;
- size_t szmem;
+ rfContext* rfi = GET_PLUGIN_DATA(gp);
+ rdpGdi* gdi;
+ size_t szmem;
- UINT32 bytesPerPixel;
- UINT32 bitsPerPixel;
+ UINT32 bytesPerPixel;
+ UINT32 bitsPerPixel;
- if (!rfi)
- return FALSE;
+ if (!rfi)
+ return FALSE;
- gdi = ((rdpContext *)rfi)->gdi;
+ gdi = ((rdpContext*)rfi)->gdi;
- bytesPerPixel = GetBytesPerPixel(gdi->hdc->format);
- bitsPerPixel = GetBitsPerPixel(gdi->hdc->format);
+ bytesPerPixel = GetBytesPerPixel(gdi->hdc->format);
+ bitsPerPixel = GetBitsPerPixel(gdi->hdc->format);
- /* ToDo: we should lock freerdp subthread to update rfi->primary_buffer, rfi->gdi and w/h,
- * from here to memcpy, but... how ? */
+ /* ToDo: we should lock freerdp subthread to update rfi->primary_buffer, rfi->gdi and w/h,
+ * from here to memcpy, but... how ? */
- szmem = gdi->width * gdi->height * bytesPerPixel;
+ szmem = gdi->width * gdi->height * bytesPerPixel;
- remmina_plugin_service->log_printf("[RDP] allocating %zu bytes for a full screenshot\n", szmem);
- rpsd->buffer = malloc(szmem);
- if (!rpsd->buffer)
- {
- remmina_plugin_service->log_printf("[RDP] unable to allocate %zu bytes for a full screenshot\n", szmem);
- return FALSE;
- }
- rpsd->width = gdi->width;
- rpsd->height = gdi->height;
- rpsd->bitsPerPixel = bitsPerPixel;
- rpsd->bytesPerPixel = bytesPerPixel;
+ remmina_plugin_service->log_printf("[RDP] allocating %zu bytes for a full screenshot\n", szmem);
+ rpsd->buffer = malloc(szmem);
+ if (!rpsd->buffer) {
+ remmina_plugin_service->log_printf("[RDP] unable to allocate %zu bytes for a full screenshot\n", szmem);
+ return FALSE;
+ }
+ rpsd->width = gdi->width;
+ rpsd->height = gdi->height;
+ rpsd->bitsPerPixel = bitsPerPixel;
+ rpsd->bytesPerPixel = bytesPerPixel;
- memcpy(rpsd->buffer, gdi->primary_buffer, szmem);
+ memcpy(rpsd->buffer, gdi->primary_buffer, szmem);
- /* Returning TRUE instruct also the caller to deallocate rpsd->buffer */
- return TRUE;
+ /* Returning TRUE instruct also the caller to deallocate rpsd->buffer */
+ return TRUE;
}
/* Array of key/value pairs for color depths */
static gpointer colordepth_list[] =
{
- "8", N_("256 colors (8 bpp)"),
+ "8", N_("256 colors (8 bpp)"),
"15", N_("High color (15 bpp)"),
"16", N_("High color (16 bpp)"),
"24", N_("True color (24 bpp)"),
"32", N_("True color (32 bpp)"),
- "0", N_("RemoteFX (32 bpp)"),
+ "0", N_("RemoteFX (32 bpp)"),
NULL
};
@@ -1372,19 +1298,19 @@ static gpointer quality_list[] =
/* Array of key/value pairs for sound options */
static gpointer sound_list[] =
{
- "off", N_("Off"),
- "local", N_("Local"),
+ "off", N_("Off"),
+ "local", N_("Local"),
"local,11025,1", N_("Local - low quality"),
"local,22050,2", N_("Local - medium quality"),
"local,44100,2", N_("Local - high quality"),
- "remote", N_("Remote"),
+ "remote", N_("Remote"),
NULL
};
/* Array of key/value pairs for security */
static gpointer security_list[] =
{
- "", N_("Negotiate"),
+ "", N_("Negotiate"),
"nla", "NLA",
"tls", "TLS",
"rdp", "RDP",
@@ -1402,15 +1328,16 @@ static gpointer security_list[] =
*/
static const RemminaProtocolSetting remmina_rdp_basic_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "domain", N_("Domain"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, "resolution", NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_FOLDER, "sharefolder", N_("Share folder"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableautoreconnect", N_("Disable automatic reconnection"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, NULL,
+ NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "domain", N_("Domain"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, "resolution", NULL, FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_FOLDER, "sharefolder", N_("Share folder"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableautoreconnect", N_("Disable automatic reconnection"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array of RemminaProtocolSetting for advanced settings.
@@ -1424,88 +1351,88 @@ static const RemminaProtocolSetting remmina_rdp_basic_settings[] =
*/
static const RemminaProtocolSetting remmina_rdp_advanced_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "sound", N_("Sound"), FALSE, sound_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "security", N_("Security"), FALSE, security_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "gateway_server", N_("RD Gateway server"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "gateway_username", N_("RD Gateway username"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "gateway_password", N_("RD Gateway password"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "gateway_domain", N_("RD Gateway domain"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "clientname", N_("Client name"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "exec", N_("Startup program"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "execpath", N_("Startup path"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "loadbalanceinfo", N_("Load Balance Info"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "cert_ignore", N_("Ignore certificate"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "microphone", N_("Redirect local microphone"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "sharesmartcard", N_("Share smartcard"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "shareprinter", N_("Share local printers"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "console", N_("Attach to console (2003/2003 R2)"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "gateway_usage", N_("Server detection using RD Gateway"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "sound", N_("Sound"), FALSE, sound_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "security", N_("Security"), FALSE, security_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "gateway_server", N_("RD Gateway server"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "gateway_username", N_("RD Gateway username"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "gateway_password", N_("RD Gateway password"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "gateway_domain", N_("RD Gateway domain"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "clientname", N_("Client name"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "exec", N_("Startup program"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "execpath", N_("Startup path"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "loadbalanceinfo", N_("Load Balance Info"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "cert_ignore", N_("Ignore certificate"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "microphone", N_("Redirect local microphone"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "sharesmartcard", N_("Share smartcard"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "shareprinter", N_("Share local printers"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "console", N_("Attach to console (2003/2003 R2)"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "gateway_usage", N_("Server detection using RD Gateway"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array for available features.
* The last element of the array must be REMMINA_PROTOCOL_FEATURE_TYPE_END. */
static const RemminaProtocolFeature remmina_rdp_features[] =
{
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_RDP_FEATURE_TOOL_REFRESH, N_("Refresh"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_RDP_FEATURE_SCALE, NULL, NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE, REMMINA_RDP_FEATURE_DYNRESUPDATE, NULL, NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_RDP_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS, REMMINA_RDP_FEATURE_UNFOCUS, NULL, NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_RDP_FEATURE_TOOL_REFRESH, N_("Refresh"), NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_RDP_FEATURE_SCALE, NULL, NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE, REMMINA_RDP_FEATURE_DYNRESUPDATE, NULL, NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_RDP_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS, REMMINA_RDP_FEATURE_UNFOCUS, NULL, NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
};
/* Protocol plugin definition and features */
static RemminaProtocolPlugin remmina_rdp =
{
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- "RDP", // Name
- N_("RDP - Remote Desktop Protocol"), // Description
- GETTEXT_PACKAGE, // Translation domain
- REMMINA_PLUGIN_RDP_VERSION, // Version number
- "remmina-rdp", // Icon for normal connection
- "remmina-rdp-ssh", // Icon for SSH connection
- remmina_rdp_basic_settings, // Array for basic settings
- remmina_rdp_advanced_settings, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
- remmina_rdp_features, // Array for available features
- remmina_rdp_init, // Plugin initialization
- remmina_rdp_open_connection, // Plugin open connection
- remmina_rdp_close_connection, // Plugin close connection
- remmina_rdp_query_feature, // Query for available features
- remmina_rdp_call_feature, // Call a feature
- remmina_rdp_keystroke, // Send a keystroke
- remmina_rdp_get_screenshot // Screenshot
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ "RDP", // Name
+ N_("RDP - Remote Desktop Protocol"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ REMMINA_PLUGIN_RDP_VERSION, // Version number
+ "remmina-rdp", // Icon for normal connection
+ "remmina-rdp-ssh", // Icon for SSH connection
+ remmina_rdp_basic_settings, // Array for basic settings
+ remmina_rdp_advanced_settings, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
+ remmina_rdp_features, // Array for available features
+ remmina_rdp_init, // Plugin initialization
+ remmina_rdp_open_connection, // Plugin open connection
+ remmina_rdp_close_connection, // Plugin close connection
+ remmina_rdp_query_feature, // Query for available features
+ remmina_rdp_call_feature, // Call a feature
+ remmina_rdp_keystroke, // Send a keystroke
+ remmina_rdp_get_screenshot // Screenshot
};
/* File plugin definition and features */
static RemminaFilePlugin remmina_rdpf =
{
- REMMINA_PLUGIN_TYPE_FILE, // Type
- "RDPF", // Name
- N_("RDP - RDP File Handler"), // Description
- GETTEXT_PACKAGE, // Translation domain
- REMMINA_PLUGIN_RDP_VERSION, // Version number
- remmina_rdp_file_import_test, // Test import function
- remmina_rdp_file_import, // Import function
- remmina_rdp_file_export_test, // Test export function
- remmina_rdp_file_export, // Export function
+ REMMINA_PLUGIN_TYPE_FILE, // Type
+ "RDPF", // Name
+ N_("RDP - RDP File Handler"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ REMMINA_PLUGIN_RDP_VERSION, // Version number
+ remmina_rdp_file_import_test, // Test import function
+ remmina_rdp_file_import, // Import function
+ remmina_rdp_file_export_test, // Test export function
+ remmina_rdp_file_export, // Export function
NULL
};
/* Preferences plugin definition and features */
static RemminaPrefPlugin remmina_rdps =
{
- REMMINA_PLUGIN_TYPE_PREF, // Type
- "RDPS", // Name
- N_("RDP - Preferences"), // Description
- GETTEXT_PACKAGE, // Translation domain
- REMMINA_PLUGIN_RDP_VERSION, // Version number
- "RDP", // Label
- remmina_rdp_settings_new // Preferences body function
+ REMMINA_PLUGIN_TYPE_PREF, // Type
+ "RDPS", // Name
+ N_("RDP - Preferences"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ REMMINA_PLUGIN_RDP_VERSION, // Version number
+ "RDP", // Label
+ remmina_rdp_settings_new // Preferences body function
};
G_MODULE_EXPORT gboolean remmina_plugin_entry(RemminaPluginService* service)
@@ -1519,8 +1446,8 @@ G_MODULE_EXPORT gboolean remmina_plugin_entry(RemminaPluginService* service)
freerdp_get_version(&vermaj, &vermin, &verrev);
if (vermaj < FREERDP_REQUIRED_MAJOR ||
- (vermaj == FREERDP_REQUIRED_MAJOR && ( vermin < FREERDP_REQUIRED_MINOR ||
- (vermin == FREERDP_REQUIRED_MINOR && verrev < FREERDP_REQUIRED_REVISION) ) ) ) {
+ (vermaj == FREERDP_REQUIRED_MAJOR && ( vermin < FREERDP_REQUIRED_MINOR ||
+ (vermin == FREERDP_REQUIRED_MINOR && verrev < FREERDP_REQUIRED_REVISION) ) ) ) {
g_printf("Unable to load RDP plugin due to bad freerdp library version. Required "
"libfreerdp version is at least %d.%d.%d but we found libfreerdp version %d.%d.%d\n",
FREERDP_REQUIRED_MAJOR, FREERDP_REQUIRED_MINOR, FREERDP_REQUIRED_REVISION,
@@ -1531,15 +1458,15 @@ G_MODULE_EXPORT gboolean remmina_plugin_entry(RemminaPluginService* service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if (! service->register_plugin((RemminaPlugin*) &remmina_rdp))
+ if (!service->register_plugin((RemminaPlugin*)&remmina_rdp))
return FALSE;
remmina_rdpf.export_hints = _("Export connection in Windows .rdp file format");
- if (! service->register_plugin((RemminaPlugin*) &remmina_rdpf))
+ if (!service->register_plugin((RemminaPlugin*)&remmina_rdpf))
return FALSE;
- if (! service->register_plugin((RemminaPlugin*) &remmina_rdps))
+ if (!service->register_plugin((RemminaPlugin*)&remmina_rdps))
return FALSE;
remmina_rdp_settings_init();
diff --git a/remmina-plugins/rdp/rdp_plugin.h b/remmina-plugins/rdp/rdp_plugin.h
index 7fab83a93..383e09108 100644
--- a/remmina-plugins/rdp/rdp_plugin.h
+++ b/remmina-plugins/rdp/rdp_plugin.h
@@ -53,20 +53,19 @@
typedef struct rf_context rfContext;
-#define GET_PLUGIN_DATA(gp) (rfContext*) g_object_get_data(G_OBJECT(gp), "plugin-data")
+#define GET_PLUGIN_DATA(gp) (rfContext*)g_object_get_data(G_OBJECT(gp), "plugin-data")
-#define DEFAULT_QUALITY_0 0x6f
-#define DEFAULT_QUALITY_1 0x07
-#define DEFAULT_QUALITY_2 0x01
-#define DEFAULT_QUALITY_9 0x80
+#define DEFAULT_QUALITY_0 0x6f
+#define DEFAULT_QUALITY_1 0x07
+#define DEFAULT_QUALITY_2 0x01
+#define DEFAULT_QUALITY_9 0x80
#define REMMINA_PLUGIN_RDP_VERSION "RDP Plugin: " VERSION " (git " REMMINA_GIT_REVISION \
- "), FreeRDP lib: " FREERDP_VERSION_FULL " (git " GIT_REVISION ")"
+ "), FreeRDP lib: " FREERDP_VERSION_FULL " (git " GIT_REVISION ")"
extern RemminaPluginService* remmina_plugin_service;
-struct rf_clipboard
-{
+struct rf_clipboard {
rfContext* rfi;
CliprdrClientContext* context;
wClipboard* system;
@@ -77,38 +76,34 @@ struct rf_clipboard
pthread_mutex_t transfer_clip_mutex;
pthread_cond_t transfer_clip_cond;
- enum { SCDW_NONE, SCDW_BUSY_WAIT, SCDW_ASYNCWAIT } srv_clip_data_wait ;
+ enum { SCDW_NONE, SCDW_BUSY_WAIT, SCDW_ASYNCWAIT } srv_clip_data_wait;
gpointer srv_data;
};
typedef struct rf_clipboard rfClipboard;
-struct rf_pointer
-{
+struct rf_pointer {
rdpPointer pointer;
GdkCursor* cursor;
};
typedef struct rf_pointer rfPointer;
-struct rf_bitmap
-{
+struct rf_bitmap {
rdpBitmap bitmap;
Pixmap pixmap;
cairo_surface_t* surface;
};
typedef struct rf_bitmap rfBitmap;
-struct rf_glyph
-{
+struct rf_glyph {
rdpGlyph glyph;
Pixmap pixmap;
};
typedef struct rf_glyph rfGlyph;
-typedef enum
-{
+typedef enum {
REMMINA_RDP_EVENT_TYPE_SCANCODE,
REMMINA_RDP_EVENT_TYPE_SCANCODE_UNICODE,
REMMINA_RDP_EVENT_TYPE_MOUSE,
@@ -118,35 +113,28 @@ typedef enum
REMMINA_RDP_EVENT_TYPE_SEND_MONITOR_LAYOUT
} RemminaPluginRdpEventType;
-struct remmina_plugin_rdp_event
-{
+struct remmina_plugin_rdp_event {
RemminaPluginRdpEventType type;
- union
- {
- struct
- {
+ union {
+ struct {
BOOL up;
BOOL extended;
UINT8 key_code;
UINT32 unicode_code;
} key_event;
- struct
- {
+ struct {
UINT16 flags;
UINT16 x;
UINT16 y;
BOOL extended;
} mouse_event;
- struct
- {
+ struct {
CLIPRDR_FORMAT_LIST* pFormatList;
} clipboard_formatlist;
- struct
- {
+ struct {
CLIPRDR_FORMAT_DATA_RESPONSE* pFormatDataResponse;
} clipboard_formatdataresponse;
- struct
- {
+ struct {
CLIPRDR_FORMAT_DATA_REQUEST* pFormatDataRequest;
} clipboard_formatdatarequest;
struct {
@@ -160,8 +148,7 @@ struct remmina_plugin_rdp_event
};
typedef struct remmina_plugin_rdp_event RemminaPluginRdpEvent;
-typedef enum
-{
+typedef enum {
REMMINA_RDP_UI_UPDATE_REGION = 0,
REMMINA_RDP_UI_CONNECTED,
REMMINA_RDP_UI_RECONNECT_PROGRESS,
@@ -172,8 +159,7 @@ typedef enum
REMMINA_RDP_UI_EVENT
} RemminaPluginRdpUiType;
-typedef enum
-{
+typedef enum {
REMMINA_RDP_UI_CLIPBOARD_FORMATLIST,
REMMINA_RDP_UI_CLIPBOARD_GET_DATA,
REMMINA_RDP_UI_CLIPBOARD_SET_DATA,
@@ -181,8 +167,7 @@ typedef enum
REMMINA_RDP_UI_CLIPBOARD_DETACH_OWNER
} RemminaPluginRdpUiClipboardType;
-typedef enum
-{
+typedef enum {
REMMINA_RDP_POINTER_NEW,
REMMINA_RDP_POINTER_FREE,
REMMINA_RDP_POINTER_SET,
@@ -191,49 +176,41 @@ typedef enum
REMMINA_RDP_POINTER_SETPOS
} RemminaPluginRdpUiPointerType;
-typedef enum
-{
+typedef enum {
REMMINA_RDP_UI_EVENT_UPDATE_SCALE
} RemminaPluginRdpUiEeventType;
-struct remmina_plugin_rdp_ui_object
-{
+struct remmina_plugin_rdp_ui_object {
RemminaPluginRdpUiType type;
gboolean sync;
gboolean complete;
pthread_mutex_t sync_wait_mutex;
pthread_cond_t sync_wait_cond;
- union
- {
- struct
- {
+ union {
+ struct {
gint x;
gint y;
gint width;
gint height;
} region;
- struct
- {
+ struct {
rdpContext* context;
rfPointer* pointer;
RemminaPluginRdpUiPointerType type;
} cursor;
- struct
- {
+ struct {
gint left;
gint top;
RFX_MESSAGE* message;
} rfx;
- struct
- {
+ struct {
gint left;
gint top;
gint width;
gint height;
UINT8* bitmap;
} nocodec;
- struct
- {
+ struct {
RemminaPluginRdpUiClipboardType type;
GtkTargetList* targetlist;
UINT32 format;
@@ -254,8 +231,7 @@ struct remmina_plugin_rdp_ui_object
void *retptr;
};
-struct rf_context
-{
+struct rf_context {
rdpContext _p;
RemminaProtocolWidget* protocol_widget;
diff --git a/remmina-plugins/rdp/rdp_settings.c b/remmina-plugins/rdp/rdp_settings.c
index cf332f5ea..adf426a87 100644
--- a/remmina-plugins/rdp/rdp_settings.c
+++ b/remmina-plugins/rdp/rdp_settings.c
@@ -68,15 +68,14 @@ guint remmina_rdp_settings_get_keyboard_layout(void)
return keyboard_layout;
}
-#define REMMINA_TYPE_PLUGIN_RDPSET_GRID (remmina_rdp_settings_grid_get_type())
-#define REMMINA_RDPSET_GRID(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), REMMINA_TYPE_PLUGIN_RDPSET_GRID, RemminaPluginRdpsetGrid))
-#define REMMINA_RDPSET_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), REMMINA_TYPE_PLUGIN_RDPSET_GRID, RemminaPluginRdpsetGridClass))
-#define REMMINA_IS_PLUGIN_RDPSET_GRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), REMMINA_TYPE_PLUGIN_RDPSET_GRID))
-#define REMMINA_IS_PLUGIN_RDPSET_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), REMMINA_TYPE_PLUGIN_RDPSET_GRID))
-#define REMMINA_RDPSET_GRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), REMMINA_TYPE_PLUGIN_RDPSET_GRID, RemminaPluginRdpsetGridClass))
-
-typedef struct _RemminaPluginRdpsetGrid
-{
+#define REMMINA_TYPE_PLUGIN_RDPSET_GRID (remmina_rdp_settings_grid_get_type())
+#define REMMINA_RDPSET_GRID(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), REMMINA_TYPE_PLUGIN_RDPSET_GRID, RemminaPluginRdpsetGrid))
+#define REMMINA_RDPSET_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), REMMINA_TYPE_PLUGIN_RDPSET_GRID, RemminaPluginRdpsetGridClass))
+#define REMMINA_IS_PLUGIN_RDPSET_GRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), REMMINA_TYPE_PLUGIN_RDPSET_GRID))
+#define REMMINA_IS_PLUGIN_RDPSET_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), REMMINA_TYPE_PLUGIN_RDPSET_GRID))
+#define REMMINA_RDPSET_GRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), REMMINA_TYPE_PLUGIN_RDPSET_GRID, RemminaPluginRdpsetGridClass))
+
+typedef struct _RemminaPluginRdpsetGrid {
GtkGrid grid;
GtkWidget* keyboard_layout_label;
@@ -107,8 +106,7 @@ typedef struct _RemminaPluginRdpsetGrid
guint quality_values[10];
} RemminaPluginRdpsetGrid;
-typedef struct _RemminaPluginRdpsetGridClass
-{
+typedef struct _RemminaPluginRdpsetGridClass {
GtkGridClass parent_class;
} RemminaPluginRdpsetGridClass;
@@ -132,12 +130,10 @@ static void remmina_rdp_settings_grid_destroy(GtkWidget* widget, gpointer data)
grid = REMMINA_RDPSET_GRID(widget);
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->keyboard_layout_combo), &iter))
- {
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->keyboard_layout_combo), &iter)) {
gtk_tree_model_get(GTK_TREE_MODEL(grid->keyboard_layout_store), &iter, 0, &new_layout, -1);
- if (new_layout != rdp_keyboard_layout)
- {
+ if (new_layout != rdp_keyboard_layout) {
rdp_keyboard_layout = new_layout;
s = g_strdup_printf("%X", new_layout);
remmina_plugin_service->pref_set_value("rdp_keyboard_layout", s);
@@ -166,8 +162,7 @@ static void remmina_rdp_settings_grid_destroy(GtkWidget* widget, gpointer data)
remmina_plugin_service->pref_set_value("rdp_quality_9", s);
g_free(s);
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->device_scale_factor_combo), &iter))
- {
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->device_scale_factor_combo), &iter)) {
gtk_tree_model_get(GTK_TREE_MODEL(grid->device_scale_factor_store), &iter, 0, &val, -1);
} else {
val = 0;
@@ -181,8 +176,7 @@ static void remmina_rdp_settings_grid_destroy(GtkWidget* widget, gpointer data)
remmina_plugin_service->pref_set_value("rdp_desktopScaleFactor", s);
g_free(s);
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->desktop_orientation_combo), &iter))
- {
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->desktop_orientation_combo), &iter)) {
gtk_tree_model_get(GTK_TREE_MODEL(grid->desktop_orientation_store), &iter, 0, &val, -1);
} else {
val = 0;
@@ -211,8 +205,7 @@ static void remmina_rdp_settings_grid_load_layout(RemminaPluginRdpsetGrid* grid)
layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD | RDP_KEYBOARD_LAYOUT_TYPE_VARIANT);
- for (i = 0; layouts[i].code; i++)
- {
+ for (i = 0; layouts[i].code; i++) {
s = g_strdup_printf("%08X - %s", layouts[i].code, layouts[i].name);
gtk_list_store_append(grid->keyboard_layout_store, &iter);
gtk_list_store_set(grid->keyboard_layout_store, &iter, 0, layouts[i].code, 1, s, -1);
@@ -280,7 +273,7 @@ static void remmina_rdp_settings_grid_load_quality(RemminaPluginRdpsetGrid* grid
gtk_list_store_append(grid->quality_store, &iter);
gtk_list_store_set(grid->quality_store, &iter, 0, 9, 1, _("Best (slowest)"), -1);
- memset(grid->quality_values, 0, sizeof (grid->quality_values));
+ memset(grid->quality_values, 0, sizeof(grid->quality_values));
value = remmina_plugin_service->pref_get_value("rdp_quality_0");
grid->quality_values[0] = (value && value[0] ? strtoul(value, NULL, 16) : DEFAULT_QUALITY_0);
@@ -305,18 +298,14 @@ static void remmina_rdp_settings_appscale_on_changed(GtkComboBox *widget, Remmin
GtkTreeIter iter;
guint i = 0;
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->device_scale_factor_combo), &iter))
- {
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->device_scale_factor_combo), &iter)) {
gtk_tree_model_get(GTK_TREE_MODEL(grid->device_scale_factor_store), &iter, 0, &i, -1);
}
- if (i == 0)
- {
+ if (i == 0) {
gtk_widget_set_sensitive(GTK_WIDGET(grid->desktop_scale_factor_spin), FALSE);
gtk_spin_button_set_range(GTK_SPIN_BUTTON(grid->desktop_scale_factor_spin), 0, 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(grid->desktop_scale_factor_spin), 0);
- }
- else
- {
+ }else {
gtk_widget_set_sensitive(GTK_WIDGET(grid->desktop_scale_factor_spin), TRUE);
gtk_spin_button_set_range(GTK_SPIN_BUTTON(grid->desktop_scale_factor_spin), 100, 500);
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(grid->desktop_scale_factor_spin), i);
@@ -331,15 +320,14 @@ static void remmina_rdp_settings_quality_on_changed(GtkComboBox *widget, Remmina
GtkTreeIter iter;
gboolean sensitive;
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX (grid->quality_combo), &iter))
- {
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->quality_combo), &iter)) {
gtk_tree_model_get(GTK_TREE_MODEL(grid->quality_store), &iter, 0, &i, -1);
sensitive = ( i != -1 );
if (sensitive)
v = grid->quality_values[i];
else
- v = 0x3f; /* All checkboxes disabled */
+ v = 0x3f; /* All checkboxes disabled */
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(grid->wallpaper_check), (v & 1) == 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(grid->windowdrag_check), (v & 2) == 0);
@@ -369,11 +357,9 @@ static void remmina_rdp_settings_quality_option_on_toggled(GtkToggleButton* togg
guint i = 0;
GtkTreeIter iter;
- if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->quality_combo), &iter))
- {
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(grid->quality_combo), &iter)) {
gtk_tree_model_get(GTK_TREE_MODEL(grid->quality_store), &iter, 0, &i, -1);
- if (i != -1)
- {
+ if (i != -1) {
v = 0;
v |= (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(grid->wallpaper_check)) ? 0 : 1);
v |= (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(grid->windowdrag_check)) ? 0 : 2);
@@ -396,20 +382,17 @@ static void remmina_rdp_settings_set_combo_active_item(GtkComboBox* combo, int i
gboolean valid;
m = gtk_combo_box_get_model(combo);
- if (!m)
- {
+ if (!m) {
return;
}
valid = gtk_tree_model_get_iter_first(m, &iter);
- while(valid)
- {
+ while (valid) {
gtk_tree_model_get(m, &iter, 0, &i, -1);
- if (i == itemval)
- {
+ if (i == itemval) {
gtk_combo_box_set_active_iter(combo, &iter);
}
- valid = gtk_tree_model_iter_next (m, &iter);
+ valid = gtk_tree_model_iter_next(m, &iter);
}
}
@@ -433,8 +416,8 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
/* Create the content */
widget = gtk_label_new(_("Keyboard layout"));
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 0, 0, 1, 1);
grid->keyboard_layout_store = gtk_list_store_new(2, G_TYPE_UINT, G_TYPE_STRING);
@@ -449,8 +432,8 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
widget = gtk_label_new("-");
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 1, 1, 4, 2);
grid->keyboard_layout_label = widget;
@@ -468,8 +451,8 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
widget = gtk_label_new(_("Quality settings"));
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 0, 6, 1, 4);
grid->quality_store = gtk_list_store_new(2, G_TYPE_UINT, G_TYPE_STRING);
@@ -542,13 +525,13 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid);
grid->composition_check = widget;
- gtk_combo_box_set_active(GTK_COMBO_BOX (grid->quality_combo), 0);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(grid->quality_combo), 0);
widget = gtk_label_new(_("Remote scale factor"));
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 0, 27, 1, 1);
grid->device_scale_factor_store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING);
@@ -560,8 +543,8 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
widget = gtk_label_new(_("Desktop scale factor %"));
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 1, 27, 1, 1);
widget = gtk_spin_button_new_with_range(0, 10000, 1);
@@ -571,8 +554,8 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
widget = gtk_label_new(_("Device scale factor %"));
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 1, 28, 1, 1);
widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(grid->device_scale_factor_store));
@@ -593,8 +576,8 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid)
widget = gtk_label_new(_("Desktop orientation"));
gtk_widget_show(widget);
- gtk_widget_set_halign (GTK_WIDGET(widget), GTK_ALIGN_START);
- gtk_widget_set_valign (GTK_WIDGET(widget), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(widget), GTK_ALIGN_START);
+ gtk_widget_set_valign(GTK_WIDGET(widget), GTK_ALIGN_CENTER);
gtk_grid_attach(GTK_GRID(grid), widget, 0, 29, 1, 1);
widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(grid->desktop_orientation_store));
diff --git a/remmina-plugins/spice/spice_plugin.c b/remmina-plugins/spice/spice_plugin.c
index 67d06d6c0..905c81226 100644
--- a/remmina-plugins/spice/spice_plugin.c
+++ b/remmina-plugins/spice/spice_plugin.c
@@ -36,8 +36,7 @@
#define XSPICE_DEFAULT_PORT 5900
-enum
-{
+enum {
REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY = 1,
REMMINA_PLUGIN_SPICE_FEATURE_PREF_RESIZEGUEST,
REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD,
@@ -57,8 +56,8 @@ void remmina_plugin_spice_select_usb_devices(RemminaProtocolWidget *);
#ifdef SPICE_GTK_CHECK_VERSION
# if SPICE_GTK_CHECK_VERSION(0, 31, 0)
void remmina_plugin_spice_file_transfer_new_cb(SpiceMainChannel *, SpiceFileTransferTask *, RemminaProtocolWidget *);
-# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
-#endif /* SPICE_GTK_CHECK_VERSION */
+# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
+#endif /* SPICE_GTK_CHECK_VERSION */
static void remmina_plugin_spice_init(RemminaProtocolWidget *gp)
{
@@ -73,22 +72,22 @@ static void remmina_plugin_spice_init(RemminaProtocolWidget *gp)
gpdata->session = spice_session_new();
g_signal_connect(gpdata->session,
- "channel-new",
- G_CALLBACK(remmina_plugin_spice_channel_new_cb),
- gp);
+ "channel-new",
+ G_CALLBACK(remmina_plugin_spice_channel_new_cb),
+ gp);
g_object_set(gpdata->session,
- "password", g_strdup(remmina_plugin_service->file_get_string(remminafile, "password")),
- "read-only", remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE),
- "enable-audio", remmina_plugin_service->file_get_int(remminafile, "enableaudio", FALSE),
- "enable-smartcard", remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE),
- NULL);
+ "password", g_strdup(remmina_plugin_service->file_get_string(remminafile, "password")),
+ "read-only", remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE),
+ "enable-audio", remmina_plugin_service->file_get_int(remminafile, "enableaudio", FALSE),
+ "enable-smartcard", remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE),
+ NULL);
gpdata->gtk_session = spice_gtk_session_get(gpdata->session);
g_object_set(gpdata->gtk_session,
- "auto-clipboard",
- !remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE),
- NULL);
+ "auto-clipboard",
+ !remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE),
+ NULL);
}
static gboolean remmina_plugin_spice_open_connection(RemminaProtocolWidget *gp)
@@ -102,27 +101,24 @@ static gboolean remmina_plugin_spice_open_connection(RemminaProtocolWidget *gp)
RemminaFile *remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
remmina_plugin_service->get_server_port(remmina_plugin_service->file_get_string(remminafile, "server"),
- XSPICE_DEFAULT_PORT,
- &host,
- &port);
+ XSPICE_DEFAULT_PORT,
+ &host,
+ &port);
g_object_set(gpdata->session, "host", host, NULL);
g_free(host);
/* Unencrypted connection */
- if (!remmina_plugin_service->file_get_int(remminafile, "usetls", FALSE))
- {
+ if (!remmina_plugin_service->file_get_int(remminafile, "usetls", FALSE)) {
g_object_set(gpdata->session, "port", g_strdup_printf("%i", port), NULL);
}
/* TLS encrypted connection */
- else
- {
+ else{
g_object_set(gpdata->session, "tls_port", g_strdup_printf("%i", port), NULL);
/* Server CA certificate */
cacert = remmina_plugin_service->file_get_string(remminafile, "cacert");
- if (cacert)
- {
+ if (cacert) {
g_object_set(gpdata->session, "ca-file", cacert, NULL);
}
}
@@ -142,15 +138,13 @@ static gboolean remmina_plugin_spice_close_connection(RemminaProtocolWidget *gp)
TRACE_CALL(__func__);
RemminaPluginSpiceData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->main_channel)
- {
+ if (gpdata->main_channel) {
g_signal_handlers_disconnect_by_func(gpdata->main_channel,
- G_CALLBACK(remmina_plugin_spice_main_channel_event_cb),
- gp);
+ G_CALLBACK(remmina_plugin_spice_main_channel_event_cb),
+ gp);
}
- if (gpdata->session)
- {
+ if (gpdata->session) {
spice_session_disconnect(gpdata->session);
g_object_unref(gpdata->session);
gpdata->session = NULL;
@@ -159,12 +153,11 @@ static gboolean remmina_plugin_spice_close_connection(RemminaProtocolWidget *gp)
#ifdef SPICE_GTK_CHECK_VERSION
# if SPICE_GTK_CHECK_VERSION(0, 31, 0)
- if (gpdata->file_transfers)
- {
+ if (gpdata->file_transfers) {
g_hash_table_unref(gpdata->file_transfers);
}
-# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
-#endif /* SPICE_GTK_CHECK_VERSION */
+# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
+#endif /* SPICE_GTK_CHECK_VERSION */
return FALSE;
}
@@ -179,38 +172,34 @@ static void remmina_plugin_spice_channel_new_cb(SpiceSession *session, SpiceChan
g_object_get(channel, "channel-id", &id, NULL);
- if (SPICE_IS_MAIN_CHANNEL(channel))
- {
+ if (SPICE_IS_MAIN_CHANNEL(channel)) {
gpdata->main_channel = SPICE_MAIN_CHANNEL(channel);
g_signal_connect(channel,
- "channel-event",
- G_CALLBACK(remmina_plugin_spice_main_channel_event_cb),
- gp);
+ "channel-event",
+ G_CALLBACK(remmina_plugin_spice_main_channel_event_cb),
+ gp);
#ifdef SPICE_GTK_CHECK_VERSION
# if SPICE_GTK_CHECK_VERSION(0, 31, 0)
g_signal_connect(channel,
- "new-file-transfer",
- G_CALLBACK(remmina_plugin_spice_file_transfer_new_cb),
- gp);
-# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
-#endif /* SPICE_GTK_CHECK_VERSION */
+ "new-file-transfer",
+ G_CALLBACK(remmina_plugin_spice_file_transfer_new_cb),
+ gp);
+# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
+#endif /* SPICE_GTK_CHECK_VERSION */
}
- if (SPICE_IS_DISPLAY_CHANNEL(channel))
- {
+ if (SPICE_IS_DISPLAY_CHANNEL(channel)) {
gpdata->display_channel = SPICE_DISPLAY_CHANNEL(channel);
gpdata->display = spice_display_new(gpdata->session, id);
g_signal_connect(gpdata->display,
- "notify::ready",
- G_CALLBACK(remmina_plugin_spice_display_ready_cb),
- gp);
+ "notify::ready",
+ G_CALLBACK(remmina_plugin_spice_display_ready_cb),
+ gp);
remmina_plugin_spice_display_ready_cb(G_OBJECT(gpdata->display), NULL, gp);
}
- if (SPICE_IS_PLAYBACK_CHANNEL(channel))
- {
- if (remmina_plugin_service->file_get_int(remminafile, "enableaudio", FALSE))
- {
+ if (SPICE_IS_PLAYBACK_CHANNEL(channel)) {
+ if (remmina_plugin_service->file_get_int(remminafile, "enableaudio", FALSE)) {
gpdata->audio = spice_audio_get(gpdata->session, NULL);
}
}
@@ -229,17 +218,14 @@ static gboolean remmina_plugin_spice_ask_auth(RemminaProtocolWidget *gp)
disablepasswordstoring = remmina_plugin_service->file_get_int(remminafile, "disablepasswordstoring", FALSE);
ret = remmina_plugin_service->protocol_plugin_init_authpwd(gp, REMMINA_AUTHPWD_TYPE_PROTOCOL, !disablepasswordstoring);
- if (ret == GTK_RESPONSE_OK)
- {
+ if (ret == GTK_RESPONSE_OK) {
g_object_set(gpdata->session,
- "password",
- remmina_plugin_service->protocol_plugin_init_get_password(gp),
- NULL);
+ "password",
+ remmina_plugin_service->protocol_plugin_init_get_password(gp),
+ NULL);
return TRUE;
- }
- else
- {
+ }else {
return FALSE;
}
}
@@ -252,42 +238,38 @@ static void remmina_plugin_spice_main_channel_event_cb(SpiceChannel *channel, Sp
gint port;
RemminaFile *remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- switch (event)
- {
- case SPICE_CHANNEL_CLOSED:
- remmina_plugin_service->get_server_port(remmina_plugin_service->file_get_string(remminafile, "server"),
- XSPICE_DEFAULT_PORT,
- &server,
- &port);
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Disconnected from SPICE server %s."), server);
- g_free(server);
- remmina_plugin_spice_close_connection(gp);
- break;
- case SPICE_CHANNEL_OPENED:
- break;
- case SPICE_CHANNEL_ERROR_AUTH:
- if (remmina_plugin_spice_ask_auth(gp))
- {
- remmina_plugin_spice_open_connection(gp);
- }
- else
- {
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Invalid password."));
- remmina_plugin_spice_close_connection(gp);
- }
- break;
- case SPICE_CHANNEL_ERROR_TLS:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("TLS connection error."));
- remmina_plugin_spice_close_connection(gp);
- break;
- case SPICE_CHANNEL_ERROR_IO:
- case SPICE_CHANNEL_ERROR_LINK:
- case SPICE_CHANNEL_ERROR_CONNECT:
- remmina_plugin_service->protocol_plugin_set_error(gp, _("Connection to SPICE server failed."));
+ switch (event) {
+ case SPICE_CHANNEL_CLOSED:
+ remmina_plugin_service->get_server_port(remmina_plugin_service->file_get_string(remminafile, "server"),
+ XSPICE_DEFAULT_PORT,
+ &server,
+ &port);
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Disconnected from SPICE server %s."), server);
+ g_free(server);
+ remmina_plugin_spice_close_connection(gp);
+ break;
+ case SPICE_CHANNEL_OPENED:
+ break;
+ case SPICE_CHANNEL_ERROR_AUTH:
+ if (remmina_plugin_spice_ask_auth(gp)) {
+ remmina_plugin_spice_open_connection(gp);
+ }else{
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Invalid password."));
remmina_plugin_spice_close_connection(gp);
- break;
- default:
- break;
+ }
+ break;
+ case SPICE_CHANNEL_ERROR_TLS:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("TLS connection error."));
+ remmina_plugin_spice_close_connection(gp);
+ break;
+ case SPICE_CHANNEL_ERROR_IO:
+ case SPICE_CHANNEL_ERROR_LINK:
+ case SPICE_CHANNEL_ERROR_CONNECT:
+ remmina_plugin_service->protocol_plugin_set_error(gp, _("Connection to SPICE server failed."));
+ remmina_plugin_spice_close_connection(gp);
+ break;
+ default:
+ break;
}
}
@@ -300,16 +282,15 @@ static void remmina_plugin_spice_display_ready_cb(GObject *display, GParamSpec *
g_object_get(display, "ready", &ready, NULL);
- if (ready)
- {
+ if (ready) {
g_signal_handlers_disconnect_by_func(display,
- G_CALLBACK(remmina_plugin_spice_display_ready_cb),
- gp);
+ G_CALLBACK(remmina_plugin_spice_display_ready_cb),
+ gp);
g_object_set(display,
- "scaling", (remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE),
- "resize-guest", remmina_plugin_service->file_get_int(remminafile, "resizeguest", FALSE),
- NULL);
+ "scaling", (remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE),
+ "resize-guest", remmina_plugin_service->file_get_int(remminafile, "resizeguest", FALSE),
+ NULL);
gtk_container_add(GTK_CONTAINER(gp), GTK_WIDGET(display));
gtk_widget_show(GTK_WIDGET(display));
@@ -324,12 +305,11 @@ static void remmina_plugin_spice_keystroke(RemminaProtocolWidget *gp, const guin
TRACE_CALL(__func__);
RemminaPluginSpiceData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->display)
- {
+ if (gpdata->display) {
spice_display_send_keys(gpdata->display,
- keystrokes,
- keylen,
- SPICE_DISPLAY_KEY_EVENT_CLICK);
+ keystrokes,
+ keylen,
+ SPICE_DISPLAY_KEY_EVENT_CLICK);
}
}
@@ -354,18 +334,15 @@ static void remmina_plugin_spice_update_scale(RemminaProtocolWidget *gp)
scale = remmina_plugin_service->file_get_int(remminafile, "scale", FALSE);
g_object_set(gpdata->display, "scaling", scale, NULL);
- if (scale)
- {
+ if (scale) {
/* In scaled mode, the SpiceDisplay will get its dimensions from its parent */
gtk_widget_set_size_request(GTK_WIDGET(gpdata->display), -1, -1 );
- }
- else
- {
+ }else {
/* In non scaled mode, the plugins forces dimensions of the SpiceDisplay */
g_object_get(gpdata->display_channel,
- "width", &width,
- "height", &height,
- NULL);
+ "width", &width,
+ "height", &height,
+ NULL);
gtk_widget_set_size_request(GTK_WIDGET(gpdata->display), width, height);
}
}
@@ -384,37 +361,36 @@ static void remmina_plugin_spice_call_feature(RemminaProtocolWidget *gp, const R
RemminaPluginSpiceData *gpdata = GET_PLUGIN_DATA(gp);
RemminaFile *remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- switch (feature->id)
- {
- case REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY:
- g_object_set(gpdata->session,
- "read-only",
- remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE),
- NULL);
- break;
- case REMMINA_PLUGIN_SPICE_FEATURE_PREF_RESIZEGUEST:
- g_object_set(gpdata->display,
- "resize-guest",
- remmina_plugin_service->file_get_int(remminafile, "resizeguest", TRUE),
- NULL);
- break;
- case REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD:
- g_object_set(gpdata->gtk_session,
- "auto-clipboard",
- !remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE),
- NULL);
- break;
- case REMMINA_PLUGIN_SPICE_FEATURE_SCALE:
- remmina_plugin_spice_update_scale(gp);
- break;
- case REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL:
- remmina_plugin_spice_send_ctrlaltdel(gp);
- break;
- case REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR:
- remmina_plugin_spice_select_usb_devices(gp);
- break;
- default:
- break;
+ switch (feature->id) {
+ case REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY:
+ g_object_set(gpdata->session,
+ "read-only",
+ remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE),
+ NULL);
+ break;
+ case REMMINA_PLUGIN_SPICE_FEATURE_PREF_RESIZEGUEST:
+ g_object_set(gpdata->display,
+ "resize-guest",
+ remmina_plugin_service->file_get_int(remminafile, "resizeguest", TRUE),
+ NULL);
+ break;
+ case REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD:
+ g_object_set(gpdata->gtk_session,
+ "auto-clipboard",
+ !remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE),
+ NULL);
+ break;
+ case REMMINA_PLUGIN_SPICE_FEATURE_SCALE:
+ remmina_plugin_spice_update_scale(gp);
+ break;
+ case REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL:
+ remmina_plugin_spice_send_ctrlaltdel(gp);
+ break;
+ case REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR:
+ remmina_plugin_spice_select_usb_devices(gp);
+ break;
+ default:
+ break;
}
}
@@ -429,12 +405,13 @@ static void remmina_plugin_spice_call_feature(RemminaProtocolWidget *gp, const R
*/
static const RemminaProtocolSetting remmina_plugin_spice_basic_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "resizeguest", N_("Resize guest to match window size"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "usetls", N_("Use TLS encryption"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_FILE, "cacert", N_("Server CA certificate"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, NULL,
+ NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "resizeguest", N_("Resize guest to match window size"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "usetls", N_("Use TLS encryption"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_FILE, "cacert", N_("Server CA certificate"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array of RemminaProtocolSetting for advanced settings.
@@ -448,47 +425,48 @@ static const RemminaProtocolSetting remmina_plugin_spice_basic_settings[] =
*/
static const RemminaProtocolSetting remmina_plugin_spice_advanced_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "viewonly", N_("View only"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "enableaudio", N_("Enable audio channel"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "sharesmartcard", N_("Share smartcard"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "viewonly", N_("View only"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "enableaudio", N_("Enable audio channel"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "sharesmartcard", N_("Share smartcard"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array for available features.
* The last element of the array must be REMMINA_PROTOCOL_FEATURE_TYPE_END. */
static const RemminaProtocolFeature remmina_plugin_spice_features[] =
{
- { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "viewonly", N_("View only") },
- { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_SPICE_FEATURE_PREF_RESIZEGUEST, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "resizeguest", N_("Resize guest to match window size") },
- { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "disableclipboard", N_("Disable clipboard sync") },
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR, N_("Select USB devices for redirection"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_PLUGIN_SPICE_FEATURE_SCALE, NULL, NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
+ { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "viewonly",
+ N_("View only") },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_SPICE_FEATURE_PREF_RESIZEGUEST, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "resizeguest", N_("Resize guest to match window size") },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "disableclipboard", N_("Disable clipboard sync") },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR, N_("Select USB devices for redirection"), NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_PLUGIN_SPICE_FEATURE_SCALE, NULL, NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
};
static RemminaProtocolPlugin remmina_plugin_spice =
{
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- "SPICE", // Name
- N_("SPICE - Simple Protocol for Independent Computing Environments"), // Description
- GETTEXT_PACKAGE, // Translation domain
- VERSION, // Version number
- "remmina-spice", // Icon for normal connection
- "remmina-spice", // Icon for SSH connection
- remmina_plugin_spice_basic_settings, // Array for basic settings
- remmina_plugin_spice_advanced_settings, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_NONE, // SSH settings type
- remmina_plugin_spice_features, // Array for available features
- remmina_plugin_spice_init, // Plugin initialization
- remmina_plugin_spice_open_connection, // Plugin open connection
- remmina_plugin_spice_close_connection, // Plugin close connection
- remmina_plugin_spice_query_feature, // Query for available features
- remmina_plugin_spice_call_feature, // Call a feature
- remmina_plugin_spice_keystroke, // Send a keystroke
- NULL // Screenshot
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ "SPICE", // Name
+ N_("SPICE - Simple Protocol for Independent Computing Environments"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ VERSION, // Version number
+ "remmina-spice", // Icon for normal connection
+ "remmina-spice", // Icon for SSH connection
+ remmina_plugin_spice_basic_settings, // Array for basic settings
+ remmina_plugin_spice_advanced_settings, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_NONE, // SSH settings type
+ remmina_plugin_spice_features, // Array for available features
+ remmina_plugin_spice_init, // Plugin initialization
+ remmina_plugin_spice_open_connection, // Plugin open connection
+ remmina_plugin_spice_close_connection, // Plugin close connection
+ remmina_plugin_spice_query_feature, // Query for available features
+ remmina_plugin_spice_call_feature, // Call a feature
+ remmina_plugin_spice_keystroke, // Send a keystroke
+ NULL // Screenshot
};
G_MODULE_EXPORT gboolean
@@ -500,8 +478,7 @@ remmina_plugin_entry(RemminaPluginService *service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin_spice))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin_spice)) {
return FALSE;
}
diff --git a/remmina-plugins/spice/spice_plugin.h b/remmina-plugins/spice/spice_plugin.h
index 499366d91..d58f380c5 100644
--- a/remmina-plugins/spice/spice_plugin.h
+++ b/remmina-plugins/spice/spice_plugin.h
@@ -49,10 +49,9 @@
# include <usb-device-widget.h>
#endif
-#define GET_PLUGIN_DATA(gp) (RemminaPluginSpiceData*) g_object_get_data(G_OBJECT(gp), "plugin-data")
+#define GET_PLUGIN_DATA(gp) (RemminaPluginSpiceData*)g_object_get_data(G_OBJECT(gp), "plugin-data")
-typedef struct _RemminaPluginSpiceData
-{
+typedef struct _RemminaPluginSpiceData {
SpiceAudio *audio;
SpiceDisplay *display;
SpiceDisplayChannel *display_channel;
@@ -65,8 +64,8 @@ typedef struct _RemminaPluginSpiceData
/* key: SpiceFileTransferTask, value: RemminaPluginSpiceXferWidgets */
GHashTable *file_transfers;
GtkWidget *file_transfer_dialog;
-# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
-#endif /* SPICE_GTK_CHECK_VERSION */
+# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
+#endif /* SPICE_GTK_CHECK_VERSION */
} RemminaPluginSpiceData;
diff --git a/remmina-plugins/spice/spice_plugin_file_transfer.c b/remmina-plugins/spice/spice_plugin_file_transfer.c
index c00415068..d902a6c44 100644
--- a/remmina-plugins/spice/spice_plugin_file_transfer.c
+++ b/remmina-plugins/spice/spice_plugin_file_transfer.c
@@ -62,50 +62,48 @@ void remmina_plugin_spice_file_transfer_new_cb(SpiceMainChannel *main_channel, S
RemminaPluginSpiceData *gpdata = GET_PLUGIN_DATA(gp);
g_signal_connect(task,
- "finished",
- G_CALLBACK(remmina_plugin_spice_file_transfer_finished_cb),
- gp);
-
- if (!gpdata->file_transfers)
- {
- gpdata->file_transfers = g_hash_table_new_full(g_direct_hash,
- g_direct_equal,
- g_object_unref,
- (GDestroyNotify)remmina_plugin_spice_xfer_widgets_free);
+ "finished",
+ G_CALLBACK(remmina_plugin_spice_file_transfer_finished_cb),
+ gp);
+
+ if (!gpdata->file_transfers) {
+ gpdata->file_transfers = g_hash_table_new_full(g_direct_hash,
+ g_direct_equal,
+ g_object_unref,
+ (GDestroyNotify)remmina_plugin_spice_xfer_widgets_free);
}
- if (!gpdata->file_transfer_dialog)
- {
+ if (!gpdata->file_transfer_dialog) {
/*
* FIXME: Use the RemminaConnectionWindow as transient parent widget
* (and add the GTK_DIALOG_DESTROY_WITH_PARENT flag) if it becomes
* accessible from the Remmina plugin API.
*/
gpdata->file_transfer_dialog = gtk_dialog_new_with_buttons(_("File Transfers"),
- NULL, 0,
- _("_Cancel"),
- GTK_RESPONSE_CANCEL,
- NULL);
+ NULL, 0,
+ _("_Cancel"),
+ GTK_RESPONSE_CANCEL,
+ NULL);
dialog_content = gtk_dialog_get_content_area(GTK_DIALOG(gpdata->file_transfer_dialog));
gtk_widget_set_size_request(dialog_content, 400, -1);
gtk_window_set_resizable(GTK_WINDOW(gpdata->file_transfer_dialog), FALSE);
g_signal_connect(gpdata->file_transfer_dialog,
- "response",
- G_CALLBACK(remmina_plugin_spice_file_transfer_dialog_response_cb),
- gp);
+ "response",
+ G_CALLBACK(remmina_plugin_spice_file_transfer_dialog_response_cb),
+ gp);
}
widgets = remmina_plugin_spice_xfer_widgets_new(task);
g_hash_table_insert(gpdata->file_transfers, g_object_ref(task), widgets);
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gpdata->file_transfer_dialog))),
- widgets->vbox,
- TRUE, TRUE, 6);
+ widgets->vbox,
+ TRUE, TRUE, 6);
g_signal_connect(task,
- "notify::progress",
- G_CALLBACK(remmina_plugin_spice_file_transfer_progress_cb),
- gp);
+ "notify::progress",
+ G_CALLBACK(remmina_plugin_spice_file_transfer_progress_cb),
+ gp);
gtk_widget_show(gpdata->file_transfer_dialog);
}
@@ -131,21 +129,21 @@ static RemminaPluginSpiceXferWidgets * remmina_plugin_spice_xfer_widgets_new(Spi
widgets->cancel = gtk_button_new_from_icon_name("gtk-cancel", GTK_ICON_SIZE_SMALL_TOOLBAR);
g_signal_connect(widgets->cancel,
- "clicked",
- G_CALLBACK(remmina_plugin_spice_file_transfer_cancel_cb),
- task);
+ "clicked",
+ G_CALLBACK(remmina_plugin_spice_file_transfer_cancel_cb),
+ task);
gtk_widget_set_hexpand(widgets->cancel, FALSE);
gtk_widget_set_valign(widgets->cancel, GTK_ALIGN_CENTER);
gtk_box_pack_start(GTK_BOX(widgets->hbox), widgets->progress,
- TRUE, TRUE, 0);
+ TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(widgets->hbox), widgets->cancel,
- FALSE, TRUE, 0);
+ FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(widgets->vbox), widgets->label,
- TRUE, TRUE, 0);
+ TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(widgets->vbox), widgets->hbox,
- TRUE, TRUE, 0);
+ TRUE, TRUE, 0);
gtk_widget_show_all(widgets->vbox);
@@ -180,11 +178,9 @@ static void remmina_plugin_spice_file_transfer_dialog_response_cb(GtkDialog *dia
SpiceFileTransferTask *task;
RemminaPluginSpiceData *gpdata = GET_PLUGIN_DATA(gp);
- if (response == GTK_RESPONSE_CANCEL)
- {
+ if (response == GTK_RESPONSE_CANCEL) {
g_hash_table_iter_init(&iter, gpdata->file_transfers);
- while (g_hash_table_iter_next(&iter, &key, &value))
- {
+ while (g_hash_table_iter_next(&iter, &key, &value)) {
task = key;
spice_file_transfer_task_cancel(task);
}
@@ -199,10 +195,9 @@ static void remmina_plugin_spice_file_transfer_progress_cb(GObject *task, GParam
RemminaPluginSpiceData *gpdata = GET_PLUGIN_DATA(gp);
widgets = g_hash_table_lookup(gpdata->file_transfers, task);
- if (widgets)
- {
+ if (widgets) {
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->progress),
- spice_file_transfer_task_get_progress(SPICE_FILE_TRANSFER_TASK(task)));
+ spice_file_transfer_task_get_progress(SPICE_FILE_TRANSFER_TASK(task)));
}
}
@@ -220,28 +215,24 @@ static void remmina_plugin_spice_file_transfer_finished_cb(SpiceFileTransferTask
*/
filename = spice_file_transfer_task_get_filename(task);
- if (error)
- {
+ if (error) {
notification = g_notification_new(_("Transfer error"));
notification_message = g_strdup_printf(_("%s: %s"),
- filename, error->message);
- }
- else
- {
+ filename, error->message);
+ }else {
notification = g_notification_new(_("Transfer completed"));
notification_message = g_strdup_printf(_("File %s transferred successfully"),
- filename);
+ filename);
}
g_notification_set_body(notification, notification_message);
g_application_send_notification(g_application_get_default(),
- "remmina-plugin-spice-file-transfer-finished",
- notification);
+ "remmina-plugin-spice-file-transfer-finished",
+ notification);
g_hash_table_remove(gpdata->file_transfers, task);
- if (!g_hash_table_size(gpdata->file_transfers))
- {
+ if (!g_hash_table_size(gpdata->file_transfers)) {
gtk_widget_hide(gpdata->file_transfer_dialog);
}
@@ -249,5 +240,5 @@ static void remmina_plugin_spice_file_transfer_finished_cb(SpiceFileTransferTask
g_free(notification_message);
g_object_unref(notification);
}
-# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
-#endif /* SPICE_GTK_CHECK_VERSION */
+# endif /* SPICE_GTK_CHECK_VERSION(0, 31, 0) */
+#endif /* SPICE_GTK_CHECK_VERSION */
diff --git a/remmina-plugins/spice/spice_plugin_usb.c b/remmina-plugins/spice/spice_plugin_usb.c
index 82149f452..063b6299d 100644
--- a/remmina-plugins/spice/spice_plugin_usb.c
+++ b/remmina-plugins/spice/spice_plugin_usb.c
@@ -49,24 +49,24 @@ void remmina_plugin_spice_select_usb_devices(RemminaProtocolWidget *gp)
* accessible from the Remmina plugin API.
*/
dialog = gtk_dialog_new_with_buttons(_("Select USB devices for redirection"),
- NULL,
- GTK_DIALOG_MODAL,
- _("_Close"),
- GTK_RESPONSE_ACCEPT,
- NULL);
+ NULL,
+ GTK_DIALOG_MODAL,
+ _("_Close"),
+ GTK_RESPONSE_ACCEPT,
+ NULL);
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
usb_device_widget = spice_usb_device_widget_new(gpdata->session, NULL);
g_signal_connect(usb_device_widget,
- "connect-failed",
- G_CALLBACK(remmina_plugin_spice_usb_connect_failed_cb),
- gp);
+ "connect-failed",
+ G_CALLBACK(remmina_plugin_spice_usb_connect_failed_cb),
+ gp);
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
- usb_device_widget,
- TRUE,
- TRUE,
- 0);
+ usb_device_widget,
+ TRUE,
+ TRUE,
+ 0);
gtk_widget_show_all(dialog);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
@@ -78,8 +78,7 @@ static void remmina_plugin_spice_usb_connect_failed_cb(GObject *object, SpiceUsb
GtkWidget *dialog;
- if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_CANCELLED)
- {
+ if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_CANCELLED) {
return;
}
@@ -89,13 +88,13 @@ static void remmina_plugin_spice_usb_connect_failed_cb(GObject *object, SpiceUsb
* accessible from the Remmina plugin API.
*/
dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- _("USB redirection error"));
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("USB redirection error"));
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
- "%s",
- error->message);
+ "%s",
+ error->message);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
}
diff --git a/remmina-plugins/telepathy/telepathy_channel_handler.c b/remmina-plugins/telepathy/telepathy_channel_handler.c
index eed7db229..7c37e594b 100644
--- a/remmina-plugins/telepathy/telepathy_channel_handler.c
+++ b/remmina-plugins/telepathy/telepathy_channel_handler.c
@@ -48,8 +48,7 @@
extern RemminaPluginService *remmina_plugin_telepathy_service;
-typedef struct _RemminaTpChannelHandler
-{
+typedef struct _RemminaTpChannelHandler {
gchar *connection_path;
gchar *channel_path;
GHashTable *channel_properties;
@@ -72,40 +71,32 @@ typedef struct _RemminaTpChannelHandler
static void remmina_tp_channel_handler_free(RemminaTpChannelHandler *chandler)
{
TRACE_CALL("__func__");
- if (chandler->disconnect_handler)
- {
+ if (chandler->disconnect_handler) {
g_signal_handler_disconnect(chandler->proto_widget, chandler->disconnect_handler);
chandler->disconnect_handler = 0;
}
g_free(chandler->connection_path);
g_free(chandler->channel_path);
g_hash_table_destroy(chandler->channel_properties);
- if (chandler->bus)
- {
+ if (chandler->bus) {
g_object_unref(chandler->bus);
}
- if (chandler->account)
- {
+ if (chandler->account) {
g_object_unref(chandler->account);
}
- if (chandler->connection)
- {
+ if (chandler->connection) {
g_object_unref(chandler->connection);
}
- if (chandler->channel)
- {
+ if (chandler->channel) {
g_object_unref(chandler->channel);
}
- if (chandler->alias)
- {
+ if (chandler->alias) {
g_free(chandler->alias);
}
- if (chandler->host)
- {
+ if (chandler->host) {
g_free(chandler->host);
}
- if (chandler->protocol)
- {
+ if (chandler->protocol) {
g_free(chandler->protocol);
}
g_free(chandler);
@@ -114,7 +105,7 @@ static void remmina_tp_channel_handler_free(RemminaTpChannelHandler *chandler)
static void remmina_tp_channel_handler_channel_closed(TpChannel *channel, gpointer user_data, GObject *self)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
g_print("remmina_tp_channel_handler_channel_closed: %s\n", chandler->channel_path);
remmina_tp_channel_handler_free(chandler);
@@ -149,18 +140,17 @@ static void remmina_tp_channel_handler_connect(RemminaTpChannelHandler *chandler
chandler->protocol = NULL;
chandler->proto_widget = remmina_plugin_telepathy_service->open_connection(remminafile,
- G_CALLBACK(remmina_tp_channel_handler_on_disconnect), chandler, &chandler->disconnect_handler);
+ G_CALLBACK(remmina_tp_channel_handler_on_disconnect), chandler, &chandler->disconnect_handler);
}
static void remmina_tp_channel_handler_get_service(TpProxy *channel, const GValue *service, const GError *error,
- gpointer user_data, GObject *weak_object)
+ gpointer user_data, GObject *weak_object)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
const gchar *svc;
- if (error != NULL)
- {
+ if (error != NULL) {
g_print("remmina_tp_channel_handler_get_service: %s", error->message);
remmina_tp_channel_handler_free(chandler);
return;
@@ -168,25 +158,21 @@ static void remmina_tp_channel_handler_get_service(TpProxy *channel, const GValu
svc = g_value_get_string(service);
g_print("remmina_tp_channel_handler_get_service: %s %s:%u\n", svc, chandler->host, chandler->port);
- if (g_strcmp0(svc, "rfb") == 0)
- {
+ if (g_strcmp0(svc, "rfb") == 0) {
chandler->protocol = g_strdup("VNC");
- }
- else
- {
+ }else {
chandler->protocol = g_ascii_strup(svc, -1);
}
remmina_tp_channel_handler_connect(chandler);
}
static void remmina_tp_channel_handler_accept(TpChannel *channel, const GValue *address, const GError *error,
- gpointer user_data, GObject *weak_object)
+ gpointer user_data, GObject *weak_object)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
- if (error != NULL)
- {
+ if (error != NULL) {
g_print("remmina_tp_channel_handler_accept: %s", error->message);
remmina_tp_channel_handler_free(chandler);
return;
@@ -195,7 +181,7 @@ static void remmina_tp_channel_handler_accept(TpChannel *channel, const GValue *
dbus_g_type_struct_get(address, 0, &chandler->host, 1, &chandler->port, G_MAXUINT);
tp_cli_dbus_properties_call_get(channel, -1, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, "Service",
- remmina_tp_channel_handler_get_service, chandler, NULL, NULL);
+ remmina_tp_channel_handler_get_service, chandler, NULL, NULL);
}
static void remmina_tp_channel_handler_on_response(GtkDialog *dialog, gint response_id, RemminaTpChannelHandler *chandler)
@@ -205,17 +191,14 @@ static void remmina_tp_channel_handler_on_response(GtkDialog *dialog, gint respo
{ 0 };
GError *error;
- if (response_id == GTK_RESPONSE_YES)
- {
+ if (response_id == GTK_RESPONSE_YES) {
g_value_init(&noop, G_TYPE_INT);
tp_cli_channel_type_stream_tube_call_accept(chandler->channel, -1, TP_SOCKET_ADDRESS_TYPE_IPV4,
- TP_SOCKET_ACCESS_CONTROL_LOCALHOST, &noop, remmina_tp_channel_handler_accept, chandler, NULL,
- NULL);
+ TP_SOCKET_ACCESS_CONTROL_LOCALHOST, &noop, remmina_tp_channel_handler_accept, chandler, NULL,
+ NULL);
g_value_unset(&noop);
tp_svc_client_handler_return_from_handle_channels(chandler->context);
- }
- else
- {
+ }else {
error = g_error_new(TP_ERRORS, TP_ERROR_NOT_AVAILABLE, "Channel rejected by user.");
dbus_g_method_return_error(chandler->context, error);
g_error_free(error);
@@ -224,10 +207,10 @@ static void remmina_tp_channel_handler_on_response(GtkDialog *dialog, gint respo
}
static void remmina_tp_channel_handler_get_contacts(TpConnection *connection, guint n_contacts, TpContact * const *contacts,
- guint n_failed, const TpHandle *failed, const GError *error, gpointer user_data, GObject *weak_object)
+ guint n_failed, const TpHandle *failed, const GError *error, gpointer user_data, GObject *weak_object)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
TpContact *contact;
gchar *token;
gchar *cm;
@@ -237,14 +220,12 @@ static void remmina_tp_channel_handler_get_contacts(TpConnection *connection, gu
GtkWidget *image;
GtkWidget *dialog;
- if (error != NULL)
- {
+ if (error != NULL) {
g_print("remmina_tp_channel_handler_get_contacts: %s", error->message);
remmina_tp_channel_handler_free(chandler);
return;
}
- if (n_contacts <= 0)
- {
+ if (n_contacts <= 0) {
g_print("remmina_tp_channel_handler_get_contacts: no contacts\n");
remmina_tp_channel_handler_free(chandler);
return;
@@ -253,20 +234,18 @@ static void remmina_tp_channel_handler_get_contacts(TpConnection *connection, gu
chandler->alias = g_strdup(tp_contact_get_alias(contact));
dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
- _("%s wants to share his/her desktop.\nDo you accept the invitation?"), chandler->alias);
+ _("%s wants to share his/her desktop.\nDo you accept the invitation?"), chandler->alias);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(remmina_tp_channel_handler_on_response), chandler);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), NULL);
gtk_window_set_title(GTK_WINDOW(dialog), _("Desktop sharing invitation"));
remmina_plugin_telepathy_service->ui_register(dialog);
gtk_widget_show(dialog);
- token = (gchar *) tp_contact_get_avatar_token(contact);
- if (token == NULL)
- {
+ token = (gchar*)tp_contact_get_avatar_token(contact);
+ if (token == NULL) {
return;
}
- if (!tp_connection_parse_object_path(chandler->connection, &protocol, &cm))
- {
+ if (!tp_connection_parse_object_path(chandler->connection, &protocol, &cm)) {
g_print("tp_connection_parse_object_path: failed\n");
return;
}
@@ -275,11 +254,9 @@ static void remmina_tp_channel_handler_get_contacts(TpConnection *connection, gu
g_free(cm);
g_free(protocol);
g_free(token);
- if (g_file_test(filename, G_FILE_TEST_EXISTS))
- {
+ if (g_file_test(filename, G_FILE_TEST_EXISTS)) {
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
- if (pixbuf)
- {
+ if (pixbuf) {
image = gtk_image_new_from_pixbuf(pixbuf);
gtk_widget_show(image);
g_object_unref(pixbuf);
@@ -292,22 +269,20 @@ static void remmina_tp_channel_handler_get_contacts(TpConnection *connection, gu
static void remmina_tp_channel_handler_channel_ready(TpChannel *channel, const GError *channel_error, gpointer user_data)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
TpHandle handle;
GError *error = NULL;
TpContactFeature features[] =
{ TP_CONTACT_FEATURE_ALIAS, TP_CONTACT_FEATURE_AVATAR_TOKEN };
- if (channel_error != NULL)
- {
+ if (channel_error != NULL) {
g_print("remmina_tp_channel_handler_channel_ready: %s\n", channel_error->message);
remmina_tp_channel_handler_free(chandler);
return;
}
if (tp_cli_channel_connect_to_closed(channel, remmina_tp_channel_handler_channel_closed, chandler, NULL, NULL, &error)
- == NULL)
- {
+ == NULL) {
g_print("tp_cli_channel_connect_to_closed: %s\n", channel_error->message);
remmina_tp_channel_handler_free(chandler);
return;
@@ -316,27 +291,25 @@ static void remmina_tp_channel_handler_channel_ready(TpChannel *channel, const G
handle = tp_channel_get_handle(channel, NULL);
tp_connection_get_contacts_by_handle(chandler->connection, 1, &handle, G_N_ELEMENTS(features), features,
- remmina_tp_channel_handler_get_contacts, chandler, NULL, NULL);
+ remmina_tp_channel_handler_get_contacts, chandler, NULL, NULL);
}
static void remmina_tp_channel_handler_connection_ready(TpConnection *connection, const GError *connection_error,
- gpointer user_data)
+ gpointer user_data)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
GError *error = NULL;
- if (connection_error != NULL)
- {
+ if (connection_error != NULL) {
g_print("remmina_tp_channel_handler_connection_ready: %s\n", connection_error->message);
remmina_tp_channel_handler_free(chandler);
return;
}
chandler->channel = tp_channel_new_from_properties(connection, chandler->channel_path, chandler->channel_properties,
- &error);
- if (chandler->channel == NULL)
- {
+ &error);
+ if (chandler->channel == NULL) {
g_print("tp_channel_new_from_properties: %s\n", error->message);
remmina_tp_channel_handler_free(chandler);
return;
@@ -347,19 +320,17 @@ static void remmina_tp_channel_handler_connection_ready(TpConnection *connection
static void remmina_tp_channel_handler_account_ready(GObject *account, GAsyncResult *res, gpointer user_data)
{
TRACE_CALL("__func__");
- RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler *) user_data;
+ RemminaTpChannelHandler *chandler = (RemminaTpChannelHandler*)user_data;
GError *error = NULL;
- if (!tp_account_prepare_finish(TP_ACCOUNT(account), res, &error))
- {
+ if (!tp_account_prepare_finish(TP_ACCOUNT(account), res, &error)) {
g_print("tp_account_prepare_finish: %s\n", error->message);
remmina_tp_channel_handler_free(chandler);
return;
}
chandler->connection = tp_connection_new(chandler->bus, NULL, chandler->connection_path, &error);
- if (chandler->connection == NULL)
- {
+ if (chandler->connection == NULL) {
g_print("tp_connection_new: %s\n", error->message);
remmina_tp_channel_handler_free(chandler);
return;
@@ -368,7 +339,7 @@ static void remmina_tp_channel_handler_account_ready(GObject *account, GAsyncRes
}
void remmina_tp_channel_handler_new(const gchar *account_path, const gchar *connection_path, const gchar *channel_path,
- GHashTable *channel_properties, DBusGMethodInvocation *context)
+ GHashTable *channel_properties, DBusGMethodInvocation *context)
{
TRACE_CALL("__func__");
TpDBusDaemon *bus;
@@ -377,14 +348,12 @@ void remmina_tp_channel_handler_new(const gchar *account_path, const gchar *conn
RemminaTpChannelHandler *chandler;
bus = tp_dbus_daemon_dup(&error);
- if (bus == NULL)
- {
+ if (bus == NULL) {
g_print("tp_dbus_daemon_dup: %s", error->message);
return;
}
account = tp_account_new(bus, account_path, &error);
- if (account == NULL)
- {
+ if (account == NULL) {
g_object_unref(bus);
g_print("tp_account_new: %s", error->message);
return;
@@ -396,8 +365,8 @@ void remmina_tp_channel_handler_new(const gchar *account_path, const gchar *conn
chandler->connection_path = g_strdup(connection_path);
chandler->channel_path = g_strdup(channel_path);
chandler->channel_properties = tp_asv_new(NULL, NULL);
- tp_g_hash_table_update(chandler->channel_properties, channel_properties, (GBoxedCopyFunc) g_strdup,
- (GBoxedCopyFunc) tp_g_value_slice_dup);
+ tp_g_hash_table_update(chandler->channel_properties, channel_properties, (GBoxedCopyFunc)g_strdup,
+ (GBoxedCopyFunc)tp_g_value_slice_dup);
chandler->context = context;
tp_account_prepare_async(account, NULL, remmina_tp_channel_handler_account_ready, chandler);
diff --git a/remmina-plugins/telepathy/telepathy_channel_handler.h b/remmina-plugins/telepathy/telepathy_channel_handler.h
index 6a9f0ce9b..9699cea5c 100644
--- a/remmina-plugins/telepathy/telepathy_channel_handler.h
+++ b/remmina-plugins/telepathy/telepathy_channel_handler.h
@@ -39,7 +39,7 @@ G_BEGIN_DECLS
void
remmina_tp_channel_handler_new(const gchar *account_path, const gchar *connection_path, const gchar *channel_path,
- GHashTable *channel_properties, DBusGMethodInvocation *context);
+ GHashTable *channel_properties, DBusGMethodInvocation *context);
G_END_DECLS
diff --git a/remmina-plugins/telepathy/telepathy_handler.c b/remmina-plugins/telepathy/telepathy_handler.c
index f5d8e0074..16644e8a5 100644
--- a/remmina-plugins/telepathy/telepathy_handler.c
+++ b/remmina-plugins/telepathy/telepathy_handler.c
@@ -48,82 +48,80 @@ extern RemminaPluginService *remmina_plugin_telepathy_service;
static void remmina_tp_handler_iface_init(gpointer g_iface, gpointer iface_data);
-G_DEFINE_TYPE_WITH_CODE (RemminaTpHandler, remmina_tp_handler, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CLIENT, NULL);
- G_IMPLEMENT_INTERFACE( TP_TYPE_SVC_CLIENT_HANDLER, remmina_tp_handler_iface_init);
- );
-
- static void remmina_tp_handler_class_init(RemminaTpHandlerClass *klass)
- {
- TRACE_CALL("__func__");
- }
-
- static void remmina_tp_handler_init(RemminaTpHandler *handler)
- {
- TRACE_CALL("__func__");
- }
-
- static void remmina_tp_handler_handle_channels(TpSvcClientHandler *handler, const char *account_path,
- const char *connection_path, const GPtrArray *channels, const GPtrArray *requests_satisfied,
- guint64 user_action_time, GHashTable *handler_info, DBusGMethodInvocation *context)
- {
- TRACE_CALL("__func__");
- gint i;
- GValueArray *array;
-
- for (i = 0; i < channels->len; i++)
- {
- array = g_ptr_array_index(channels, i);
- remmina_tp_channel_handler_new(account_path, connection_path,
- (const gchar *) g_value_get_boxed(g_value_array_get_nth(array, 0)),
- (GHashTable *) g_value_get_boxed(g_value_array_get_nth(array, 1)), context);
- }
- }
-
- static void remmina_tp_handler_iface_init(gpointer g_iface, gpointer iface_data)
- {
- TRACE_CALL("__func__");
- TpSvcClientHandlerClass *klass = (TpSvcClientHandlerClass *) g_iface;
-
-#define IMPLEMENT(x) tp_svc_client_handler_implement_##x (klass, remmina_tp_handler_##x)
- IMPLEMENT(handle_channels);
+G_DEFINE_TYPE_WITH_CODE(RemminaTpHandler, remmina_tp_handler, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE(TP_TYPE_SVC_CLIENT, NULL);
+ G_IMPLEMENT_INTERFACE( TP_TYPE_SVC_CLIENT_HANDLER, remmina_tp_handler_iface_init);
+ );
+
+static void remmina_tp_handler_class_init(RemminaTpHandlerClass *klass)
+{
+ TRACE_CALL("__func__");
+}
+
+static void remmina_tp_handler_init(RemminaTpHandler *handler)
+{
+ TRACE_CALL("__func__");
+}
+
+static void remmina_tp_handler_handle_channels(TpSvcClientHandler *handler, const char *account_path,
+ const char *connection_path, const GPtrArray *channels, const GPtrArray *requests_satisfied,
+ guint64 user_action_time, GHashTable *handler_info, DBusGMethodInvocation *context)
+{
+ TRACE_CALL("__func__");
+ gint i;
+ GValueArray *array;
+
+ for (i = 0; i < channels->len; i++) {
+ array = g_ptr_array_index(channels, i);
+ remmina_tp_channel_handler_new(account_path, connection_path,
+ (const gchar*)g_value_get_boxed(g_value_array_get_nth(array, 0)),
+ (GHashTable*)g_value_get_boxed(g_value_array_get_nth(array, 1)), context);
+ }
+}
+
+static void remmina_tp_handler_iface_init(gpointer g_iface, gpointer iface_data)
+{
+ TRACE_CALL("__func__");
+ TpSvcClientHandlerClass *klass = (TpSvcClientHandlerClass*)g_iface;
+
+#define IMPLEMENT(x) tp_svc_client_handler_implement_ ## x(klass, remmina_tp_handler_ ## x)
+ IMPLEMENT(handle_channels);
#undef IMPLEMENT
- }
-
- static gboolean remmina_tp_handler_register(RemminaTpHandler *handler)
- {
- TRACE_CALL("__func__");
- TpDBusDaemon *bus;
- GError *error = NULL;
-
- bus = tp_dbus_daemon_dup(&error);
- if (bus == NULL)
- {
- g_print("tp_dbus_daemon_dup: %s", error->message);
- return FALSE;
- }
- if (!tp_dbus_daemon_request_name (bus, REMMINA_TP_BUS_NAME, FALSE, &error))
- {
- g_object_unref(bus);
- g_print("tp_dbus_daemon_request_name: %s", error->message);
- return FALSE;
- } dbus_g_connection_register_G_OBJECT(
- tp_proxy_get_dbus_connection (TP_PROXY (bus)),
- REMMINA_TP_OBJECT_PATH, G_OBJECT(handler));
- g_object_unref(bus);
- g_print("remmina_tp_handler_register: bus_name " REMMINA_TP_BUS_NAME
- " object_path " REMMINA_TP_OBJECT_PATH "\n");
- return TRUE;
- }
-
- RemminaTpHandler*
- remmina_tp_handler_new(void)
- {
- TRACE_CALL("__func__");
- RemminaTpHandler *handler;
-
- handler = REMMINA_TP_HANDLER(g_object_new(REMMINA_TYPE_TP_HANDLER, NULL));
- remmina_tp_handler_register(handler);
- return handler;
- }
+}
+
+static gboolean remmina_tp_handler_register(RemminaTpHandler *handler)
+{
+ TRACE_CALL("__func__");
+ TpDBusDaemon *bus;
+ GError *error = NULL;
+
+ bus = tp_dbus_daemon_dup(&error);
+ if (bus == NULL) {
+ g_print("tp_dbus_daemon_dup: %s", error->message);
+ return FALSE;
+ }
+ if (!tp_dbus_daemon_request_name(bus, REMMINA_TP_BUS_NAME, FALSE, &error)) {
+ g_object_unref(bus);
+ g_print("tp_dbus_daemon_request_name: %s", error->message);
+ return FALSE;
+ }
+ dbus_g_connection_register_G_OBJECT(
+ tp_proxy_get_dbus_connection(TP_PROXY(bus)),
+ REMMINA_TP_OBJECT_PATH, G_OBJECT(handler));
+ g_object_unref(bus);
+ g_print("remmina_tp_handler_register: bus_name " REMMINA_TP_BUS_NAME
+ " object_path " REMMINA_TP_OBJECT_PATH "\n");
+ return TRUE;
+}
+
+RemminaTpHandler*
+remmina_tp_handler_new(void)
+{
+ TRACE_CALL("__func__");
+ RemminaTpHandler *handler;
+
+ handler = REMMINA_TP_HANDLER(g_object_new(REMMINA_TYPE_TP_HANDLER, NULL));
+ remmina_tp_handler_register(handler);
+ return handler;
+}
diff --git a/remmina-plugins/telepathy/telepathy_handler.h b/remmina-plugins/telepathy/telepathy_handler.h
index 062a0b795..9116345f3 100644
--- a/remmina-plugins/telepathy/telepathy_handler.h
+++ b/remmina-plugins/telepathy/telepathy_handler.h
@@ -37,20 +37,18 @@
G_BEGIN_DECLS
-#define REMMINA_TYPE_TP_HANDLER (remmina_tp_handler_get_type ())
-#define REMMINA_TP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), REMMINA_TYPE_TP_HANDLER, RemminaTpHandler))
-#define REMMINA_TP_HANDLER_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), REMMINA_TYPE_TP_HANDLER, RemminaTpHandlerClass))
-#define REMMINA_IS_TP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), REMMINA_TYPE_TP_HANDLER))
-#define REMMINA_IS_TP_HANDLER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), REMMINA_TYPE_TP_HANDLER))
-#define REMMINA_TP_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REMMINA_TYPE_TP_HANDLER, RemminaTpHandlerClass))
-
-typedef struct _RemminaTpHandler
-{
+#define REMMINA_TYPE_TP_HANDLER (remmina_tp_handler_get_type())
+#define REMMINA_TP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), REMMINA_TYPE_TP_HANDLER, RemminaTpHandler))
+#define REMMINA_TP_HANDLER_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST((obj), REMMINA_TYPE_TP_HANDLER, RemminaTpHandlerClass))
+#define REMMINA_IS_TP_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), REMMINA_TYPE_TP_HANDLER))
+#define REMMINA_IS_TP_HANDLER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((obj), REMMINA_TYPE_TP_HANDLER))
+#define REMMINA_TP_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), REMMINA_TYPE_TP_HANDLER, RemminaTpHandlerClass))
+
+typedef struct _RemminaTpHandler {
GObject parent;
} RemminaTpHandler;
-typedef struct _RemminaTpHandlerClass
-{
+typedef struct _RemminaTpHandlerClass {
GObjectClass parent_class;
} RemminaTpHandlerClass;
diff --git a/remmina-plugins/telepathy/telepathy_plugin.c b/remmina-plugins/telepathy/telepathy_plugin.c
index be7c4152a..5bccf5beb 100644
--- a/remmina-plugins/telepathy/telepathy_plugin.c
+++ b/remmina-plugins/telepathy/telepathy_plugin.c
@@ -44,8 +44,7 @@ static RemminaTpHandler *remmina_tp_handler = NULL;
void remmina_plugin_telepathy_entry(void)
{
TRACE_CALL("__func__");
- if (remmina_tp_handler == NULL)
- {
+ if (remmina_tp_handler == NULL) {
remmina_tp_handler = remmina_tp_handler_new();
}
}
@@ -53,12 +52,12 @@ void remmina_plugin_telepathy_entry(void)
/* Entry plugin definition and features */
static RemminaEntryPlugin remmina_plugin_telepathy =
{
- REMMINA_PLUGIN_TYPE_ENTRY, // Type
- "telepathy", // Name
- N_("Telepathy - Desktop Sharing"), // Description
- GETTEXT_PACKAGE, // Translation domain
- VERSION, // Version number
- remmina_plugin_telepathy_entry // Plugin entry function
+ REMMINA_PLUGIN_TYPE_ENTRY, // Type
+ "telepathy", // Name
+ N_("Telepathy - Desktop Sharing"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ VERSION, // Version number
+ remmina_plugin_telepathy_entry // Plugin entry function
};
G_MODULE_EXPORT gboolean
@@ -70,8 +69,7 @@ remmina_plugin_entry(RemminaPluginService *service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin_telepathy))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin_telepathy)) {
return FALSE;
}
return TRUE;
diff --git a/remmina-plugins/tool_hello_world/plugin.c b/remmina-plugins/tool_hello_world/plugin.c
index ac1727191..1d64551bc 100644
--- a/remmina-plugins/tool_hello_world/plugin.c
+++ b/remmina-plugins/tool_hello_world/plugin.c
@@ -58,7 +58,7 @@ static gboolean remmina_plugin_tool_open_connection(RemminaProtocolWidget *gp)
GtkDialog *dialog;
dialog = GTK_DIALOG(gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL | GTK_DIALOG_USE_HEADER_BAR,
- GTK_MESSAGE_INFO, GTK_BUTTONS_OK, PLUGIN_DESCRIPTION));
+ GTK_MESSAGE_INFO, GTK_BUTTONS_OK, PLUGIN_DESCRIPTION));
gtk_dialog_run(dialog);
gtk_widget_destroy(GTK_WIDGET(dialog));
return FALSE;
@@ -88,23 +88,23 @@ static const RemminaProtocolSetting remmina_plugin_tool_basic_settings[] =
/* Protocol plugin definition and features */
static RemminaProtocolPlugin remmina_plugin = {
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- PLUGIN_NAME, // Name
- PLUGIN_DESCRIPTION, // Description
- GETTEXT_PACKAGE, // Translation domain
- PLUGIN_VERSION, // Version number
- PLUGIN_APPICON, // Icon for normal connection
- PLUGIN_APPICON, // Icon for SSH connection
- remmina_plugin_tool_basic_settings, // Array for basic settings
- NULL, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_NONE, // SSH settings type
- NULL, // Array for available features
- remmina_plugin_tool_init, // Plugin initialization
- remmina_plugin_tool_open_connection, // Plugin open connection
- remmina_plugin_tool_close_connection, // Plugin close connection
- NULL, // Query for available features
- NULL, // Call a feature
- NULL, // Send a keystroke */
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ PLUGIN_NAME, // Name
+ PLUGIN_DESCRIPTION, // Description
+ GETTEXT_PACKAGE, // Translation domain
+ PLUGIN_VERSION, // Version number
+ PLUGIN_APPICON, // Icon for normal connection
+ PLUGIN_APPICON, // Icon for SSH connection
+ remmina_plugin_tool_basic_settings, // Array for basic settings
+ NULL, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_NONE, // SSH settings type
+ NULL, // Array for available features
+ remmina_plugin_tool_init, // Plugin initialization
+ remmina_plugin_tool_open_connection, // Plugin open connection
+ remmina_plugin_tool_close_connection, // Plugin close connection
+ NULL, // Query for available features
+ NULL, // Call a feature
+ NULL, // Send a keystroke */
};
G_MODULE_EXPORT gboolean remmina_plugin_entry(RemminaPluginService *service)
@@ -115,8 +115,7 @@ G_MODULE_EXPORT gboolean remmina_plugin_entry(RemminaPluginService *service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin)) {
return FALSE;
}
diff --git a/remmina-plugins/vnc/vnc_plugin.c b/remmina-plugins/vnc/vnc_plugin.c
index 1bd1abee9..d12ef8e03 100644
--- a/remmina-plugins/vnc/vnc_plugin.c
+++ b/remmina-plugins/vnc/vnc_plugin.c
@@ -45,10 +45,9 @@
#define REMMINA_PLUGIN_VNC_FEATURE_UNFOCUS 7
#define REMMINA_PLUGIN_VNC_FEATURE_TOOL_SENDCTRLALTDEL 8
-#define GET_PLUGIN_DATA(gp) (RemminaPluginVncData*) g_object_get_data(G_OBJECT(gp), "plugin-data")
+#define GET_PLUGIN_DATA(gp) (RemminaPluginVncData*)g_object_get_data(G_OBJECT(gp), "plugin-data")
-typedef struct _RemminaPluginVncData
-{
+typedef struct _RemminaPluginVncData {
/* Whether the user requests to connect/disconnect */
gboolean connected;
/* Whether the vnc process is running */
@@ -93,14 +92,13 @@ static RemminaPluginService *remmina_plugin_service = NULL;
static int dot_cursor_x_hot = 2;
static int dot_cursor_y_hot = 2;
static const gchar * dot_cursor_xpm[] =
-{ "5 5 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ... ", ".+++.", ".+ +.", ".+++.", " ... " };
+{ "5 5 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ... ", ".+++.", ".+ +.", ".+++.", " ... " };
-#define LOCK_BUFFER(t) if(t){CANCEL_DEFER}pthread_mutex_lock(&gpdata->buffer_mutex);
-#define UNLOCK_BUFFER(t) pthread_mutex_unlock(&gpdata->buffer_mutex);if(t){CANCEL_ASYNC}
+#define LOCK_BUFFER(t) if (t) { CANCEL_DEFER } pthread_mutex_lock(&gpdata->buffer_mutex);
+#define UNLOCK_BUFFER(t) pthread_mutex_unlock(&gpdata->buffer_mutex); if (t) { CANCEL_ASYNC }
-enum
-{
+enum {
REMMINA_PLUGIN_VNC_EVENT_KEY,
REMMINA_PLUGIN_VNC_EVENT_POINTER,
REMMINA_PLUGIN_VNC_EVENT_CUTTEXT,
@@ -109,24 +107,19 @@ enum
REMMINA_PLUGIN_VNC_EVENT_CHAT_CLOSE
};
-typedef struct _RemminaPluginVncEvent
-{
+typedef struct _RemminaPluginVncEvent {
gint event_type;
- union
- {
- struct
- {
+ union {
+ struct {
guint keyval;
gboolean pressed;
} key;
- struct
- {
+ struct {
gint x;
gint y;
gint button_mask;
} pointer;
- struct
- {
+ struct {
gchar *text;
} text;
} event_data;
@@ -158,10 +151,10 @@ static gboolean onMainThread_cb(struct onMainThread_cb_data *d)
{
TRACE_CALL("__func__");
if ( !d->cancelled ) {
- switch( d->func ) {
- case FUNC_UPDATE_SCALE:
- remmina_plugin_vnc_update_scale(d->gp, d->scale);
- break;
+ switch ( d->func ) {
+ case FUNC_UPDATE_SCALE:
+ remmina_plugin_vnc_update_scale(d->gp, d->scale);
+ break;
}
pthread_mutex_unlock( &d->mu );
} else {
@@ -187,7 +180,7 @@ static void onMainThread_schedule_callback_and_wait( struct onMainThread_cb_data
pthread_cleanup_push( onMainThread_cleanup_handler, d );
pthread_mutex_init( &d->mu, NULL );
pthread_mutex_lock( &d->mu );
- gdk_threads_add_idle( (GSourceFunc)onMainThread_cb, (gpointer) d );
+ gdk_threads_add_idle( (GSourceFunc)onMainThread_cb, (gpointer)d );
pthread_mutex_lock( &d->mu );
@@ -204,31 +197,29 @@ static void remmina_plugin_vnc_event_push(RemminaProtocolWidget *gp, gint event_
event = g_new(RemminaPluginVncEvent, 1);
event->event_type = event_type;
- switch (event_type)
- {
- case REMMINA_PLUGIN_VNC_EVENT_KEY:
- event->event_data.key.keyval = GPOINTER_TO_UINT(p1);
- event->event_data.key.pressed = GPOINTER_TO_INT(p2);
- break;
- case REMMINA_PLUGIN_VNC_EVENT_POINTER:
- event->event_data.pointer.x = GPOINTER_TO_INT(p1);
- event->event_data.pointer.y = GPOINTER_TO_INT(p2);
- event->event_data.pointer.button_mask = GPOINTER_TO_INT(p3);
- break;
- case REMMINA_PLUGIN_VNC_EVENT_CUTTEXT:
- case REMMINA_PLUGIN_VNC_EVENT_CHAT_SEND:
- event->event_data.text.text = g_strdup((char*) p1);
- break;
- default:
- break;
+ switch (event_type) {
+ case REMMINA_PLUGIN_VNC_EVENT_KEY:
+ event->event_data.key.keyval = GPOINTER_TO_UINT(p1);
+ event->event_data.key.pressed = GPOINTER_TO_INT(p2);
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_POINTER:
+ event->event_data.pointer.x = GPOINTER_TO_INT(p1);
+ event->event_data.pointer.y = GPOINTER_TO_INT(p2);
+ event->event_data.pointer.button_mask = GPOINTER_TO_INT(p3);
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_CUTTEXT:
+ case REMMINA_PLUGIN_VNC_EVENT_CHAT_SEND:
+ event->event_data.text.text = g_strdup((char*)p1);
+ break;
+ default:
+ break;
}
pthread_mutex_lock(&gpdata->vnc_event_queue_mutex);
g_queue_push_tail(gpdata->vnc_event_queue, event);
pthread_mutex_unlock(&gpdata->vnc_event_queue_mutex);
- if (write(gpdata->vnc_event_pipe[1], "\0", 1))
- {
+ if (write(gpdata->vnc_event_pipe[1], "\0", 1)) {
/* Ignore */
}
}
@@ -236,14 +227,13 @@ static void remmina_plugin_vnc_event_push(RemminaProtocolWidget *gp, gint event_
static void remmina_plugin_vnc_event_free(RemminaPluginVncEvent *event)
{
TRACE_CALL("__func__");
- switch (event->event_type)
- {
- case REMMINA_PLUGIN_VNC_EVENT_CUTTEXT:
- case REMMINA_PLUGIN_VNC_EVENT_CHAT_SEND:
- g_free(event->event_data.text.text);
- break;
- default:
- break;
+ switch (event->event_type) {
+ case REMMINA_PLUGIN_VNC_EVENT_CUTTEXT:
+ case REMMINA_PLUGIN_VNC_EVENT_CHAT_SEND:
+ g_free(event->event_data.text.text);
+ break;
+ default:
+ break;
}
g_free(event);
}
@@ -256,8 +246,7 @@ static void remmina_plugin_vnc_event_free_all(RemminaProtocolWidget *gp)
/* This is called from main thread after plugin thread has
been closed, so no queue locking is nessesary here */
- while ((event = g_queue_pop_head(gpdata->vnc_event_queue)) != NULL)
- {
+ while ((event = g_queue_pop_head(gpdata->vnc_event_queue)) != NULL) {
remmina_plugin_vnc_event_free(event);
}
}
@@ -316,15 +305,12 @@ static void remmina_plugin_vnc_update_scale(RemminaProtocolWidget *gp, gboolean
width = remmina_plugin_service->protocol_plugin_get_width(gp);
height = remmina_plugin_service->protocol_plugin_get_height(gp);
- if (scale)
- {
+ if (scale) {
/* In scaled mode, drawing_area will get its dimensions from its parent */
gtk_widget_set_size_request(GTK_WIDGET(gpdata->drawing_area), -1, -1 );
- }
- else
- {
+ }else {
/* In non scaled mode, the plugins forces dimensions of drawing area */
- gtk_widget_set_size_request (GTK_WIDGET (gpdata->drawing_area), width, height);
+ gtk_widget_set_size_request(GTK_WIDGET(gpdata->drawing_area), width, height);
}
remmina_plugin_service->protocol_plugin_emit_signal(gp, "update-align");
@@ -339,17 +325,14 @@ gboolean remmina_plugin_vnc_setcursor(RemminaProtocolWidget *gp)
LOCK_BUFFER(FALSE);
gpdata->queuecursor_handler = 0;
- if (gpdata->queuecursor_surface)
- {
+ if (gpdata->queuecursor_surface) {
cur = gdk_cursor_new_from_surface(gdk_display_get_default(), gpdata->queuecursor_surface, gpdata->queuecursor_x,
- gpdata->queuecursor_y);
+ gpdata->queuecursor_y);
gdk_window_set_cursor(gtk_widget_get_window(gpdata->drawing_area), cur);
g_object_unref(cur);
cairo_surface_destroy(gpdata->queuecursor_surface);
gpdata->queuecursor_surface = NULL;
- }
- else
- {
+ }else {
gdk_window_set_cursor(gtk_widget_get_window(gpdata->drawing_area), NULL);
}
UNLOCK_BUFFER(FALSE);
@@ -362,21 +345,18 @@ static void remmina_plugin_vnc_queuecursor(RemminaProtocolWidget *gp, cairo_surf
TRACE_CALL("__func__");
RemminaPluginVncData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->queuecursor_surface)
- {
+ if (gpdata->queuecursor_surface) {
cairo_surface_destroy(gpdata->queuecursor_surface);
}
gpdata->queuecursor_surface = surface;
gpdata->queuecursor_x = x;
gpdata->queuecursor_y = y;
- if (!gpdata->queuecursor_handler)
- {
- gpdata->queuecursor_handler = IDLE_ADD((GSourceFunc) remmina_plugin_vnc_setcursor, gp);
+ if (!gpdata->queuecursor_handler) {
+ gpdata->queuecursor_handler = IDLE_ADD((GSourceFunc)remmina_plugin_vnc_setcursor, gp);
}
}
-typedef struct _RemminaKeyVal
-{
+typedef struct _RemminaKeyVal {
guint keyval;
guint16 keycode;
} RemminaKeyVal;
@@ -385,9 +365,10 @@ typedef struct _RemminaKeyVal
#include <rfb/rfbclient.h>
static const uint32_t remmina_plugin_vnc_no_encrypt_auth_types[] =
-{ rfbNoAuth, rfbVncAuth, rfbMSLogon, 0};
+{ rfbNoAuth, rfbVncAuth, rfbMSLogon, 0 };
-static RemminaPluginVncEvent *remmina_plugin_vnc_event_queue_pop_head(RemminaPluginVncData *gpdata) {
+static RemminaPluginVncEvent *remmina_plugin_vnc_event_queue_pop_head(RemminaPluginVncData *gpdata)
+{
RemminaPluginVncEvent *event;
CANCEL_DEFER;
@@ -409,45 +390,40 @@ static void remmina_plugin_vnc_process_vnc_event(RemminaProtocolWidget *gp)
rfbClient *cl;
gchar buf[100];
- cl = (rfbClient*) gpdata->client;
- while ((event = remmina_plugin_vnc_event_queue_pop_head(gpdata)) != NULL)
- {
- if (cl)
- {
- switch (event->event_type)
- {
- case REMMINA_PLUGIN_VNC_EVENT_KEY:
- SendKeyEvent(cl, event->event_data.key.keyval, event->event_data.key.pressed);
- break;
- case REMMINA_PLUGIN_VNC_EVENT_POINTER:
- SendPointerEvent(cl, event->event_data.pointer.x, event->event_data.pointer.y,
- event->event_data.pointer.button_mask);
- break;
- case REMMINA_PLUGIN_VNC_EVENT_CUTTEXT:
- SendClientCutText(cl, event->event_data.text.text, strlen(event->event_data.text.text));
- break;
- case REMMINA_PLUGIN_VNC_EVENT_CHAT_OPEN:
- TextChatOpen(cl);
- break;
- case REMMINA_PLUGIN_VNC_EVENT_CHAT_SEND:
- TextChatSend(cl, event->event_data.text.text);
- break;
- case REMMINA_PLUGIN_VNC_EVENT_CHAT_CLOSE:
- TextChatClose(cl);
- TextChatFinish(cl);
- break;
+ cl = (rfbClient*)gpdata->client;
+ while ((event = remmina_plugin_vnc_event_queue_pop_head(gpdata)) != NULL) {
+ if (cl) {
+ switch (event->event_type) {
+ case REMMINA_PLUGIN_VNC_EVENT_KEY:
+ SendKeyEvent(cl, event->event_data.key.keyval, event->event_data.key.pressed);
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_POINTER:
+ SendPointerEvent(cl, event->event_data.pointer.x, event->event_data.pointer.y,
+ event->event_data.pointer.button_mask);
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_CUTTEXT:
+ SendClientCutText(cl, event->event_data.text.text, strlen(event->event_data.text.text));
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_CHAT_OPEN:
+ TextChatOpen(cl);
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_CHAT_SEND:
+ TextChatSend(cl, event->event_data.text.text);
+ break;
+ case REMMINA_PLUGIN_VNC_EVENT_CHAT_CLOSE:
+ TextChatClose(cl);
+ TextChatFinish(cl);
+ break;
}
}
remmina_plugin_vnc_event_free(event);
}
- if (read(gpdata->vnc_event_pipe[0], buf, sizeof(buf)))
- {
+ if (read(gpdata->vnc_event_pipe[0], buf, sizeof(buf))) {
/* Ignore */
}
}
-typedef struct _RemminaPluginVncCuttextParam
-{
+typedef struct _RemminaPluginVncCuttextParam {
RemminaProtocolWidget *gp;
gchar *text;
gint textlen;
@@ -456,33 +432,32 @@ typedef struct _RemminaPluginVncCuttextParam
static void remmina_plugin_vnc_update_quality(rfbClient *cl, gint quality)
{
TRACE_CALL("__func__");
- switch (quality)
- {
- case 9:
- cl->appData.useBGR233 = 0;
- cl->appData.encodingsString = "copyrect hextile raw";
- cl->appData.compressLevel = 0;
- cl->appData.qualityLevel = 9;
- break;
- case 2:
- cl->appData.useBGR233 = 0;
- cl->appData.encodingsString = "tight zrle ultra copyrect hextile zlib corre rre raw";
- cl->appData.compressLevel = 3;
- cl->appData.qualityLevel = 7;
- break;
- case 1:
- cl->appData.useBGR233 = 0;
- cl->appData.encodingsString = "tight zrle ultra copyrect hextile zlib corre rre raw";
- cl->appData.compressLevel = 5;
- cl->appData.qualityLevel = 5;
- break;
- case 0:
- default:
- cl->appData.useBGR233 = 1;
- cl->appData.encodingsString = "tight zrle ultra copyrect hextile zlib corre rre raw";
- cl->appData.compressLevel = 9;
- cl->appData.qualityLevel = 0;
- break;
+ switch (quality) {
+ case 9:
+ cl->appData.useBGR233 = 0;
+ cl->appData.encodingsString = "copyrect hextile raw";
+ cl->appData.compressLevel = 0;
+ cl->appData.qualityLevel = 9;
+ break;
+ case 2:
+ cl->appData.useBGR233 = 0;
+ cl->appData.encodingsString = "tight zrle ultra copyrect hextile zlib corre rre raw";
+ cl->appData.compressLevel = 3;
+ cl->appData.qualityLevel = 7;
+ break;
+ case 1:
+ cl->appData.useBGR233 = 0;
+ cl->appData.encodingsString = "tight zrle ultra copyrect hextile zlib corre rre raw";
+ cl->appData.compressLevel = 5;
+ cl->appData.qualityLevel = 5;
+ break;
+ case 0:
+ default:
+ cl->appData.useBGR233 = 1;
+ cl->appData.encodingsString = "tight zrle ultra copyrect hextile zlib corre rre raw";
+ cl->appData.compressLevel = 9;
+ cl->appData.qualityLevel = 0;
+ break;
}
}
@@ -493,50 +468,49 @@ static void remmina_plugin_vnc_update_colordepth(rfbClient *cl, gint colordepth)
cl->format.bigEndian = 0;
cl->appData.requestedDepth = colordepth;
- switch (colordepth)
- {
- case 8:
- cl->format.depth = 8;
- cl->format.bitsPerPixel = 8;
- cl->format.blueMax = 3;
- cl->format.blueShift = 6;
- cl->format.greenMax = 7;
- cl->format.greenShift = 3;
- cl->format.redMax = 7;
- cl->format.redShift = 0;
- break;
- case 16:
- cl->format.depth = 16;
- cl->format.bitsPerPixel = 16;
- cl->format.blueMax = 0x1f;
- cl->format.blueShift = 0;
- cl->format.greenMax = 0x3f;
- cl->format.greenShift = 5;
- cl->format.redMax = 0x1f;
- cl->format.redShift = 11;
- break;
- case 15:
- cl->format.depth = 15;
- cl->format.bitsPerPixel = 16;
- cl->format.blueMax = 0x1f;
- cl->format.blueShift = 0;
- cl->format.greenMax = 0x1f;
- cl->format.greenShift = 5;
- cl->format.redMax = 0x1f;
- cl->format.redShift = 10;
- break;
- case 24:
- case 32:
- default:
- cl->format.depth = 24;
- cl->format.bitsPerPixel = 32;
- cl->format.blueShift = 0;
- cl->format.redShift = 16;
- cl->format.greenShift = 8;
- cl->format.blueMax = 0xff;
- cl->format.redMax = 0xff;
- cl->format.greenMax = 0xff;
- break;
+ switch (colordepth) {
+ case 8:
+ cl->format.depth = 8;
+ cl->format.bitsPerPixel = 8;
+ cl->format.blueMax = 3;
+ cl->format.blueShift = 6;
+ cl->format.greenMax = 7;
+ cl->format.greenShift = 3;
+ cl->format.redMax = 7;
+ cl->format.redShift = 0;
+ break;
+ case 16:
+ cl->format.depth = 16;
+ cl->format.bitsPerPixel = 16;
+ cl->format.blueMax = 0x1f;
+ cl->format.blueShift = 0;
+ cl->format.greenMax = 0x3f;
+ cl->format.greenShift = 5;
+ cl->format.redMax = 0x1f;
+ cl->format.redShift = 11;
+ break;
+ case 15:
+ cl->format.depth = 15;
+ cl->format.bitsPerPixel = 16;
+ cl->format.blueMax = 0x1f;
+ cl->format.blueShift = 0;
+ cl->format.greenMax = 0x1f;
+ cl->format.greenShift = 5;
+ cl->format.redMax = 0x1f;
+ cl->format.redShift = 10;
+ break;
+ case 24:
+ case 32:
+ default:
+ cl->format.depth = 24;
+ cl->format.bitsPerPixel = 32;
+ cl->format.blueShift = 0;
+ cl->format.redShift = 16;
+ cl->format.greenShift = 8;
+ cl->format.blueMax = 0xff;
+ cl->format.redMax = 0xff;
+ cl->format.greenMax = 0xff;
+ break;
}
}
@@ -568,7 +542,7 @@ static rfbBool remmina_plugin_vnc_rfb_allocfb(rfbClient *cl)
if (gpdata->vnc_buffer)
g_free(gpdata->vnc_buffer);
- gpdata->vnc_buffer = (guchar*) g_malloc(size);
+ gpdata->vnc_buffer = (guchar*)g_malloc(size);
cl->frameBuffer = gpdata->vnc_buffer;
UNLOCK_BUFFER(TRUE);
@@ -593,8 +567,7 @@ static gint remmina_plugin_vnc_bits(gint n)
{
TRACE_CALL("__func__");
gint b = 0;
- while (n)
- {
+ while (n) {
b++;
n >>= 1;
}
@@ -607,8 +580,7 @@ static gboolean remmina_plugin_vnc_queue_draw_area_real(RemminaProtocolWidget *g
RemminaPluginVncData *gpdata = GET_PLUGIN_DATA(gp);
gint x, y, w, h;
- if (GTK_IS_WIDGET(gp) && gpdata->connected)
- {
+ if (GTK_IS_WIDGET(gp) && gpdata->connected) {
LOCK_BUFFER(FALSE);
x = gpdata->queuedraw_x;
y = gpdata->queuedraw_y;
@@ -629,8 +601,7 @@ static void remmina_plugin_vnc_queue_draw_area(RemminaProtocolWidget *gp, gint x
gint nx2, ny2, ox2, oy2;
LOCK_BUFFER(TRUE);
- if (gpdata->queuedraw_handler)
- {
+ if (gpdata->queuedraw_handler) {
nx2 = x + w;
ny2 = y + h;
ox2 = gpdata->queuedraw_x + gpdata->queuedraw_w;
@@ -639,20 +610,18 @@ static void remmina_plugin_vnc_queue_draw_area(RemminaProtocolWidget *gp, gint x
gpdata->queuedraw_y = MIN(gpdata->queuedraw_y, y);
gpdata->queuedraw_w = MAX(ox2, nx2) - gpdata->queuedraw_x;
gpdata->queuedraw_h = MAX(oy2, ny2) - gpdata->queuedraw_y;
- }
- else
- {
+ }else {
gpdata->queuedraw_x = x;
gpdata->queuedraw_y = y;
gpdata->queuedraw_w = w;
gpdata->queuedraw_h = h;
- gpdata->queuedraw_handler = IDLE_ADD((GSourceFunc) remmina_plugin_vnc_queue_draw_area_real, gp);
+ gpdata->queuedraw_handler = IDLE_ADD((GSourceFunc)remmina_plugin_vnc_queue_draw_area_real, gp);
}
UNLOCK_BUFFER(TRUE);
}
static void remmina_plugin_vnc_rfb_fill_buffer(rfbClient* cl, guchar *dest, gint dest_rowstride, guchar *src,
- gint src_rowstride, guchar *mask, gint w, gint h)
+ gint src_rowstride, guchar *mask, gint w, gint h)
{
TRACE_CALL("__func__");
guchar *srcptr;
@@ -664,89 +633,76 @@ static void remmina_plugin_vnc_rfb_fill_buffer(rfbClient* cl, guchar *dest, gint
gint rs, gs, bs, rm, gm, bm, rl, gl, bl, rr, gr, br;
gint r;
guint32 *destptr;
- union
- {
- struct
- {
+ union {
+ struct {
guchar a, r, g, b;
} colors;
guint32 argb;
} dst_pixel;
bytesPerPixel = cl->format.bitsPerPixel / 8;
- switch (cl->format.bitsPerPixel)
- {
- case 32:
- /* The following codes fill in the Alpha channel swap red/green value */
- for (iy = 0; iy < h; iy++)
- {
- destptr = (guint32*)(dest + iy * dest_rowstride);
- srcptr = src + iy * src_rowstride;
- for (ix = 0; ix < w; ix++)
- {
- if(!mask || *mask++)
- {
- dst_pixel.colors.a = 0xff;
- dst_pixel.colors.r = *(srcptr + 2);
- dst_pixel.colors.g = *(srcptr + 1);
- dst_pixel.colors.b = *srcptr;
- *destptr++ = ntohl(dst_pixel.argb);
- }
- else
- {
- *destptr++ = 0;
- }
- srcptr += 4;
+ switch (cl->format.bitsPerPixel) {
+ case 32:
+ /* The following codes fill in the Alpha channel swap red/green value */
+ for (iy = 0; iy < h; iy++) {
+ destptr = (guint32*)(dest + iy * dest_rowstride);
+ srcptr = src + iy * src_rowstride;
+ for (ix = 0; ix < w; ix++) {
+ if (!mask || *mask++) {
+ dst_pixel.colors.a = 0xff;
+ dst_pixel.colors.r = *(srcptr + 2);
+ dst_pixel.colors.g = *(srcptr + 1);
+ dst_pixel.colors.b = *srcptr;
+ *destptr++ = ntohl(dst_pixel.argb);
+ }else{
+ *destptr++ = 0;
}
+ srcptr += 4;
}
- break;
- default:
- rm = cl->format.redMax;
- gm = cl->format.greenMax;
- bm = cl->format.blueMax;
- rr = remmina_plugin_vnc_bits(rm);
- gr = remmina_plugin_vnc_bits(gm);
- br = remmina_plugin_vnc_bits(bm);
- rl = 8 - rr;
- gl = 8 - gr;
- bl = 8 - br;
- rs = cl->format.redShift;
- gs = cl->format.greenShift;
- bs = cl->format.blueShift;
- for (iy = 0; iy < h; iy++)
- {
- destptr = (guint32*)(dest + iy * dest_rowstride);
- srcptr = src + iy * src_rowstride;
- for (ix = 0; ix < w; ix++)
- {
- src_pixel = 0;
- for (i = 0; i < bytesPerPixel; i++)
- src_pixel += (*srcptr++) << (8 * i);
-
- if(!mask || *mask++)
- {
- dst_pixel.colors.a = 0xff;
- c = (guchar)((src_pixel >> rs) & rm) << rl;
- for (r = rr; r < 8; r *= 2)
- c |= c >> r;
- dst_pixel.colors.r = c;
- c = (guchar)((src_pixel >> gs) & gm) << gl;
- for (r = gr; r < 8; r *= 2)
- c |= c >> r;
- dst_pixel.colors.g = c;
- c = (guchar)((src_pixel >> bs) & bm) << bl;
- for (r = br; r < 8; r *= 2)
- c |= c >> r;
- dst_pixel.colors.b = c;
- *destptr++ = ntohl(dst_pixel.argb);
- }
- else
- {
- *destptr++ = 0;
- }
+ }
+ break;
+ default:
+ rm = cl->format.redMax;
+ gm = cl->format.greenMax;
+ bm = cl->format.blueMax;
+ rr = remmina_plugin_vnc_bits(rm);
+ gr = remmina_plugin_vnc_bits(gm);
+ br = remmina_plugin_vnc_bits(bm);
+ rl = 8 - rr;
+ gl = 8 - gr;
+ bl = 8 - br;
+ rs = cl->format.redShift;
+ gs = cl->format.greenShift;
+ bs = cl->format.blueShift;
+ for (iy = 0; iy < h; iy++) {
+ destptr = (guint32*)(dest + iy * dest_rowstride);
+ srcptr = src + iy * src_rowstride;
+ for (ix = 0; ix < w; ix++) {
+ src_pixel = 0;
+ for (i = 0; i < bytesPerPixel; i++)
+ src_pixel += (*srcptr++) << (8 * i);
+
+ if (!mask || *mask++) {
+ dst_pixel.colors.a = 0xff;
+ c = (guchar)((src_pixel >> rs) & rm) << rl;
+ for (r = rr; r < 8; r *= 2)
+ c |= c >> r;
+ dst_pixel.colors.r = c;
+ c = (guchar)((src_pixel >> gs) & gm) << gl;
+ for (r = gr; r < 8; r *= 2)
+ c |= c >> r;
+ dst_pixel.colors.g = c;
+ c = (guchar)((src_pixel >> bs) & bm) << bl;
+ for (r = br; r < 8; r *= 2)
+ c |= c >> r;
+ dst_pixel.colors.b = c;
+ *destptr++ = ntohl(dst_pixel.argb);
+ }else{
+ *destptr++ = 0;
}
}
- break;
+ }
+ break;
}
}
@@ -761,20 +717,18 @@ static void remmina_plugin_vnc_rfb_updatefb(rfbClient* cl, int x, int y, int w,
LOCK_BUFFER(TRUE);
- if (w >= 1 || h >= 1)
- {
+ if (w >= 1 || h >= 1) {
width = remmina_plugin_service->protocol_plugin_get_width(gp);
bytesPerPixel = cl->format.bitsPerPixel / 8;
rowstride = cairo_image_surface_get_stride(gpdata->rgb_buffer);
cairo_surface_flush(gpdata->rgb_buffer);
remmina_plugin_vnc_rfb_fill_buffer(cl, cairo_image_surface_get_data(gpdata->rgb_buffer) + y * rowstride + x * 4,
- rowstride, gpdata->vnc_buffer + ((y * width + x) * bytesPerPixel), width * bytesPerPixel, NULL,
- w, h);
+ rowstride, gpdata->vnc_buffer + ((y * width + x) * bytesPerPixel), width * bytesPerPixel, NULL,
+ w, h);
cairo_surface_mark_dirty(gpdata->rgb_buffer);
}
- if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE))
- {
+ if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE)) {
remmina_plugin_vnc_scale_area(gp, &x, &y, &w, &h);
}
@@ -795,17 +749,15 @@ static gboolean remmina_plugin_vnc_queue_cuttext(RemminaPluginVncCuttextParam *p
gsize br, bw;
- if (GTK_IS_WIDGET(gp) && gpdata->connected)
- {
+ if (GTK_IS_WIDGET(gp) && gpdata->connected) {
g_get_current_time(&t);
diff = (t.tv_sec - gpdata->clipboard_timer.tv_sec) * 10
- + (t.tv_usec - gpdata->clipboard_timer.tv_usec) / 100000;
- if (diff >= 10)
- {
+ + (t.tv_usec - gpdata->clipboard_timer.tv_usec) / 100000;
+ if (diff >= 10) {
gpdata->clipboard_timer = t;
/* Convert text from VNC latin-1 to current GTK charset (usually UTF-8) */
g_get_charset(&cur_charset);
- text = g_convert_with_fallback(param->text, -1, cur_charset, "ISO-8859-1" ,"?", &br, &bw, NULL);
+ text = g_convert_with_fallback(param->text, -1, cur_charset, "ISO-8859-1", "?", &br, &bw, NULL);
gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), text, bw);
g_free(text);
}
@@ -821,11 +773,11 @@ static void remmina_plugin_vnc_rfb_cuttext(rfbClient* cl, const char *text, int
RemminaPluginVncCuttextParam *param;
param = g_new(RemminaPluginVncCuttextParam, 1);
- param->gp = (RemminaProtocolWidget*) rfbClientGetClientData(cl, NULL);
+ param->gp = (RemminaProtocolWidget*)rfbClientGetClientData(cl, NULL);
param->text = g_malloc(textlen);
memcpy(param->text, text, textlen);
param->textlen = textlen;
- IDLE_ADD((GSourceFunc) remmina_plugin_vnc_queue_cuttext, param);
+ IDLE_ADD((GSourceFunc)remmina_plugin_vnc_queue_cuttext, param);
}
static char*
@@ -842,21 +794,16 @@ remmina_plugin_vnc_rfb_password(rfbClient *cl)
gpdata->auth_called = TRUE;
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- if (gpdata->auth_first)
- {
+ if (gpdata->auth_first) {
pwd = g_strdup(remmina_plugin_service->file_get_string(remminafile, "password"));
}
- if (!pwd)
- {
+ if (!pwd) {
disablepasswordstoring = remmina_plugin_service->file_get_int(remminafile, "disablepasswordstoring", FALSE);
ret = remmina_plugin_service->protocol_plugin_init_authpwd(gp, REMMINA_AUTHPWD_TYPE_PROTOCOL, !disablepasswordstoring);
- if (ret == GTK_RESPONSE_OK)
- {
+ if (ret == GTK_RESPONSE_OK) {
pwd = remmina_plugin_service->protocol_plugin_init_get_password(gp);
- }
- else
- {
+ }else {
gpdata->connected = FALSE;
}
}
@@ -864,11 +811,11 @@ remmina_plugin_vnc_rfb_password(rfbClient *cl)
}
static rfbCredential*
-remmina_plugin_vnc_rfb_credential (rfbClient *cl, int credentialType)
+remmina_plugin_vnc_rfb_credential(rfbClient *cl, int credentialType)
{
TRACE_CALL("__func__");
rfbCredential *cred;
- RemminaProtocolWidget *gp = rfbClientGetClientData (cl, NULL);
+ RemminaProtocolWidget *gp = rfbClientGetClientData(cl, NULL);
RemminaPluginVncData *gpdata = GET_PLUGIN_DATA(gp);
RemminaFile *remminafile;
gint ret;
@@ -876,26 +823,22 @@ remmina_plugin_vnc_rfb_credential (rfbClient *cl, int credentialType)
gboolean disablepasswordstoring;
gpdata->auth_called = TRUE;
- remminafile = remmina_plugin_service->protocol_plugin_get_file (gp);
+ remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- cred = g_new0 (rfbCredential, 1);
+ cred = g_new0(rfbCredential, 1);
- switch (credentialType)
- {
+ switch (credentialType) {
- case rfbCredentialTypeUser:
+ case rfbCredentialTypeUser:
- s1 = g_strdup (remmina_plugin_service->file_get_string (remminafile, "username"));
+ s1 = g_strdup(remmina_plugin_service->file_get_string(remminafile, "username"));
- s2 = g_strdup (remmina_plugin_service->file_get_string (remminafile, "password"));
+ s2 = g_strdup(remmina_plugin_service->file_get_string(remminafile, "password"));
- if (gpdata->auth_first && s1 && s2)
- {
+ if (gpdata->auth_first && s1 && s2) {
cred->userCredential.username = s1;
cred->userCredential.password = s2;
- }
- else
- {
+ }else {
g_free(s1);
g_free(s2);
@@ -903,13 +846,10 @@ remmina_plugin_vnc_rfb_credential (rfbClient *cl, int credentialType)
ret = remmina_plugin_service->protocol_plugin_init_authuserpwd(gp, FALSE, !disablepasswordstoring);
- if (ret == GTK_RESPONSE_OK)
- {
- cred->userCredential.username = remmina_plugin_service->protocol_plugin_init_get_username (gp);
- cred->userCredential.password = remmina_plugin_service->protocol_plugin_init_get_password (gp);
- }
- else
- {
+ if (ret == GTK_RESPONSE_OK) {
+ cred->userCredential.username = remmina_plugin_service->protocol_plugin_init_get_username(gp);
+ cred->userCredential.password = remmina_plugin_service->protocol_plugin_init_get_password(gp);
+ }else {
g_free(cred);
cred = NULL;
gpdata->connected = FALSE;
@@ -917,29 +857,23 @@ remmina_plugin_vnc_rfb_credential (rfbClient *cl, int credentialType)
}
break;
- case rfbCredentialTypeX509:
+ case rfbCredentialTypeX509:
if (gpdata->auth_first &&
- remmina_plugin_service->file_get_string (remminafile, "cacert"))
- {
- cred->x509Credential.x509CACertFile = g_strdup (remmina_plugin_service->file_get_string (remminafile, "cacert"));
- cred->x509Credential.x509CACrlFile = g_strdup (remmina_plugin_service->file_get_string (remminafile, "cacrl"));
- cred->x509Credential.x509ClientCertFile = g_strdup (remmina_plugin_service->file_get_string (remminafile, "clientcert"));
- cred->x509Credential.x509ClientKeyFile = g_strdup (remmina_plugin_service->file_get_string (remminafile, "clientkey"));
- }
- else
- {
-
- ret = remmina_plugin_service->protocol_plugin_init_authx509 (gp);
-
- if (ret == GTK_RESPONSE_OK)
- {
- cred->x509Credential.x509CACertFile = remmina_plugin_service->protocol_plugin_init_get_cacert (gp);
- cred->x509Credential.x509CACrlFile = remmina_plugin_service->protocol_plugin_init_get_cacrl (gp);
- cred->x509Credential.x509ClientCertFile = remmina_plugin_service->protocol_plugin_init_get_clientcert (gp);
- cred->x509Credential.x509ClientKeyFile = remmina_plugin_service->protocol_plugin_init_get_clientkey (gp);
- }
- else
- {
+ remmina_plugin_service->file_get_string(remminafile, "cacert")) {
+ cred->x509Credential.x509CACertFile = g_strdup(remmina_plugin_service->file_get_string(remminafile, "cacert"));
+ cred->x509Credential.x509CACrlFile = g_strdup(remmina_plugin_service->file_get_string(remminafile, "cacrl"));
+ cred->x509Credential.x509ClientCertFile = g_strdup(remmina_plugin_service->file_get_string(remminafile, "clientcert"));
+ cred->x509Credential.x509ClientKeyFile = g_strdup(remmina_plugin_service->file_get_string(remminafile, "clientkey"));
+ }else {
+
+ ret = remmina_plugin_service->protocol_plugin_init_authx509(gp);
+
+ if (ret == GTK_RESPONSE_OK) {
+ cred->x509Credential.x509CACertFile = remmina_plugin_service->protocol_plugin_init_get_cacert(gp);
+ cred->x509Credential.x509CACrlFile = remmina_plugin_service->protocol_plugin_init_get_cacrl(gp);
+ cred->x509Credential.x509ClientCertFile = remmina_plugin_service->protocol_plugin_init_get_clientcert(gp);
+ cred->x509Credential.x509ClientKeyFile = remmina_plugin_service->protocol_plugin_init_get_clientkey(gp);
+ }else {
g_free(cred);
cred = NULL;
gpdata->connected = FALSE;
@@ -947,7 +881,7 @@ remmina_plugin_vnc_rfb_credential (rfbClient *cl, int credentialType)
}
break;
- default:
+ default:
g_free(cred);
cred = NULL;
break;
@@ -967,18 +901,17 @@ static void remmina_plugin_vnc_rfb_cursor_shape(rfbClient *cl, int xhot, int yho
if (!gtk_widget_get_window(GTK_WIDGET(gp)))
return;
- if (width && height)
- {
+ if (width && height) {
stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width);
data = g_malloc(stride * height);
remmina_plugin_vnc_rfb_fill_buffer(cl, data, stride, cl->rcSource,
- width * cl->format.bitsPerPixel / 8, cl->rcMask, width, height);
+ width * cl->format.bitsPerPixel / 8, cl->rcMask, width, height);
surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, width, height, stride);
if (cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS) {
g_free(data);
return;
}
- if(cairo_surface_set_user_data(surface, NULL, NULL, g_free) != CAIRO_STATUS_SUCCESS) {
+ if (cairo_surface_set_user_data(surface, NULL, NULL, g_free) != CAIRO_STATUS_SUCCESS) {
g_free(data);
return;
}
@@ -995,7 +928,7 @@ static void remmina_plugin_vnc_rfb_bell(rfbClient *cl)
RemminaProtocolWidget *gp;
GdkWindow *window;
- gp = (RemminaProtocolWidget*) (rfbClientGetClientData(cl, NULL));
+ gp = (RemminaProtocolWidget*)(rfbClientGetClientData(cl, NULL));
window = gtk_widget_get_window(GTK_WIDGET(gp));
if (window)
@@ -1022,36 +955,30 @@ static void remmina_plugin_vnc_rfb_output(const char *format, ...)
gchar *f, *p, *ff;
/* eliminate the last \n */
- f = g_strdup (format);
- if (f[strlen (f) - 1] == '\n') f[strlen (f) - 1] = '\0';
-
- if (g_strcmp0(f, "VNC connection failed: %s") == 0)
- {
- p = va_arg (args, gchar*);
- g_snprintf (vnc_error, MAX_ERROR_LENGTH, _(f), _(p));
- }
- else if (g_strcmp0(f, "Unknown authentication scheme from VNC server: %s") == 0)
- {
- p = va_arg (args, gchar*);
+ f = g_strdup(format);
+ if (f[strlen(f) - 1] == '\n') f[strlen(f) - 1] = '\0';
+
+ if (g_strcmp0(f, "VNC connection failed: %s") == 0) {
+ p = va_arg(args, gchar*);
+ g_snprintf(vnc_error, MAX_ERROR_LENGTH, _(f), _(p));
+ }else if (g_strcmp0(f, "Unknown authentication scheme from VNC server: %s") == 0) {
+ p = va_arg(args, gchar*);
if (vnc_encryption_disable_requested) {
ff = g_strconcat(_("Unknown authentication scheme from VNC server: %s"),
". ",
_("Please retry after enabling encryption on this profile."),
NULL);
- g_snprintf (vnc_error, MAX_ERROR_LENGTH, ff, p);
+ g_snprintf(vnc_error, MAX_ERROR_LENGTH, ff, p);
g_free(ff);
- }
- else
- g_snprintf (vnc_error, MAX_ERROR_LENGTH, _(f), p);
- }
- else
- {
- g_vsnprintf (vnc_error, MAX_ERROR_LENGTH, _(f), args);
+ }else
+ g_snprintf(vnc_error, MAX_ERROR_LENGTH, _(f), p);
+ }else {
+ g_vsnprintf(vnc_error, MAX_ERROR_LENGTH, _(f), args);
}
g_free(f);
va_end(args);
- remmina_plugin_service->log_printf ("[VNC]%s\n", vnc_error);
+ remmina_plugin_service->log_printf("[VNC]%s\n", vnc_error);
}
static void remmina_plugin_vnc_chat_on_send(RemminaProtocolWidget *gp, const gchar *text)
@@ -1095,10 +1022,10 @@ static gboolean remmina_plugin_vnc_open_chat(RemminaProtocolWidget *gp)
RemminaPluginVncData *gpdata = GET_PLUGIN_DATA(gp);
rfbClient *cl;
- cl = (rfbClient*) gpdata->client;
+ cl = (rfbClient*)gpdata->client;
remmina_plugin_service->protocol_plugin_chat_open(gp, cl->desktopName, remmina_plugin_vnc_chat_on_send,
- remmina_plugin_vnc_chat_on_destroy);
+ remmina_plugin_vnc_chat_on_destroy);
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_CHAT_OPEN, NULL, NULL, NULL);
return FALSE;
}
@@ -1108,22 +1035,21 @@ static void remmina_plugin_vnc_rfb_chat(rfbClient* cl, int value, char *text)
TRACE_CALL("__func__");
RemminaProtocolWidget *gp;
- gp = (RemminaProtocolWidget*) (rfbClientGetClientData(cl, NULL));
- switch (value)
- {
- case rfbTextChatOpen:
- IDLE_ADD((GSourceFunc) remmina_plugin_vnc_open_chat, gp);
- break;
- case rfbTextChatClose:
- /* Do nothing... but wait for the next rfbTextChatFinished signal */
- break;
- case rfbTextChatFinished:
- IDLE_ADD((GSourceFunc) remmina_plugin_vnc_close_chat, gp);
- break;
- default:
- /* value is the text length */
- remmina_plugin_service->protocol_plugin_chat_receive(gp, text);
- break;
+ gp = (RemminaProtocolWidget*)(rfbClientGetClientData(cl, NULL));
+ switch (value) {
+ case rfbTextChatOpen:
+ IDLE_ADD((GSourceFunc)remmina_plugin_vnc_open_chat, gp);
+ break;
+ case rfbTextChatClose:
+ /* Do nothing... but wait for the next rfbTextChatFinished signal */
+ break;
+ case rfbTextChatFinished:
+ IDLE_ADD((GSourceFunc)remmina_plugin_vnc_close_chat, gp);
+ break;
+ default:
+ /* value is the text length */
+ remmina_plugin_service->protocol_plugin_chat_receive(gp, text);
+ break;
}
}
@@ -1145,8 +1071,7 @@ static gboolean remmina_plugin_vnc_incoming_connection(RemminaProtocolWidget *gp
FD_SET(gpdata->listen_sock, &fds);
select(gpdata->listen_sock + 1, &fds, NULL, NULL, NULL);
- if (!FD_ISSET(gpdata->listen_sock, &fds))
- {
+ if (!FD_ISSET(gpdata->listen_sock, &fds)) {
close(gpdata->listen_sock);
gpdata->listen_sock = -1;
return FALSE;
@@ -1155,8 +1080,7 @@ static gboolean remmina_plugin_vnc_incoming_connection(RemminaProtocolWidget *gp
cl->sock = AcceptTcpConnection(gpdata->listen_sock);
close(gpdata->listen_sock);
gpdata->listen_sock = -1;
- if (cl->sock < 0 || !SetNonBlocking(cl->sock))
- {
+ if (cl->sock < 0 || !SetNonBlocking(cl->sock)) {
return FALSE;
}
@@ -1173,13 +1097,12 @@ static gboolean remmina_plugin_vnc_main_loop(RemminaProtocolWidget *gp)
fd_set fds;
struct timeval timeout;
- if (!gpdata->connected)
- {
+ if (!gpdata->connected) {
gpdata->running = FALSE;
return FALSE;
}
- cl = (rfbClient*) gpdata->client;
+ cl = (rfbClient*)gpdata->client;
timeout.tv_sec = 10;
timeout.tv_usec = 0;
@@ -1193,21 +1116,17 @@ static gboolean remmina_plugin_vnc_main_loop(RemminaProtocolWidget *gp)
if (ret <= 0)
return TRUE;
- if (FD_ISSET(gpdata->vnc_event_pipe[0], &fds))
- {
+ if (FD_ISSET(gpdata->vnc_event_pipe[0], &fds)) {
remmina_plugin_vnc_process_vnc_event(gp);
}
- if (FD_ISSET(cl->sock, &fds))
- {
- i = WaitForMessage (cl, 500);
+ if (FD_ISSET(cl->sock, &fds)) {
+ i = WaitForMessage(cl, 500);
if (i < 0)
return TRUE;
- if (!HandleRFBServerMessage(cl))
- {
+ if (!HandleRFBServerMessage(cl)) {
gpdata->running = FALSE;
- if (gpdata->connected && !remmina_plugin_service->protocol_plugin_is_closed(gp))
- {
- IDLE_ADD((GSourceFunc) remmina_plugin_service->protocol_plugin_close_connection, gp);
+ if (gpdata->connected && !remmina_plugin_service->protocol_plugin_is_closed(gp)) {
+ IDLE_ADD((GSourceFunc)remmina_plugin_service->protocol_plugin_close_connection, gp);
}
return FALSE;
}
@@ -1231,14 +1150,12 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
rfbClientLog = remmina_plugin_vnc_rfb_output;
rfbClientErr = remmina_plugin_vnc_rfb_output;
- while (gpdata->connected)
- {
+ while (gpdata->connected) {
gpdata->auth_called = FALSE;
host = remmina_plugin_service->protocol_plugin_start_direct_tunnel(gp, 5900, TRUE);
- if (host == NULL)
- {
+ if (host == NULL) {
gpdata->connected = FALSE;
break;
}
@@ -1250,33 +1167,27 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
cl->GetCredential = remmina_plugin_vnc_rfb_credential;
cl->GotFrameBufferUpdate = remmina_plugin_vnc_rfb_updatefb;
cl->GotXCutText = (
- remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ?
- NULL : remmina_plugin_vnc_rfb_cuttext);
+ remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ?
+ NULL : remmina_plugin_vnc_rfb_cuttext);
cl->GotCursorShape = remmina_plugin_vnc_rfb_cursor_shape;
cl->Bell = remmina_plugin_vnc_rfb_bell;
cl->HandleTextChat = remmina_plugin_vnc_rfb_chat;
rfbClientSetClientData(cl, NULL, gp);
- if (host[0] == '\0')
- {
+ if (host[0] == '\0') {
cl->serverHost = strdup(host);
cl->listenSpecified = TRUE;
- if (remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE)) {
/* When we use reverse tunnel, the local port does not really matter.
* Hardcode a default port just in case the remote port is customized
* to a privilege port then we will have problem listening. */
cl->listenPort = 5500;
- }
- else
- {
+ }else {
cl->listenPort = remmina_plugin_service->file_get_int(remminafile, "listenport", 5500);
}
remmina_plugin_vnc_incoming_connection(gp, cl);
- }
- else
- {
+ }else {
remmina_plugin_service->get_server_port(host, 5900, &s, &cl->serverPort);
cl->serverHost = strdup(s);
g_free(s);
@@ -1288,30 +1199,26 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
g_free(host);
host = NULL;
- if (remmina_plugin_service->file_get_string(remminafile, "proxy"))
- {
+ if (remmina_plugin_service->file_get_string(remminafile, "proxy")) {
cl->destHost = cl->serverHost;
cl->destPort = cl->serverPort;
- remmina_plugin_service->get_server_port (remmina_plugin_service->file_get_string (remminafile, "proxy"), 5900,
- &s, &cl->serverPort);
- cl->serverHost = strdup (s);
+ remmina_plugin_service->get_server_port(remmina_plugin_service->file_get_string(remminafile, "proxy"), 5900,
+ &s, &cl->serverPort);
+ cl->serverHost = strdup(s);
g_free(s);
}
cl->appData.useRemoteCursor = (
- remmina_plugin_service->file_get_int(remminafile, "showcursor", FALSE) ? FALSE : TRUE);
+ remmina_plugin_service->file_get_int(remminafile, "showcursor", FALSE) ? FALSE : TRUE);
remmina_plugin_vnc_update_quality(cl, remmina_plugin_service->file_get_int(remminafile, "quality", 0));
remmina_plugin_vnc_update_colordepth(cl, remmina_plugin_service->file_get_int(remminafile, "colordepth", 15));
SetFormatAndEncodings(cl);
- if (remmina_plugin_service->file_get_int(remminafile, "disableencryption", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "disableencryption", FALSE)) {
vnc_encryption_disable_requested = TRUE;
- SetClientAuthSchemes (cl, remmina_plugin_vnc_no_encrypt_auth_types, -1);
- }
- else
- {
+ SetClientAuthSchemes(cl, remmina_plugin_vnc_no_encrypt_auth_types, -1);
+ }else {
vnc_encryption_disable_requested = FALSE;
}
@@ -1319,15 +1226,13 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
break;
/* If the authentication is not called, it has to be a fatel error and must quit */
- if (!gpdata->auth_called)
- {
+ if (!gpdata->auth_called) {
gpdata->connected = FALSE;
break;
}
/* vnc4server reports "already in use" after authentication. Workaround here */
- if (strstr(vnc_error, "The server is already in use"))
- {
+ if (strstr(vnc_error, "The server is already in use")) {
gpdata->connected = FALSE;
gpdata->auth_called = FALSE;
break;
@@ -1347,15 +1252,13 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
gpdata->auth_first = FALSE;
}
- if (!gpdata->connected)
- {
- if (cl && !gpdata->auth_called && !(remmina_plugin_service->protocol_plugin_has_error(gp)))
- {
+ if (!gpdata->connected) {
+ if (cl && !gpdata->auth_called && !(remmina_plugin_service->protocol_plugin_has_error(gp))) {
remmina_plugin_service->protocol_plugin_set_error(gp, "%s", vnc_error);
}
gpdata->running = FALSE;
- IDLE_ADD((GSourceFunc) remmina_plugin_service->protocol_plugin_close_connection, gp);
+ IDLE_ADD((GSourceFunc)remmina_plugin_service->protocol_plugin_close_connection, gp);
return FALSE;
}
@@ -1366,21 +1269,16 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
remmina_plugin_service->protocol_plugin_emit_signal(gp, "connect");
- if (remmina_plugin_service->file_get_int(remminafile, "disableserverinput", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "disableserverinput", FALSE)) {
PermitServerInput(cl, 1);
}
- if (gpdata->thread)
- {
- while (remmina_plugin_vnc_main_loop(gp))
- {
+ if (gpdata->thread) {
+ while (remmina_plugin_vnc_main_loop(gp)) {
}
gpdata->running = FALSE;
- }
- else
- {
- IDLE_ADD((GSourceFunc) remmina_plugin_vnc_main_loop, gp);
+ }else {
+ IDLE_ADD((GSourceFunc)remmina_plugin_vnc_main_loop, gp);
}
return FALSE;
@@ -1388,29 +1286,27 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
static gpointer
-remmina_plugin_vnc_main_thread (gpointer data)
+remmina_plugin_vnc_main_thread(gpointer data)
{
TRACE_CALL("__func__");
- pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL);
+ pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
CANCEL_ASYNC
- remmina_plugin_vnc_main ((RemminaProtocolWidget*) data);
+ remmina_plugin_vnc_main((RemminaProtocolWidget*)data);
return NULL;
}
-static RemminaPluginVncCoordinates remmina_plugin_vnc_scale_coordinates(GtkWidget *widget, RemminaProtocolWidget *gp, gint x, gint y) {
+static RemminaPluginVncCoordinates remmina_plugin_vnc_scale_coordinates(GtkWidget *widget, RemminaProtocolWidget *gp, gint x, gint y)
+{
GtkAllocation widget_allocation;
RemminaPluginVncCoordinates result;
- if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE))
- {
+ if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE)) {
gtk_widget_get_allocation(widget, &widget_allocation);
result.x = x * remmina_plugin_service->protocol_plugin_get_width(gp) / widget_allocation.width;
result.y = y * remmina_plugin_service->protocol_plugin_get_height(gp) / widget_allocation.height;
- }
- else
- {
+ }else {
result.x = x;
result.y = y;
}
@@ -1433,7 +1329,7 @@ static gboolean remmina_plugin_vnc_on_motion(GtkWidget *widget, GdkEventMotion *
coordinates = remmina_plugin_vnc_scale_coordinates(widget, gp, event->x, event->y);
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_POINTER, GINT_TO_POINTER(coordinates.x), GINT_TO_POINTER(coordinates.y),
- GINT_TO_POINTER(gpdata->button_mask));
+ GINT_TO_POINTER(gpdata->button_mask));
return TRUE;
}
@@ -1460,11 +1356,11 @@ static gboolean remmina_plugin_vnc_on_button(GtkWidget *widget, GdkEventButton *
mask = (1 << (event->button - 1));
gpdata->button_mask = (event->type == GDK_BUTTON_PRESS ? (gpdata->button_mask | mask) :
- (gpdata->button_mask & (0xff - mask)));
+ (gpdata->button_mask & (0xff - mask)));
coordinates = remmina_plugin_vnc_scale_coordinates(widget, gp, event->x, event->y);
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_POINTER, GINT_TO_POINTER(coordinates.x), GINT_TO_POINTER(coordinates.y),
- GINT_TO_POINTER(gpdata->button_mask));
+ GINT_TO_POINTER(gpdata->button_mask));
return TRUE;
}
@@ -1482,43 +1378,42 @@ static gboolean remmina_plugin_vnc_on_scroll(GtkWidget *widget, GdkEventScroll *
if (remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE))
return FALSE;
- switch (event->direction)
- {
- case GDK_SCROLL_UP:
+ switch (event->direction) {
+ case GDK_SCROLL_UP:
+ mask = (1 << 3);
+ break;
+ case GDK_SCROLL_DOWN:
+ mask = (1 << 4);
+ break;
+ case GDK_SCROLL_LEFT:
+ mask = (1 << 5);
+ break;
+ case GDK_SCROLL_RIGHT:
+ mask = (1 << 6);
+ break;
+#ifdef GDK_SCROLL_SMOOTH
+ case GDK_SCROLL_SMOOTH:
+ if (event->delta_y < 0)
mask = (1 << 3);
- break;
- case GDK_SCROLL_DOWN:
+ if (event->delta_y > 0)
mask = (1 << 4);
- break;
- case GDK_SCROLL_LEFT:
+ if (event->delta_x < 0)
mask = (1 << 5);
- break;
- case GDK_SCROLL_RIGHT:
+ if (event->delta_x > 0)
mask = (1 << 6);
- break;
-#ifdef GDK_SCROLL_SMOOTH
- case GDK_SCROLL_SMOOTH:
- if (event->delta_y < 0)
- mask = (1 << 3);
- if (event->delta_y > 0)
- mask = (1 << 4);
- if (event->delta_x < 0)
- mask = (1 << 5);
- if (event->delta_x > 0)
- mask = (1 << 6);
- if (!mask)
- return FALSE;
- break;
-#endif
- default:
+ if (!mask)
return FALSE;
+ break;
+#endif
+ default:
+ return FALSE;
}
coordinates = remmina_plugin_vnc_scale_coordinates(widget, gp, event->x, event->y);
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_POINTER, GINT_TO_POINTER(coordinates.x), GINT_TO_POINTER(coordinates.y),
- GINT_TO_POINTER(mask | gpdata->button_mask));
+ GINT_TO_POINTER(mask | gpdata->button_mask));
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_POINTER, GINT_TO_POINTER(coordinates.x), GINT_TO_POINTER(coordinates.y),
- GINT_TO_POINTER(gpdata->button_mask));
+ GINT_TO_POINTER(gpdata->button_mask));
return TRUE;
}
@@ -1530,26 +1425,20 @@ static void remmina_plugin_vnc_release_key(RemminaProtocolWidget *gp, guint16 ke
RemminaKeyVal *k;
gint i;
- if (keycode == 0)
- {
+ if (keycode == 0) {
/* Send all release key events for previously pressed keys */
- for (i = 0; i < gpdata->pressed_keys->len; i++)
- {
+ for (i = 0; i < gpdata->pressed_keys->len; i++) {
k = g_ptr_array_index(gpdata->pressed_keys, i);
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_KEY, GUINT_TO_POINTER(k->keyval),
- GINT_TO_POINTER(FALSE), NULL);
+ GINT_TO_POINTER(FALSE), NULL);
g_free(k);
}
g_ptr_array_set_size(gpdata->pressed_keys, 0);
- }
- else
- {
+ }else {
/* Unregister the keycode only */
- for (i = 0; i < gpdata->pressed_keys->len; i++)
- {
+ for (i = 0; i < gpdata->pressed_keys->len; i++) {
k = g_ptr_array_index(gpdata->pressed_keys, i);
- if (k->keycode == keycode)
- {
+ if (k->keycode == keycode) {
g_free(k);
g_ptr_array_remove_index_fast(gpdata->pressed_keys, i);
break;
@@ -1589,21 +1478,18 @@ static gboolean remmina_plugin_vnc_on_key(GtkWidget *widget, GdkEventKey *event,
}
keyval = remmina_plugin_service->pref_keymap_get_keyval(remmina_plugin_service->file_get_string(remminafile, "keymap"),
- event_keyval);
+ event_keyval);
remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_KEY, GUINT_TO_POINTER(keyval),
- GINT_TO_POINTER(event->type == GDK_KEY_PRESS ? TRUE : FALSE), NULL);
+ GINT_TO_POINTER(event->type == GDK_KEY_PRESS ? TRUE : FALSE), NULL);
/* Register/unregister the pressed key */
- if (event->type == GDK_KEY_PRESS)
- {
+ if (event->type == GDK_KEY_PRESS) {
k = g_new(RemminaKeyVal, 1);
k->keyval = keyval;
k->keycode = event->hardware_keycode;
g_ptr_array_add(gpdata->pressed_keys, k);
- }
- else
- {
+ }else {
remmina_plugin_vnc_release_key(gp, event->hardware_keycode);
}
return TRUE;
@@ -1619,12 +1505,11 @@ static void remmina_plugin_vnc_on_cuttext_request(GtkClipboard *clipboard, const
gchar *latin1_text;
const char *cur_charset;
- if (text)
- {
+ if (text) {
/* A timer (1 second) to avoid clipboard "loopback": text cut out from VNC won't paste back into VNC */
g_get_current_time(&t);
diff = (t.tv_sec - gpdata->clipboard_timer.tv_sec) * 10
- + (t.tv_usec - gpdata->clipboard_timer.tv_usec) / 100000;
+ + (t.tv_usec - gpdata->clipboard_timer.tv_usec) / 100000;
if (diff < 10)
return;
@@ -1632,8 +1517,8 @@ static void remmina_plugin_vnc_on_cuttext_request(GtkClipboard *clipboard, const
/* Convert text from current charset to latin-1 before sending to remote server.
* See RFC6143 7.5.6 */
g_get_charset(&cur_charset);
- latin1_text = g_convert_with_fallback(text, -1, "ISO-8859-1", cur_charset ,"?", &br, &bw, NULL);
- remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_CUTTEXT, (gpointer) latin1_text, NULL, NULL);
+ latin1_text = g_convert_with_fallback(text, -1, "ISO-8859-1", cur_charset, "?", &br, &bw, NULL);
+ remmina_plugin_vnc_event_push(gp, REMMINA_PLUGIN_VNC_EVENT_CUTTEXT, (gpointer)latin1_text, NULL, NULL);
g_free(latin1_text);
}
}
@@ -1650,7 +1535,7 @@ static void remmina_plugin_vnc_on_cuttext(GtkClipboard *clipboard, GdkEvent *eve
if (remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE))
return;
- gtk_clipboard_request_text(clipboard, (GtkClipboardTextReceivedFunc) remmina_plugin_vnc_on_cuttext_request, gp);
+ gtk_clipboard_request_text(clipboard, (GtkClipboardTextReceivedFunc)remmina_plugin_vnc_on_cuttext_request, gp);
}
static void remmina_plugin_vnc_on_realize(RemminaProtocolWidget *gp, gpointer data)
@@ -1662,8 +1547,7 @@ static void remmina_plugin_vnc_on_realize(RemminaProtocolWidget *gp, gpointer da
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- if (remmina_plugin_service->file_get_int(remminafile, "showcursor", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "showcursor", FALSE)) {
/* Hide local cursor (show a small dot instead) */
pixbuf = gdk_pixbuf_new_from_xpm_data(dot_cursor_xpm);
cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), pixbuf, dot_cursor_x_hot, dot_cursor_y_hot);
@@ -1695,18 +1579,16 @@ static gboolean remmina_plugin_vnc_open_connection(RemminaProtocolWidget *gp)
g_signal_connect(G_OBJECT(gpdata->drawing_area), "key-press-event", G_CALLBACK(remmina_plugin_vnc_on_key), gp);
g_signal_connect(G_OBJECT(gpdata->drawing_area), "key-release-event", G_CALLBACK(remmina_plugin_vnc_on_key), gp);
- if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE))
- {
+ if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE)) {
gpdata->clipboard_handler = g_signal_connect(G_OBJECT(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)),
- "owner-change", G_CALLBACK(remmina_plugin_vnc_on_cuttext), gp);
+ "owner-change", G_CALLBACK(remmina_plugin_vnc_on_cuttext), gp);
}
- if (pthread_create (&gpdata->thread, NULL, remmina_plugin_vnc_main_thread, gp))
- {
+ if (pthread_create(&gpdata->thread, NULL, remmina_plugin_vnc_main_thread, gp)) {
/* I don't think this will ever happen... */
g_print("Failed to initialize pthread. Falling back to non-thread mode...\n");
- g_timeout_add (0, (GSourceFunc) remmina_plugin_vnc_main, gp);
+ g_timeout_add(0, (GSourceFunc)remmina_plugin_vnc_main, gp);
gpdata->thread = 0;
}
@@ -1723,44 +1605,36 @@ static gboolean remmina_plugin_vnc_close_connection_timeout(RemminaProtocolWidge
return TRUE;
/* unregister the clipboard monitor */
- if (gpdata->clipboard_handler)
- {
+ if (gpdata->clipboard_handler) {
g_signal_handler_disconnect(G_OBJECT(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD)), gpdata->clipboard_handler);
gpdata->clipboard_handler = 0;
}
- if (gpdata->queuecursor_handler)
- {
+ if (gpdata->queuecursor_handler) {
g_source_remove(gpdata->queuecursor_handler);
gpdata->queuecursor_handler = 0;
}
- if (gpdata->queuecursor_surface)
- {
+ if (gpdata->queuecursor_surface) {
cairo_surface_destroy(gpdata->queuecursor_surface);
gpdata->queuecursor_surface = NULL;
}
- if (gpdata->queuedraw_handler)
- {
+ if (gpdata->queuedraw_handler) {
g_source_remove(gpdata->queuedraw_handler);
gpdata->queuedraw_handler = 0;
}
- if (gpdata->listen_sock >= 0)
- {
+ if (gpdata->listen_sock >= 0) {
close(gpdata->listen_sock);
}
- if (gpdata->client)
- {
- rfbClientCleanup((rfbClient*) gpdata->client);
+ if (gpdata->client) {
+ rfbClientCleanup((rfbClient*)gpdata->client);
gpdata->client = NULL;
}
- if (gpdata->rgb_buffer)
- {
+ if (gpdata->rgb_buffer) {
cairo_surface_destroy(gpdata->rgb_buffer);
gpdata->rgb_buffer = NULL;
}
- if (gpdata->vnc_buffer)
- {
+ if (gpdata->vnc_buffer) {
g_free(gpdata->vnc_buffer);
gpdata->vnc_buffer = NULL;
}
@@ -1772,7 +1646,7 @@ static gboolean remmina_plugin_vnc_close_connection_timeout(RemminaProtocolWidge
close(gpdata->vnc_event_pipe[1]);
- pthread_mutex_destroy (&gpdata->buffer_mutex);
+ pthread_mutex_destroy(&gpdata->buffer_mutex);
remmina_plugin_service->protocol_plugin_emit_signal(gp, "disconnect");
@@ -1787,16 +1661,13 @@ static gboolean remmina_plugin_vnc_close_connection(RemminaProtocolWidget *gp)
gpdata->connected = FALSE;
- if (gpdata->thread)
- {
- pthread_cancel (gpdata->thread);
- if (gpdata->thread) pthread_join (gpdata->thread, NULL);
+ if (gpdata->thread) {
+ pthread_cancel(gpdata->thread);
+ if (gpdata->thread) pthread_join(gpdata->thread, NULL);
gpdata->running = FALSE;
- remmina_plugin_vnc_close_connection_timeout (gp);
- }
- else
- {
- g_timeout_add (200, (GSourceFunc) remmina_plugin_vnc_close_connection_timeout, gp);
+ remmina_plugin_vnc_close_connection_timeout(gp);
+ }else {
+ g_timeout_add(200, (GSourceFunc)remmina_plugin_vnc_close_connection_timeout, gp);
}
return FALSE;
@@ -1807,14 +1678,13 @@ static gboolean remmina_plugin_vnc_query_feature(RemminaProtocolWidget *gp, cons
TRACE_CALL("__func__");
RemminaPluginVncData *gpdata = GET_PLUGIN_DATA(gp);
- switch (feature->id)
- {
- case REMMINA_PLUGIN_VNC_FEATURE_PREF_DISABLESERVERINPUT:
- return (SupportsClient2Server((rfbClient*) (gpdata->client), rfbSetServerInput) ? TRUE : FALSE);
- case REMMINA_PLUGIN_VNC_FEATURE_TOOL_CHAT:
- return (SupportsClient2Server((rfbClient*) (gpdata->client), rfbTextChat) ? TRUE : FALSE);
- default:
- return TRUE;
+ switch (feature->id) {
+ case REMMINA_PLUGIN_VNC_FEATURE_PREF_DISABLESERVERINPUT:
+ return (SupportsClient2Server((rfbClient*)(gpdata->client), rfbSetServerInput) ? TRUE : FALSE);
+ case REMMINA_PLUGIN_VNC_FEATURE_TOOL_CHAT:
+ return (SupportsClient2Server((rfbClient*)(gpdata->client), rfbTextChat) ? TRUE : FALSE);
+ default:
+ return TRUE;
}
}
@@ -1825,40 +1695,39 @@ static void remmina_plugin_vnc_call_feature(RemminaProtocolWidget *gp, const Rem
RemminaFile *remminafile;
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- switch (feature->id)
- {
- case REMMINA_PLUGIN_VNC_FEATURE_PREF_QUALITY:
- remmina_plugin_vnc_update_quality((rfbClient*) (gpdata->client),
- remmina_plugin_service->file_get_int(remminafile, "quality", 0));
- remmina_plugin_vnc_update_colordepth((rfbClient*) (gpdata->client),
- remmina_plugin_service->file_get_int(remminafile, "colordepth", 15));
- SetFormatAndEncodings((rfbClient*) (gpdata->client));
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_PREF_VIEWONLY:
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_PREF_DISABLESERVERINPUT:
- PermitServerInput((rfbClient*) (gpdata->client),
- remmina_plugin_service->file_get_int(remminafile, "disableserverinput", FALSE) ? 1 : 0);
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_UNFOCUS:
- remmina_plugin_vnc_release_key(gp, 0);
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_SCALE:
- remmina_plugin_vnc_update_scale(gp, remmina_plugin_service->file_get_int(remminafile, "scale", FALSE));
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_TOOL_REFRESH:
- SendFramebufferUpdateRequest((rfbClient*) (gpdata->client), 0, 0,
- remmina_plugin_service->protocol_plugin_get_width(gp),
- remmina_plugin_service->protocol_plugin_get_height(gp), FALSE);
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_TOOL_CHAT:
- remmina_plugin_vnc_open_chat(gp);
- break;
- case REMMINA_PLUGIN_VNC_FEATURE_TOOL_SENDCTRLALTDEL:
- remmina_plugin_vnc_send_ctrlaltdel(gp);
- break;
- default:
- break;
+ switch (feature->id) {
+ case REMMINA_PLUGIN_VNC_FEATURE_PREF_QUALITY:
+ remmina_plugin_vnc_update_quality((rfbClient*)(gpdata->client),
+ remmina_plugin_service->file_get_int(remminafile, "quality", 0));
+ remmina_plugin_vnc_update_colordepth((rfbClient*)(gpdata->client),
+ remmina_plugin_service->file_get_int(remminafile, "colordepth", 15));
+ SetFormatAndEncodings((rfbClient*)(gpdata->client));
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_PREF_VIEWONLY:
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_PREF_DISABLESERVERINPUT:
+ PermitServerInput((rfbClient*)(gpdata->client),
+ remmina_plugin_service->file_get_int(remminafile, "disableserverinput", FALSE) ? 1 : 0);
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_UNFOCUS:
+ remmina_plugin_vnc_release_key(gp, 0);
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_SCALE:
+ remmina_plugin_vnc_update_scale(gp, remmina_plugin_service->file_get_int(remminafile, "scale", FALSE));
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_TOOL_REFRESH:
+ SendFramebufferUpdateRequest((rfbClient*)(gpdata->client), 0, 0,
+ remmina_plugin_service->protocol_plugin_get_width(gp),
+ remmina_plugin_service->protocol_plugin_get_height(gp), FALSE);
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_TOOL_CHAT:
+ remmina_plugin_vnc_open_chat(gp);
+ break;
+ case REMMINA_PLUGIN_VNC_FEATURE_TOOL_SENDCTRLALTDEL:
+ remmina_plugin_vnc_send_ctrlaltdel(gp);
+ break;
+ default:
+ break;
}
}
@@ -1883,8 +1752,7 @@ static gboolean remmina_plugin_vnc_on_draw(GtkWidget *widget, cairo_t *context,
LOCK_BUFFER(FALSE);
surface = gpdata->rgb_buffer;
- if (!surface)
- {
+ if (!surface) {
UNLOCK_BUFFER(FALSE);
return FALSE;
}
@@ -1892,11 +1760,11 @@ static gboolean remmina_plugin_vnc_on_draw(GtkWidget *widget, cairo_t *context,
width = remmina_plugin_service->protocol_plugin_get_width(gp);
height = remmina_plugin_service->protocol_plugin_get_height(gp);
- if((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE)) {
+ if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE)) {
gtk_widget_get_allocation(widget, &widget_allocation);
cairo_scale(context,
- (double) widget_allocation.width / width,
- (double) widget_allocation.height / height);
+ (double)widget_allocation.width / width,
+ (double)widget_allocation.height / height);
}
cairo_rectangle(context, 0, 0, width, height);
@@ -1921,9 +1789,9 @@ static void remmina_plugin_vnc_init(RemminaProtocolWidget *gp)
gtk_container_add(GTK_CONTAINER(gp), gpdata->drawing_area);
gtk_widget_add_events(
- gpdata->drawing_area,
- GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK
- | GDK_KEY_RELEASE_MASK | GDK_SCROLL_MASK);
+ gpdata->drawing_area,
+ GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK
+ | GDK_KEY_RELEASE_MASK | GDK_SCROLL_MASK);
gtk_widget_set_can_focus(gpdata->drawing_area, TRUE);
@@ -1935,8 +1803,7 @@ static void remmina_plugin_vnc_init(RemminaProtocolWidget *gp)
gpdata->pressed_keys = g_ptr_array_new();
gpdata->vnc_event_queue = g_queue_new();
pthread_mutex_init(&gpdata->vnc_event_queue_mutex, NULL);
- if (pipe(gpdata->vnc_event_pipe))
- {
+ if (pipe(gpdata->vnc_event_pipe)) {
g_print("Error creating pipes.\n");
gpdata->vnc_event_pipe[0] = 0;
gpdata->vnc_event_pipe[1] = 0;
@@ -1944,14 +1811,14 @@ static void remmina_plugin_vnc_init(RemminaProtocolWidget *gp)
flags = fcntl(gpdata->vnc_event_pipe[0], F_GETFL, 0);
fcntl(gpdata->vnc_event_pipe[0], F_SETFL, flags | O_NONBLOCK);
- pthread_mutex_init (&gpdata->buffer_mutex, NULL);
+ pthread_mutex_init(&gpdata->buffer_mutex, NULL);
}
/* Array of key/value pairs for color depths */
static gpointer colordepth_list[] =
{
- "8", N_("256 colors (8 bpp)"),
+ "8", N_("256 colors (8 bpp)"),
"15", N_("High color (15 bpp)"),
"16", N_("High color (16 bpp)"),
"24", N_("True color (24 bpp)"),
@@ -1980,14 +1847,14 @@ static gpointer quality_list[] =
*/
static const RemminaProtocolSetting remmina_plugin_vnc_basic_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, "_rfb._tcp", NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "proxy", N_("Repeater"), FALSE, NULL, NULL},
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, NULL, NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, "server", NULL, FALSE, "_rfb._tcp", NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "proxy", N_("Repeater"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, NULL, NULL, FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array of RemminaProtocolSetting for basic settings.
@@ -2001,13 +1868,13 @@ static const RemminaProtocolSetting remmina_plugin_vnc_basic_settings[] =
*/
static const RemminaProtocolSetting remmina_plugin_vnci_basic_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "listenport", N_("Listen on port"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, NULL, NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "listenport", N_("Listen on port"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "username", N_("User name"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, NULL, NULL, FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array of RemminaProtocolSetting for advanced settings.
@@ -2021,73 +1888,75 @@ static const RemminaProtocolSetting remmina_plugin_vnci_basic_settings[] =
*/
static const RemminaProtocolSetting remmina_plugin_vnc_advanced_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "showcursor", N_("Show remote cursor"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "viewonly", N_("View only"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableencryption", N_("Disable encryption"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableserverinput", N_("Disable server input"), TRUE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "showcursor", N_("Show remote cursor"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "viewonly", N_("View only"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableencryption", N_("Disable encryption"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableserverinput", N_("Disable server input"), TRUE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disablepasswordstoring", N_("Disable password storing"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array for available features.
* The last element of the array must be REMMINA_PROTOCOL_FEATURE_TYPE_END. */
static const RemminaProtocolFeature remmina_plugin_vnc_features[] =
{
- { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_VNC_FEATURE_PREF_QUALITY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_RADIO), "quality", quality_list },
- { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_VNC_FEATURE_PREF_VIEWONLY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "viewonly", N_("View only") },
- { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_VNC_FEATURE_PREF_DISABLESERVERINPUT, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "disableserverinput", N_("Disable server input") },
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_VNC_FEATURE_TOOL_REFRESH, N_("Refresh"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_VNC_FEATURE_TOOL_CHAT, N_("Open Chat..."), "face-smile", NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_VNC_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_PLUGIN_VNC_FEATURE_SCALE, NULL, NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS, REMMINA_PLUGIN_VNC_FEATURE_UNFOCUS, NULL, NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
+ { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_VNC_FEATURE_PREF_QUALITY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_RADIO), "quality",
+ quality_list },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_VNC_FEATURE_PREF_VIEWONLY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "viewonly",
+ N_("View only") },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_PLUGIN_VNC_FEATURE_PREF_DISABLESERVERINPUT, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "disableserverinput", N_("Disable server input") },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_VNC_FEATURE_TOOL_REFRESH, N_("Refresh"), NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_VNC_FEATURE_TOOL_CHAT, N_("Open Chat..."), "face-smile", NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_VNC_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_PLUGIN_VNC_FEATURE_SCALE, NULL, NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS, REMMINA_PLUGIN_VNC_FEATURE_UNFOCUS, NULL, NULL, NULL },
+ { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
};
/* Protocol plugin definition and features */
static RemminaProtocolPlugin remmina_plugin_vnc =
{
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- "VNC", // Name
- N_("VNC - Virtual Network Computing"), // Description
- GETTEXT_PACKAGE, // Translation domain
- VERSION, // Version number
- "remmina-vnc", // Icon for normal connection
- "remmina-vnc-ssh", // Icon for SSH connection
- remmina_plugin_vnc_basic_settings, // Array for basic settings
- remmina_plugin_vnc_advanced_settings, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
- remmina_plugin_vnc_features, // Array for available features
- remmina_plugin_vnc_init, // Plugin initialization
- remmina_plugin_vnc_open_connection, // Plugin open connection
- remmina_plugin_vnc_close_connection, // Plugin close connection
- remmina_plugin_vnc_query_feature, // Query for available features
- remmina_plugin_vnc_call_feature, // Call a feature
- remmina_plugin_vnc_keystroke // Send a keystroke
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ "VNC", // Name
+ N_("VNC - Virtual Network Computing"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ VERSION, // Version number
+ "remmina-vnc", // Icon for normal connection
+ "remmina-vnc-ssh", // Icon for SSH connection
+ remmina_plugin_vnc_basic_settings, // Array for basic settings
+ remmina_plugin_vnc_advanced_settings, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
+ remmina_plugin_vnc_features, // Array for available features
+ remmina_plugin_vnc_init, // Plugin initialization
+ remmina_plugin_vnc_open_connection, // Plugin open connection
+ remmina_plugin_vnc_close_connection, // Plugin close connection
+ remmina_plugin_vnc_query_feature, // Query for available features
+ remmina_plugin_vnc_call_feature, // Call a feature
+ remmina_plugin_vnc_keystroke // Send a keystroke
};
/* Protocol plugin definition and features */
static RemminaProtocolPlugin remmina_plugin_vnci =
{
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- "VNCI", // Name
- N_("VNC - Incoming Connection"), // Description
- GETTEXT_PACKAGE, // Translation domain
- VERSION, // Version number
- "remmina-vnc", // Icon for normal connection
- "remmina-vnc-ssh", // Icon for SSH connection
- remmina_plugin_vnci_basic_settings, // Array for basic settings
- remmina_plugin_vnc_advanced_settings, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_REVERSE_TUNNEL, // SSH settings type
- remmina_plugin_vnc_features, // Array for available features
- remmina_plugin_vnc_init, // Plugin initialization
- remmina_plugin_vnc_open_connection, // Plugin open connection
- remmina_plugin_vnc_close_connection, // Plugin close connection
- remmina_plugin_vnc_query_feature, // Query for available features
- remmina_plugin_vnc_call_feature, // Call a feature
- remmina_plugin_vnc_keystroke, // Send a keystroke
- NULL // No screenshot support available
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ "VNCI", // Name
+ N_("VNC - Incoming Connection"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ VERSION, // Version number
+ "remmina-vnc", // Icon for normal connection
+ "remmina-vnc-ssh", // Icon for SSH connection
+ remmina_plugin_vnci_basic_settings, // Array for basic settings
+ remmina_plugin_vnc_advanced_settings, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_REVERSE_TUNNEL, // SSH settings type
+ remmina_plugin_vnc_features, // Array for available features
+ remmina_plugin_vnc_init, // Plugin initialization
+ remmina_plugin_vnc_open_connection, // Plugin open connection
+ remmina_plugin_vnc_close_connection, // Plugin close connection
+ remmina_plugin_vnc_query_feature, // Query for available features
+ remmina_plugin_vnc_call_feature, // Call a feature
+ remmina_plugin_vnc_keystroke, // Send a keystroke
+ NULL // No screenshot support available
};
G_MODULE_EXPORT gboolean
@@ -2099,13 +1968,11 @@ remmina_plugin_entry(RemminaPluginService *service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin_vnc))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin_vnc)) {
return FALSE;
}
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin_vnci))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin_vnci)) {
return FALSE;
}
diff --git a/remmina-plugins/xdmcp/xdmcp_plugin.c b/remmina-plugins/xdmcp/xdmcp_plugin.c
index 516497b48..7dfda59de 100644
--- a/remmina-plugins/xdmcp/xdmcp_plugin.c
+++ b/remmina-plugins/xdmcp/xdmcp_plugin.c
@@ -43,13 +43,12 @@ INCLUDE_GET_AVAILABLE_XDISPLAY
#define REMMINA_PLUGIN_XDMCP_FEATURE_TOOL_SENDCTRLALTDEL 1
-#define GET_PLUGIN_DATA(gp) (RemminaPluginXdmcpData*) g_object_get_data(G_OBJECT(gp), "plugin-data");
+#define GET_PLUGIN_DATA(gp) (RemminaPluginXdmcpData*)g_object_get_data(G_OBJECT(gp), "plugin-data");
/* Forward declaration */
static RemminaProtocolPlugin remmina_plugin_xdmcp;
-typedef struct _RemminaPluginXdmcpData
-{
+typedef struct _RemminaPluginXdmcpData {
GtkWidget *socket;
gint socket_id;
GPid pid;
@@ -95,8 +94,7 @@ static gboolean remmina_plugin_xdmcp_start_xephyr(RemminaProtocolWidget *gp)
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
gpdata->display = remmina_get_available_xdisplay();
- if (gpdata->display == 0)
- {
+ if (gpdata->display == 0) {
remmina_plugin_service->protocol_plugin_set_error(gp, _("Run out of available local X display number."));
return FALSE;
}
@@ -115,50 +113,41 @@ static gboolean remmina_plugin_xdmcp_start_xephyr(RemminaProtocolWidget *gp)
* As a workaround, a "Default" color depth will not add the -screen argument.
*/
i = remmina_plugin_service->file_get_int(remminafile, "colordepth", 8);
- if (i >= 8)
- {
+ if (i >= 8) {
argv[argc++] = g_strdup("-screen");
argv[argc++] = g_strdup_printf("%ix%ix%i",
- remmina_plugin_service->get_profile_remote_width(gp),
- remmina_plugin_service->get_profile_remote_height(gp), i);
+ remmina_plugin_service->get_profile_remote_width(gp),
+ remmina_plugin_service->get_profile_remote_height(gp), i);
}
- if (i == 2)
- {
+ if (i == 2) {
argv[argc++] = g_strdup("-grayscale");
}
- if (remmina_plugin_service->file_get_int(remminafile, "showcursor", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "showcursor", FALSE)) {
argv[argc++] = g_strdup("-host-cursor");
}
- if (remmina_plugin_service->file_get_int(remminafile, "once", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "once", FALSE)) {
argv[argc++] = g_strdup("-once");
}
/* Listen on protocol TCP */
- if (remmina_plugin_service->file_get_int(remminafile, "listen_on_tcp", FALSE))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "listen_on_tcp", FALSE)) {
argv[argc++] = g_strdup("-listen");
argv[argc++] = g_strdup("tcp");
}
- if (!remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE))
- {
+ if (!remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE)) {
remmina_plugin_service->get_server_port(remmina_plugin_service->file_get_string(remminafile, "server"), 0,
- &host, &i);
+ &host, &i);
argv[argc++] = g_strdup("-query");
argv[argc++] = host;
- if (i)
- {
+ if (i) {
argv[argc++] = g_strdup("-port");
argv[argc++] = g_strdup_printf("%i", i);
}
- }
- else
- {
+ }else {
/* When the connection is through an SSH tunnel, it connects back to local unix socket,
* so for security we can disable tcp listening */
argv[argc++] = g_strdup("-nolisten");
@@ -175,8 +164,7 @@ static gboolean remmina_plugin_xdmcp_start_xephyr(RemminaProtocolWidget *gp)
for (i = 0; i < argc; i++)
g_free(argv[i]);
- if (!ret)
- {
+ if (!ret) {
remmina_plugin_service->protocol_plugin_set_error(gp, "%s", error->message);
return FALSE;
}
@@ -185,7 +173,7 @@ static gboolean remmina_plugin_xdmcp_start_xephyr(RemminaProtocolWidget *gp)
}
static gboolean remmina_plugin_xdmcp_tunnel_init_callback(RemminaProtocolWidget *gp, gint remotedisplay, const gchar *server,
- gint port)
+ gint port)
{
TRACE_CALL("__func__");
RemminaPluginXdmcpData *gpdata = GET_PLUGIN_DATA(gp);
@@ -200,15 +188,12 @@ static gboolean remmina_plugin_xdmcp_tunnel_init_callback(RemminaProtocolWidget
remmina_plugin_service->protocol_plugin_set_display(gp, gpdata->display);
- if (remmina_plugin_service->file_get_string(remminafile, "exec"))
- {
+ if (remmina_plugin_service->file_get_string(remminafile, "exec")) {
return remmina_plugin_service->protocol_plugin_ssh_exec(gp, FALSE, "DISPLAY=localhost:%i.0 %s", remotedisplay,
- remmina_plugin_service->file_get_string(remminafile, "exec"));
- }
- else
- {
+ remmina_plugin_service->file_get_string(remminafile, "exec"));
+ }else {
return remmina_plugin_service->protocol_plugin_ssh_exec(gp, TRUE,
- "xqproxy -display %i -host %s -port %i -query -manage", remotedisplay, server, port);
+ "xqproxy -display %i -host %s -port %i -query -manage", remotedisplay, server, port);
}
}
@@ -220,18 +205,13 @@ static gboolean remmina_plugin_xdmcp_main(RemminaProtocolWidget *gp)
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- if (remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE))
- {
- if (!remmina_plugin_service->protocol_plugin_start_xport_tunnel(gp, remmina_plugin_xdmcp_tunnel_init_callback))
- {
+ if (remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE)) {
+ if (!remmina_plugin_service->protocol_plugin_start_xport_tunnel(gp, remmina_plugin_xdmcp_tunnel_init_callback)) {
gpdata->thread = 0;
return FALSE;
}
- }
- else
- {
- if (!remmina_plugin_xdmcp_start_xephyr(gp))
- {
+ }else {
+ if (!remmina_plugin_xdmcp_start_xephyr(gp)) {
gpdata->thread = 0;
return FALSE;
}
@@ -242,15 +222,14 @@ static gboolean remmina_plugin_xdmcp_main(RemminaProtocolWidget *gp)
}
static gpointer
-remmina_plugin_xdmcp_main_thread (gpointer data)
+remmina_plugin_xdmcp_main_thread(gpointer data)
{
TRACE_CALL("__func__");
- pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL);
+ pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
CANCEL_ASYNC
- if (!remmina_plugin_xdmcp_main ((RemminaProtocolWidget*) data))
- {
- IDLE_ADD ((GSourceFunc) remmina_plugin_service->protocol_plugin_close_connection, data);
+ if (!remmina_plugin_xdmcp_main((RemminaProtocolWidget*)data)) {
+ IDLE_ADD((GSourceFunc)remmina_plugin_service->protocol_plugin_close_connection, data);
}
return NULL;
}
@@ -281,9 +260,8 @@ static gboolean remmina_plugin_xdmcp_open_connection(RemminaProtocolWidget *gp)
RemminaFile *remminafile;
gint width, height;
- if (!remmina_plugin_service->gtksocket_available())
- {
- remmina_plugin_service->protocol_plugin_set_error (gp,
+ if (!remmina_plugin_service->gtksocket_available()) {
+ remmina_plugin_service->protocol_plugin_set_error(gp,
_("Protocol %s is unavailable because GtkSocket only works under Xorg"),
remmina_plugin_xdmcp.name);
return FALSE;
@@ -299,23 +277,17 @@ static gboolean remmina_plugin_xdmcp_open_connection(RemminaProtocolWidget *gp)
gpdata->socket_id = gtk_socket_get_id(GTK_SOCKET(gpdata->socket));
- if (remmina_plugin_service->file_get_int (remminafile, "ssh_enabled", FALSE))
- {
- if (pthread_create (&gpdata->thread, NULL, remmina_plugin_xdmcp_main_thread, gp))
- {
- remmina_plugin_service->protocol_plugin_set_error (gp,
- "Failed to initialize pthread. Falling back to non-thread mode...");
+ if (remmina_plugin_service->file_get_int(remminafile, "ssh_enabled", FALSE)) {
+ if (pthread_create(&gpdata->thread, NULL, remmina_plugin_xdmcp_main_thread, gp)) {
+ remmina_plugin_service->protocol_plugin_set_error(gp,
+ "Failed to initialize pthread. Falling back to non-thread mode...");
gpdata->thread = 0;
return FALSE;
- }
- else
- {
+ }else {
return TRUE;
}
- }
- else
- {
- return remmina_plugin_xdmcp_main (gp);
+ }else {
+ return remmina_plugin_xdmcp_main(gp);
}
}
@@ -325,14 +297,12 @@ static gboolean remmina_plugin_xdmcp_close_connection(RemminaProtocolWidget *gp)
TRACE_CALL("__func__");
RemminaPluginXdmcpData *gpdata = GET_PLUGIN_DATA(gp);
- if (gpdata->thread)
- {
- pthread_cancel (gpdata->thread);
- if (gpdata->thread) pthread_join (gpdata->thread, NULL);
+ if (gpdata->thread) {
+ pthread_cancel(gpdata->thread);
+ if (gpdata->thread) pthread_join(gpdata->thread, NULL);
}
- if (gpdata->pid)
- {
+ if (gpdata->pid) {
kill(gpdata->pid, SIGTERM);
g_spawn_close_pid(gpdata->pid);
gpdata->pid = 0;
@@ -366,22 +336,21 @@ static void remmina_plugin_xdmcp_call_feature(RemminaProtocolWidget *gp, const R
RemminaFile *remminafile;
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
- switch (feature->id)
- {
- case REMMINA_PLUGIN_XDMCP_FEATURE_TOOL_SENDCTRLALTDEL:
- remmina_plugin_xdmcp_send_ctrlaltdel(gp);
- break;
- default:
- break;
+ switch (feature->id) {
+ case REMMINA_PLUGIN_XDMCP_FEATURE_TOOL_SENDCTRLALTDEL:
+ remmina_plugin_xdmcp_send_ctrlaltdel(gp);
+ break;
+ default:
+ break;
}
}
/* Array of key/value pairs for color depths */
static gpointer colordepth_list[] =
{
- "0", N_("Default"),
- "2", N_("Grayscale"),
- "8", N_("256 colors"),
+ "0", N_("Default"),
+ "2", N_("Grayscale"),
+ "8", N_("256 colors"),
"16", N_("High color (16 bit)"),
"24", N_("True color (24 bit)"),
NULL
@@ -398,14 +367,14 @@ static gpointer colordepth_list[] =
*/
static const RemminaProtocolSetting remmina_plugin_xdmcp_basic_settings[] =
{
- { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, NULL, NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, NULL, NULL, FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "exec", N_("Startup program"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "showcursor", N_("Use local cursor"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "once", N_("Disconnect after one session"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "listen_on_tcp", N_("Listening connection on protocol TCP"), FALSE, NULL, NULL },
- { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
+ { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, NULL, NULL, FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, NULL, NULL, FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Color depth"), FALSE, colordepth_list, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "exec", N_("Startup program"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "showcursor", N_("Use local cursor"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "once", N_("Disconnect after one session"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "listen_on_tcp", N_("Listening connection on protocol TCP"), FALSE, NULL, NULL },
+ { REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
/* Array for available features.
@@ -413,30 +382,30 @@ static const RemminaProtocolSetting remmina_plugin_xdmcp_basic_settings[] =
static const RemminaProtocolFeature remmina_plugin_xdmcp_features[] =
{
{ REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_PLUGIN_XDMCP_FEATURE_TOOL_SENDCTRLALTDEL, N_("Send Ctrl+Alt+Delete"), NULL, NULL },
- { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
+ { REMMINA_PROTOCOL_FEATURE_TYPE_END, 0, NULL, NULL, NULL }
};
/* Protocol plugin definition and features */
static RemminaProtocolPlugin remmina_plugin_xdmcp =
{
- REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
- "XDMCP", // Name
- N_("XDMCP - X Remote Session"), // Description
- GETTEXT_PACKAGE, // Translation domain
- VERSION, // Version number
- "remmina-xdmcp", // Icon for normal connection
- "remmina-xdmcp-ssh", // Icon for SSH connection
- remmina_plugin_xdmcp_basic_settings, // Array for basic settings
- NULL, // Array for advanced settings
- REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
- remmina_plugin_xdmcp_features, // Array for available features
- remmina_plugin_xdmcp_init, // Plugin initialization
- remmina_plugin_xdmcp_open_connection, // Plugin open connection
- remmina_plugin_xdmcp_close_connection, // Plugin close connection
- remmina_plugin_xdmcp_query_feature, // Query for available features
- remmina_plugin_xdmcp_call_feature, // Call a feature
- NULL, // Send a keystroke
- NULL // Screenshot
+ REMMINA_PLUGIN_TYPE_PROTOCOL, // Type
+ "XDMCP", // Name
+ N_("XDMCP - X Remote Session"), // Description
+ GETTEXT_PACKAGE, // Translation domain
+ VERSION, // Version number
+ "remmina-xdmcp", // Icon for normal connection
+ "remmina-xdmcp-ssh", // Icon for SSH connection
+ remmina_plugin_xdmcp_basic_settings, // Array for basic settings
+ NULL, // Array for advanced settings
+ REMMINA_PROTOCOL_SSH_SETTING_TUNNEL, // SSH settings type
+ remmina_plugin_xdmcp_features, // Array for available features
+ remmina_plugin_xdmcp_init, // Plugin initialization
+ remmina_plugin_xdmcp_open_connection, // Plugin open connection
+ remmina_plugin_xdmcp_close_connection, // Plugin close connection
+ remmina_plugin_xdmcp_query_feature, // Query for available features
+ remmina_plugin_xdmcp_call_feature, // Call a feature
+ NULL, // Send a keystroke
+ NULL // Screenshot
};
G_MODULE_EXPORT gboolean
@@ -448,8 +417,7 @@ remmina_plugin_entry(RemminaPluginService *service)
bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- if (!service->register_plugin((RemminaPlugin *) &remmina_plugin_xdmcp))
- {
+ if (!service->register_plugin((RemminaPlugin*)&remmina_plugin_xdmcp)) {
return FALSE;
}