diff options
| -rw-r--r-- | xrdp/xrdp_encoder.c | 8 | ||||
| -rw-r--r-- | xrdp/xrdp_mm.c | 14 | 
2 files changed, 18 insertions, 4 deletions
| diff --git a/xrdp/xrdp_encoder.c b/xrdp/xrdp_encoder.c index 0af0b85e..ae6a1b35 100644 --- a/xrdp/xrdp_encoder.c +++ b/xrdp/xrdp_encoder.c @@ -320,21 +320,21 @@ process_enc_rfx(struct xrdp_encoder *self, XRDP_ENC_DATA *enc)      mutex = self->mutex;      event_processed = self->xrdp_encoder_event_processed; -    if ((enc->num_crects > 512) || (enc->num_drects > 512)) +    if ((enc->num_crects > 4096) || (enc->num_drects > 4096))      {          return 0;      }      out_data_bytes = 16 * 1024 * 1024; -    index = 256 + sizeof(struct rfx_tile) * 512 + -                  sizeof(struct rfx_rect) * 512; +    index = 256 + sizeof(struct rfx_tile) * 4096 + +                  sizeof(struct rfx_rect) * 4096;      out_data = (char *) g_malloc(out_data_bytes + index, 0);      if (out_data == 0)      {          return 0;      }      tiles = (struct rfx_tile *) (out_data + out_data_bytes + 256); -    rfxrects = (struct rfx_rect *) (tiles + 512); +    rfxrects = (struct rfx_rect *) (tiles + 4096);      count = enc->num_crects;      for (index = 0; index < count; index++) 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); | 
