Merge 1.6.0 changes back to patch.
This commit is contained in:
commit
72d3adfb77
@ -292,7 +292,7 @@ static BOOL guac_rdp_rail_window_update(rdpContext* context,
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -182,22 +182,22 @@ static rfbBool guac_vnc_send_desktop_size(rfbClient* client, int width, int heig
|
||||
/* Get the Guacamole client data */
|
||||
guac_client* gc = rfbClientGetClientData(client, GUAC_VNC_CLIENT_KEY);
|
||||
|
||||
guac_client_log(gc, GUAC_LOG_TRACE,
|
||||
"Current screen size is %ix%i; setting new size %ix%i\n",
|
||||
rfbClientSwap16IfLE(client->screen.width),
|
||||
rfbClientSwap16IfLE(client->screen.height),
|
||||
width, height);
|
||||
|
||||
#ifdef LIBVNC_CLIENT_HAS_SCREEN
|
||||
/* Don't send an update if the sreen appears to be uninitialized. */
|
||||
if (client->screen.width == 0 || client->screen.height == 0) {
|
||||
guac_client_log(gc, GUAC_LOG_ERROR, "Screen has not been initialized, cannot send resize.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Don't send an update if the requested dimensions are identical to current dimensions. */
|
||||
if (client->screen.width == rfbClientSwap16IfLE(width) && client->screen.height == rfbClientSwap16IfLE(height)) {
|
||||
guac_client_log(gc, GUAC_LOG_WARNING, "Screen size has not changed, not sending update.");
|
||||
return FALSE;
|
||||
}
|
||||
#else
|
||||
/* Don't send an update if the sreen appears to be uninitialized. */
|
||||
/* Don't send an update if the screen appears to be uninitialized. */
|
||||
if (client->width == 0 || client->height == 0) {
|
||||
guac_client_log(gc, GUAC_LOG_ERROR, "Framebuffer has not been initialized, cannot send resize.");
|
||||
guac_client_log(gc, GUAC_LOG_WARNING, "Framebuffer has not been initialized, cannot send resize.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -219,8 +219,8 @@ static rfbBool guac_vnc_send_desktop_size(rfbClient* client, int width, int heig
|
||||
*/
|
||||
|
||||
/* Set up the messages. */
|
||||
rfbSetDesktopSizeMsg size_msg;
|
||||
rfbExtDesktopScreen new_screen;
|
||||
rfbSetDesktopSizeMsg size_msg = { 0 };
|
||||
rfbExtDesktopScreen new_screen = { 0 };
|
||||
|
||||
/* Configure the desktop size update message. */
|
||||
size_msg.type = rfbSetDesktopSize;
|
||||
@ -230,13 +230,13 @@ static rfbBool guac_vnc_send_desktop_size(rfbClient* client, int width, int heig
|
||||
|
||||
#ifdef LIBVNC_CLIENT_HAS_SCREEN
|
||||
/* Configure the screen update message. */
|
||||
new_screen.id = client->screen.id;
|
||||
new_screen.id = GUAC_VNC_SCREEN_ID;
|
||||
new_screen.x = client->screen.x;
|
||||
new_screen.y = client->screen.y;
|
||||
new_screen.flags = client->screen.flags;
|
||||
#else
|
||||
/* Assume screen starts at the origin. */
|
||||
new_screen.id = 0;
|
||||
new_screen.id = GUAC_VNC_SCREEN_ID;
|
||||
new_screen.x = 0;
|
||||
new_screen.y = 0;
|
||||
new_screen.flags = 0;
|
||||
@ -245,16 +245,12 @@ static rfbBool guac_vnc_send_desktop_size(rfbClient* client, int width, int heig
|
||||
new_screen.width = rfbClientSwap16IfLE(width);
|
||||
new_screen.height = rfbClientSwap16IfLE(height);
|
||||
|
||||
#ifdef LIBVNC_CLIENT_HAS_REQUESTED_RESIZE
|
||||
/* Stop updates while the resize is in progress. */
|
||||
client->requestedResize = TRUE;
|
||||
#endif // LIBVNC_HAS_REQUESTED_RESIZE
|
||||
|
||||
/* Send the resize messages to the remote server. */
|
||||
if (!WriteToRFBServer(client, (char *)&size_msg, sz_rfbSetDesktopSizeMsg)
|
||||
|| !WriteToRFBServer(client, (char *)&new_screen, sz_rfbExtDesktopScreen)) {
|
||||
|
||||
guac_client_log(gc, GUAC_LOG_ERROR, "Failed to send new desktop and screen size to the VNC server.");
|
||||
guac_client_log(gc, GUAC_LOG_WARNING,
|
||||
"Failed to send new desktop and screen size to the VNC server.");
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
@ -266,7 +262,6 @@ static rfbBool guac_vnc_send_desktop_size(rfbClient* client, int width, int heig
|
||||
#endif // LIBVNC_CLIENT_HAS_SCREEN
|
||||
|
||||
#ifdef LIBVNC_CLIENT_HAS_REQUESTED_RESIZE
|
||||
/* Request a full screen update. */
|
||||
client->requestedResize = FALSE;
|
||||
#endif // LIBVNC_HAS_REQUESTED_RESIZE
|
||||
|
||||
@ -274,6 +269,10 @@ static rfbBool guac_vnc_send_desktop_size(rfbClient* client, int width, int heig
|
||||
guac_client_log(gc, GUAC_LOG_WARNING, "Failed to request a full screen update.");
|
||||
}
|
||||
|
||||
#ifdef LIBVNC_CLIENT_HAS_REQUESTED_RESIZE
|
||||
client->requestedResize = TRUE;
|
||||
#endif // LIBVNC_HAS_REQUESTED_RESIZE
|
||||
|
||||
/* Update should be successful. */
|
||||
return TRUE;
|
||||
}
|
||||
@ -310,8 +309,15 @@ void guac_vnc_display_set_size(rfbClient* client, int width, int height) {
|
||||
|
||||
/* Send the display size update. */
|
||||
guac_client_log(gc, GUAC_LOG_TRACE, "Setting VNC display size.");
|
||||
if (guac_vnc_send_desktop_size(client, width, height))
|
||||
if (guac_vnc_send_desktop_size(client, width, height)) {
|
||||
guac_client_log(gc, GUAC_LOG_TRACE, "Successfully sent desktop size message.");
|
||||
|
||||
/* Resize the surface now that the VNC size update has completed */
|
||||
if (vnc_client->display != NULL)
|
||||
guac_common_surface_resize(vnc_client->display->default_surface,
|
||||
width, height);
|
||||
}
|
||||
|
||||
else
|
||||
guac_client_log(gc, GUAC_LOG_TRACE, "Failed to send desktop size message.");
|
||||
|
||||
|
||||
@ -47,6 +47,12 @@
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
/**
|
||||
* The ID of the RFB client screen. If multi-screen support is added, more than
|
||||
* one ID will be needed as well.
|
||||
*/
|
||||
#define GUAC_VNC_SCREEN_ID 1
|
||||
|
||||
/**
|
||||
* VNC-specific client data.
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user