diff --git a/src/protocols/rdp/rdp.c b/src/protocols/rdp/rdp.c index e759888a..cf55c753 100644 --- a/src/protocols/rdp/rdp.c +++ b/src/protocols/rdp/rdp.c @@ -839,14 +839,18 @@ static int guac_rdp_handle_connection(guac_client* client) { 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 */ /* End of frame */ guac_common_display_flush(rdp_client->display); guac_client_end_frame(client); guac_socket_flush(client->socket); - /* Record end of frame */ - last_frame_end = guac_timestamp_current(); - } pthread_mutex_lock(&(rdp_client->rdp_lock)); diff --git a/src/protocols/vnc/vnc.c b/src/protocols/vnc/vnc.c index f9ab6873..4f1e8da1 100644 --- a/src/protocols/vnc/vnc.c +++ b/src/protocols/vnc/vnc.c @@ -408,14 +408,17 @@ void* guac_vnc_client_thread(void* data) { if (wait_result < 0) 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 */ guac_common_surface_flush(vnc_client->display->default_surface); guac_client_end_frame(client); guac_socket_flush(client->socket); - /* Record end of frame */ - last_frame_end = guac_timestamp_current(); - } /* Kill client and finish connection */