diff options
Diffstat (limited to 'libxrdp/xrdp_caps.c')
| -rw-r--r-- | libxrdp/xrdp_caps.c | 80 | 
1 files changed, 40 insertions, 40 deletions
| diff --git a/libxrdp/xrdp_caps.c b/libxrdp/xrdp_caps.c index d9e39c71..d82023c8 100644 --- a/libxrdp/xrdp_caps.c +++ b/libxrdp/xrdp_caps.c @@ -23,6 +23,46 @@  /*****************************************************************************/  static int APP_CC +xrdp_caps_send_monitorlayout(struct xrdp_rdp *self) +{ +    struct stream *s; +    int i; + +    make_stream(s); +    init_stream(s, 8192); + +    if (xrdp_rdp_init_data(self, s) != 0) +    { +        free_stream(s); +        return 1; +    } + +    out_uint32_le(s, self->client_info.monitorCount); /* MonitorCount */ + +    /* TODO: validate for allowed monitors in terminal server (maybe by config?) */ +    for (i = 0; i < self->client_info.monitorCount; i++) +    { +        out_uint32_le(s, self->client_info.minfo[i].left); +        out_uint32_le(s, self->client_info.minfo[i].top); +        out_uint32_le(s, self->client_info.minfo[i].right); +        out_uint32_le(s, self->client_info.minfo[i].bottom); +        out_uint32_le(s, self->client_info.minfo[i].is_primary); +    } + +    s_mark_end(s); + +    if (xrdp_rdp_send_data(self, s, 0x37) != 0) +    { +        free_stream(s); +        return 1; +    } + +    free_stream(s); +    return 0; +} + +/*****************************************************************************/ +static int APP_CC  xrdp_caps_process_general(struct xrdp_rdp *self, struct stream *s,                            int len)  { @@ -867,43 +907,3 @@ xrdp_caps_send_demand_active(struct xrdp_rdp *self)      free_stream(s);      return 0;  } - -/*****************************************************************************/ -int APP_CC -xrdp_caps_send_monitorlayout(struct xrdp_rdp *self) -{ -    struct stream *s; -    int i; - -    make_stream(s); -    init_stream(s, 8192); - -    if (xrdp_rdp_init_data(self, s) != 0) -    { -        free_stream(s); -        return 1; -    } - -    out_uint32_le(s, self->client_info.monitorCount); /* MonitorCount */ - -    /* TODO: validate for allowed monitors in terminal server (maybe by config?) */ -    for (i = 0; i < self->client_info.monitorCount; i++) -    { -        out_uint32_le(s, self->client_info.minfo[i].left); -        out_uint32_le(s, self->client_info.minfo[i].top); -        out_uint32_le(s, self->client_info.minfo[i].right); -        out_uint32_le(s, self->client_info.minfo[i].bottom); -        out_uint32_le(s, self->client_info.minfo[i].is_primary); -    } - -    s_mark_end(s); - -    if (xrdp_rdp_send_data(self, s, 0x37) != 0) -    { -        free_stream(s); -        return 1; -    } - -    free_stream(s); -    return 0; -} | 
