diff --git a/src/protocols/rdp/gdi.c b/src/protocols/rdp/gdi.c index 7e39cc4a..88aea7f9 100644 --- a/src/protocols/rdp/gdi.c +++ b/src/protocols/rdp/gdi.c @@ -388,7 +388,7 @@ void guac_rdp_gdi_mark_frame(rdpContext* context, int starting) { /* The current frame has ended */ guac_timestamp frame_end = guac_timestamp_current(); - int time_elapsed = frame_end - rdp_client->frame_start; + int time_elapsed = frame_end - client->last_sent_timestamp; rdp_client->in_frame = 0; /* A new frame has been received from the RDP server and processed */ @@ -396,14 +396,10 @@ void guac_rdp_gdi_mark_frame(rdpContext* context, int starting) { /* Flush a new frame if the client is ready for it */ if (time_elapsed >= guac_client_get_processing_lag(client)) { - guac_common_display_flush(rdp_client->display); guac_client_end_multiple_frames(client, rdp_client->frames_received); guac_socket_flush(client->socket); - - rdp_client->frame_start = frame_end; rdp_client->frames_received = 0; - } } diff --git a/src/protocols/rdp/rdp.c b/src/protocols/rdp/rdp.c index f2a121b5..e7ec71c5 100644 --- a/src/protocols/rdp/rdp.c +++ b/src/protocols/rdp/rdp.c @@ -534,7 +534,6 @@ static int guac_rdp_handle_connection(guac_client* client) { rdp_client->rdp_inst = rdp_inst; guac_timestamp last_frame_end = guac_timestamp_current(); - rdp_client->frame_start = guac_timestamp_current(); /* Signal that reconnect has been completed */ guac_rdp_disp_reconnect_complete(rdp_client->disp); @@ -554,7 +553,6 @@ static int guac_rdp_handle_connection(guac_client* client) { if (wait_result > 0) { int processing_lag = guac_client_get_processing_lag(client); - guac_timestamp frame_start = guac_timestamp_current(); /* Read server messages until frame is built */ do { @@ -582,6 +580,7 @@ static int guac_rdp_handle_connection(guac_client* client) { } /* Calculate time remaining in frame */ + guac_timestamp frame_start = client->last_sent_timestamp; frame_end = guac_timestamp_current(); frame_remaining = frame_start + GUAC_RDP_FRAME_DURATION - frame_end; @@ -604,12 +603,6 @@ static int guac_rdp_handle_connection(guac_client* client) { } while (wait_result > 0); - /* 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 = frame_start; - } /* Test whether the RDP server is closing the connection */ @@ -630,8 +623,6 @@ static int guac_rdp_handle_connection(guac_client* client) { guac_common_display_flush(rdp_client->display); guac_client_end_multiple_frames(client, rdp_client->frames_received); guac_socket_flush(client->socket); - - rdp_client->frame_start = guac_timestamp_current(); rdp_client->frames_received = 0; } diff --git a/src/protocols/rdp/rdp.h b/src/protocols/rdp/rdp.h index 509fa1ac..9e3d3fe0 100644 --- a/src/protocols/rdp/rdp.h +++ b/src/protocols/rdp/rdp.h @@ -109,14 +109,6 @@ typedef struct guac_rdp_client { */ int frames_received; - /** - * The server timestamp of the end of the last frame received from the RDP - * server, as returned by guac_timestamp_current(), if the RDP server - * supports reporting frame boundaries. If the RDP server does not support - * tracking frames, this will be zero. - */ - guac_timestamp frame_start; - /** * The current state of the keyboard with respect to the RDP session. */