diff --git a/src/libguac/guacamole/user-fntypes.h b/src/libguac/guacamole/user-fntypes.h index 646a3b007..b9de901a3 100644 --- a/src/libguac/guacamole/user-fntypes.h +++ b/src/libguac/guacamole/user-fntypes.h @@ -220,12 +220,15 @@ typedef int guac_user_clipboard_handler(guac_user* user, guac_stream* stream, * @param height * The desired height of the display, in pixels. * + * @param monitors + * The count of monitors. + * * @return * Zero if the size event has been successfully handled, non-zero * otherwise. */ typedef int guac_user_size_handler(guac_user* user, - int width, int height); + int width, int height, int monitors); /** * Handler for Guacamole file streams received from a user. Each such file diff --git a/src/libguac/guacamole/user.h b/src/libguac/guacamole/user.h index 13fb146d4..4c041ab22 100644 --- a/src/libguac/guacamole/user.h +++ b/src/libguac/guacamole/user.h @@ -293,7 +293,7 @@ struct guac_user { * * Example: * @code - * int size_handler(guac_user* user, int width, int height); + * int size_handler(guac_user* user, int width, int height, int monitor); * * int guac_user_init(guac_user* user, int argc, char** argv) { * user->size_handler = size_handler; diff --git a/src/libguac/user-handlers.c b/src/libguac/user-handlers.c index b9013bc7c..450aa4892 100644 --- a/src/libguac/user-handlers.c +++ b/src/libguac/user-handlers.c @@ -372,7 +372,8 @@ int __guac_handle_size(guac_user* user, int argc, char** argv) { return user->size_handler( user, atoi(argv[0]), /* width */ - atoi(argv[1]) /* height */ + atoi(argv[1]), /* height */ + (argc == 3 ? atoi(argv[2]) : 1) /* Monitors count */ ); return 0; } diff --git a/src/protocols/kubernetes/input.c b/src/protocols/kubernetes/input.c index b61d55643..dd2ada6fe 100644 --- a/src/protocols/kubernetes/input.c +++ b/src/protocols/kubernetes/input.c @@ -70,7 +70,7 @@ int guac_kubernetes_user_key_handler(guac_user* user, int keysym, int pressed) { } -int guac_kubernetes_user_size_handler(guac_user* user, int width, int height) { +int guac_kubernetes_user_size_handler(guac_user* user, int width, int height, int monitors) { /* Get terminal */ guac_client* client = user->client; diff --git a/src/protocols/rdp/channels/disp.c b/src/protocols/rdp/channels/disp.c index da1ca800d..d72921d53 100644 --- a/src/protocols/rdp/channels/disp.c +++ b/src/protocols/rdp/channels/disp.c @@ -151,7 +151,7 @@ void guac_rdp_disp_load_plugin(rdpContext* context) { } void guac_rdp_disp_set_size(guac_rdp_disp* disp, guac_rdp_settings* settings, - freerdp* rdp_inst, int width, int height) { + freerdp* rdp_inst, int width, int height, int monitors) { guac_rect resize = { .left = 0, diff --git a/src/protocols/rdp/input.c b/src/protocols/rdp/input.c index d8890571e..4fc08bae5 100644 --- a/src/protocols/rdp/input.c +++ b/src/protocols/rdp/input.c @@ -191,7 +191,7 @@ int guac_rdp_user_key_handler(guac_user* user, int keysym, int pressed) { } -int guac_rdp_user_size_handler(guac_user* user, int width, int height) { +int guac_rdp_user_size_handler(guac_user* user, int width, int height, int monitors) { guac_client* client = user->client; guac_rdp_client* rdp_client = (guac_rdp_client*) client->data; @@ -203,7 +203,7 @@ int guac_rdp_user_size_handler(guac_user* user, int width, int height) { height = height * settings->resolution / user->info.optimal_resolution; /* Send display update */ - guac_rdp_disp_set_size(rdp_client->disp, settings, rdp_inst, width, height); + guac_rdp_disp_set_size(rdp_client->disp, settings, rdp_inst, width, height, monitors); return 0; diff --git a/src/protocols/ssh/input.c b/src/protocols/ssh/input.c index f60e1c9fa..07ab380a1 100644 --- a/src/protocols/ssh/input.c +++ b/src/protocols/ssh/input.c @@ -68,7 +68,7 @@ int guac_ssh_user_key_handler(guac_user* user, int keysym, int pressed) { return 0; } -int guac_ssh_user_size_handler(guac_user* user, int width, int height) { +int guac_ssh_user_size_handler(guac_user* user, int width, int height, int monitors) { /* Get terminal */ guac_client* client = user->client; diff --git a/src/protocols/telnet/input.c b/src/protocols/telnet/input.c index 849d1897b..e79108363 100644 --- a/src/protocols/telnet/input.c +++ b/src/protocols/telnet/input.c @@ -120,7 +120,7 @@ int guac_telnet_user_key_handler(guac_user* user, int keysym, int pressed) { } -int guac_telnet_user_size_handler(guac_user* user, int width, int height) { +int guac_telnet_user_size_handler(guac_user* user, int width, int height, int monitors) { /* Get terminal */ guac_client* client = user->client; diff --git a/src/protocols/vnc/input.c b/src/protocols/vnc/input.c index 04c80cf0a..4dea0a4ac 100644 --- a/src/protocols/vnc/input.c +++ b/src/protocols/vnc/input.c @@ -65,7 +65,7 @@ int guac_vnc_user_key_handler(guac_user* user, int keysym, int pressed) { } #ifdef LIBVNC_HAS_SIZE_MSG -int guac_vnc_user_size_handler(guac_user* user, int width, int height) { +int guac_vnc_user_size_handler(guac_user* user, int width, int height, int monitors) { guac_user_log(user, GUAC_LOG_TRACE, "Running user size handler.");