summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_mm.c
diff options
context:
space:
mode:
Diffstat (limited to 'xrdp/xrdp_mm.c')
-rw-r--r--xrdp/xrdp_mm.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c
index df9bddcd..b0a6ca5a 100644
--- a/xrdp/xrdp_mm.c
+++ b/xrdp/xrdp_mm.c
@@ -2175,6 +2175,7 @@ xrdp_mm_check_wait_objs(struct xrdp_mm *self)
int cx;
int cy;
int use_frame_acks;
+ int ex;
if (self == 0)
{
@@ -2279,6 +2280,19 @@ xrdp_mm_check_wait_objs(struct xrdp_mm *self)
enc_done->enc->flags,
enc_done->enc->frame_id);
}
+ else
+ {
+ ex = self->wm->client_info->max_unacknowledged_frame_count;
+ if (self->encoder->frame_id_client + ex >= self->encoder->frame_id_server)
+ {
+ if (self->encoder->frame_id_server > self->encoder->frame_id_server_sent)
+ {
+ LLOGLN(10, ("xrdp_mm_check_wait_objs: 1 -- %d", self->encoder->frame_id_server));
+ self->encoder->frame_id_server_sent = self->encoder->frame_id_server;
+ self->mod->mod_frame_ack(self->mod, 0, self->encoder->frame_id_server);
+ }
+ }
+ }
g_free(enc_done->enc->drects);
g_free(enc_done->enc->crects);
g_free(enc_done->enc);