GUACAMOLE-172: Exclude server-side rendering time from next frame's required wait (if render times are consistent, then including that time will result in duplicate waiting: once within the render loop, and again when actually flushing the display).
This commit is contained in:
parent
9e6e4e520c
commit
f641d91b55
@ -839,14 +839,18 @@ static int guac_rdp_handle_connection(guac_client* client) {
|
|||||||
guac_client_abort(client, GUAC_PROTOCOL_STATUS_UPSTREAM_ERROR,
|
guac_client_abort(client, GUAC_PROTOCOL_STATUS_UPSTREAM_ERROR,
|
||||||
"Connection closed.");
|
"Connection closed.");
|
||||||
|
|
||||||
|
/* Record end of frame, excluding server-side rendering time (we assume
|
||||||
|
* server-side rendering time will be consistent between any two
|
||||||
|
* subsequent frames, and that this time should thus be excluded from
|
||||||
|
* the required wait period of the next frame). */
|
||||||
|
last_frame_end = guac_timestamp_current();
|
||||||
|
|
||||||
|
/* Flush frame */
|
||||||
/* End of frame */
|
/* End of frame */
|
||||||
guac_common_display_flush(rdp_client->display);
|
guac_common_display_flush(rdp_client->display);
|
||||||
guac_client_end_frame(client);
|
guac_client_end_frame(client);
|
||||||
guac_socket_flush(client->socket);
|
guac_socket_flush(client->socket);
|
||||||
|
|
||||||
/* Record end of frame */
|
|
||||||
last_frame_end = guac_timestamp_current();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_lock(&(rdp_client->rdp_lock));
|
pthread_mutex_lock(&(rdp_client->rdp_lock));
|
||||||
|
@ -408,14 +408,17 @@ void* guac_vnc_client_thread(void* data) {
|
|||||||
if (wait_result < 0)
|
if (wait_result < 0)
|
||||||
guac_client_abort(client, GUAC_PROTOCOL_STATUS_UPSTREAM_ERROR, "Connection closed.");
|
guac_client_abort(client, GUAC_PROTOCOL_STATUS_UPSTREAM_ERROR, "Connection closed.");
|
||||||
|
|
||||||
|
/* Record end of frame, excluding server-side rendering time (we assume
|
||||||
|
* server-side rendering time will be consistent between any two
|
||||||
|
* subsequent frames, and that this time should thus be excluded from
|
||||||
|
* the required wait period of the next frame). */
|
||||||
|
last_frame_end = guac_timestamp_current();
|
||||||
|
|
||||||
/* Flush frame */
|
/* Flush frame */
|
||||||
guac_common_surface_flush(vnc_client->display->default_surface);
|
guac_common_surface_flush(vnc_client->display->default_surface);
|
||||||
guac_client_end_frame(client);
|
guac_client_end_frame(client);
|
||||||
guac_socket_flush(client->socket);
|
guac_socket_flush(client->socket);
|
||||||
|
|
||||||
/* Record end of frame */
|
|
||||||
last_frame_end = guac_timestamp_current();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Kill client and finish connection */
|
/* Kill client and finish connection */
|
||||||
|
Loading…
Reference in New Issue
Block a user