diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c index e72fa1d0..ac5bbe98 100644 --- a/libxrdp/libxrdp.c +++ b/libxrdp/libxrdp.c @@ -107,6 +107,17 @@ libxrdp_process_data(struct xrdp_session *session) { case -1: xrdp_rdp_send_demand_active((struct xrdp_rdp *)session->rdp); + + // send Monitor Layout PDU for multimon + if (session->client_info->monitorCount > 0 && session->client_info->multimon == 1) + { + DEBUG(("sending monitor layout pdu")); + if (xrdp_rdp_send_monitorlayout((struct xrdp_rdp *)session->rdp) != 0) + { + g_writeln("xrdp_rdp_send_monitorlayout: error"); + } + } + session->up_and_running = 0; break; case 0: diff --git a/libxrdp/libxrdp.h b/libxrdp/libxrdp.h index 5bf627b5..70c8a124 100644 --- a/libxrdp/libxrdp.h +++ b/libxrdp/libxrdp.h @@ -353,6 +353,8 @@ xrdp_rdp_incoming(struct xrdp_rdp* self); int APP_CC xrdp_rdp_send_demand_active(struct xrdp_rdp* self); int APP_CC +xrdp_rdp_send_monitorlayout(struct xrdp_rdp* self); +int APP_CC xrdp_rdp_process_confirm_active(struct xrdp_rdp* self, struct stream* s); int APP_CC xrdp_rdp_process_data(struct xrdp_rdp* self, struct stream* s); diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c index 1712704e..48deb6e2 100644 --- a/libxrdp/xrdp_rdp.c +++ b/libxrdp/xrdp_rdp.c @@ -1572,7 +1572,7 @@ xrdp_rdp_send_fontmap(struct xrdp_rdp *self) return 0; } /*****************************************************************************/ -static int APP_CC +int APP_CC xrdp_rdp_send_monitorlayout(struct xrdp_rdp *self) { struct stream *s; @@ -1629,18 +1629,6 @@ xrdp_rdp_process_data_font(struct xrdp_rdp *self, struct stream *s) DEBUG(("sending fontmap")); xrdp_rdp_send_fontmap(self); - /* TODO: Monitor Layout PDU should send to client after demand active pdu - * MOVE THAT CALL - */ - if (self->client_info.monitorCount > 0 && self->client_info.multimon == 1) - { - DEBUG(("sending monitor layout pdu")); - if (xrdp_rdp_send_monitorlayout(self) != 0) - { - g_writeln("Problem with monitor layout packet!!!"); - } - } - self->session->up_and_running = 1; DEBUG(("up_and_running set")); xrdp_rdp_send_data_update_sync(self);