diff options
Diffstat (limited to 'xrdp')
| -rw-r--r-- | xrdp/Makefile.am | 7 | ||||
| -rw-r--r-- | xrdp/xrdp.ini | 6 | ||||
| -rw-r--r-- | xrdp/xrdp_bitmap.c | 31 | ||||
| -rw-r--r-- | xrdp/xrdp_encoder.c | 5 | ||||
| -rw-r--r-- | xrdp/xrdp_keyboard.ini | 3 | ||||
| -rw-r--r-- | xrdp/xrdp_mm.c | 19 |
6 files changed, 42 insertions, 29 deletions
diff --git a/xrdp/Makefile.am b/xrdp/Makefile.am index 400a4285..df0b1558 100644 --- a/xrdp/Makefile.am +++ b/xrdp/Makefile.am @@ -1,3 +1,8 @@ +EXTRA_DIST = \ + czech.txt \ + rdp-scan-codes.txt \ + xrdpwin.c + AM_CPPFLAGS = \ -DXRDP_CFG_PATH=\"${sysconfdir}/xrdp\" \ -DXRDP_SBIN_PATH=\"${sbindir}\" \ @@ -19,7 +24,7 @@ endif if XRDP_RFXCODEC AM_CPPFLAGS += -DXRDP_RFXCODEC AM_CPPFLAGS += -I$(top_srcdir)/librfxcodec/include -XRDP_EXTRA_LIBS += $(top_srcdir)/librfxcodec/src/.libs/librfxencode.a +XRDP_EXTRA_LIBS += $(top_builddir)/librfxcodec/src/.libs/librfxencode.a endif if XRDP_PIXMAN diff --git a/xrdp/xrdp.ini b/xrdp/xrdp.ini index 1da90cca..242641ff 100644 --- a/xrdp/xrdp.ini +++ b/xrdp/xrdp.ini @@ -31,8 +31,10 @@ key_file= #tls_ciphers=HIGH ; Section name to use for automatic login if the client sends username -; and password -autorun=X11rdp +; and password. If empty, the domain name sent by the client is used. +; If empty and no domain name is given, the first suitable section in +; this file will be used. +autorun= allow_channels=true allow_multimon=true diff --git a/xrdp/xrdp_bitmap.c b/xrdp/xrdp_bitmap.c index 9ffc6284..053be88b 100644 --- a/xrdp/xrdp_bitmap.c +++ b/xrdp/xrdp_bitmap.c @@ -149,9 +149,9 @@ xrdp_bitmap_create_with_data(int width, int height, struct xrdp_wm *wm) { struct xrdp_bitmap *self = (struct xrdp_bitmap *)NULL; + int Bpp; #if defined(NEED_ALIGN) tintptr data_as_int; - int Bpp; #endif self = (struct xrdp_bitmap *)g_malloc(sizeof(struct xrdp_bitmap), 1); @@ -160,6 +160,22 @@ xrdp_bitmap_create_with_data(int width, int height, self->height = height; self->bpp = bpp; self->wm = wm; + + Bpp = 4; + switch (bpp) + { + case 8: + Bpp = 1; + break; + case 15: + Bpp = 2; + break; + case 16: + Bpp = 2; + break; + } + self->line_size = width * Bpp; + #if defined(NEED_ALIGN) data_as_int = (tintptr) data; if (((bpp >= 24) && (data_as_int & 3)) || @@ -167,19 +183,6 @@ xrdp_bitmap_create_with_data(int width, int height, { /* got to copy data here, it's not aligned other calls in this file assume alignment */ - Bpp = 4; - switch (bpp) - { - case 8: - Bpp = 1; - break; - case 15: - Bpp = 2; - break; - case 16: - Bpp = 2; - break; - } self->data = (char *)g_malloc(width * height * Bpp, 0); g_memcpy(self->data, data, width * height * Bpp); return self; diff --git a/xrdp/xrdp_encoder.c b/xrdp/xrdp_encoder.c index 5c9832ee..0af0b85e 100644 --- a/xrdp/xrdp_encoder.c +++ b/xrdp/xrdp_encoder.c @@ -60,11 +60,6 @@ xrdp_encoder_create(struct xrdp_mm *mm) client_info = mm->wm->client_info; - if (client_info->client_os_major != OSMAJORTYPE_UNIX) - { - /* temp workaround to avoid black screen in non-supported clients */ - return 0; - } if (client_info->mcs_connection_type != 6) /* LAN */ { return 0; diff --git a/xrdp/xrdp_keyboard.ini b/xrdp/xrdp_keyboard.ini index 914ca974..3ce7644a 100644 --- a/xrdp/xrdp_keyboard.ini +++ b/xrdp/xrdp_keyboard.ini @@ -62,6 +62,7 @@ rdp_layout_de=0x00000407 rdp_layout_fr=0x0000040C rdp_layout_it=0x00000410 rdp_layout_jp=0x00000411 +rdp_layout_kr=0x00000412 rdp_layout_ru=0x00000419 rdp_layout_se=0x0000041D rdp_layout_ch=0x00000807 @@ -76,6 +77,7 @@ rdp_layout_de=de rdp_layout_fr=fr rdp_layout_it=it rdp_layout_jp=jp +rdp_layout_kr=kr rdp_layout_ru=ru rdp_layout_se=se rdp_layout_ch=ch @@ -103,6 +105,7 @@ rdp_layout_us=us rdp_layout_de=de rdp_layout_fr=fr rdp_layout_jp=jp +rdp_layout_kr=kr rdp_layout_it=it rdp_layout_ru=ru rdp_layout_se=se diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c index 715a18fc..bb6bc5d8 100644 --- a/xrdp/xrdp_mm.c +++ b/xrdp/xrdp_mm.c @@ -229,14 +229,19 @@ xrdp_mm_send_login(struct xrdp_mm *self) out_uint16_be(s, self->wm->screen->width); out_uint16_be(s, self->wm->screen->height); - if (xserverbpp > 0) + /* select and send X server bpp */ + if (xserverbpp == 0) { - out_uint16_be(s, xserverbpp); - } - else - { - out_uint16_be(s, self->wm->screen->bpp); + if (self->code == 20) + { + xserverbpp = 24; /* xorgxrdp is always at 24 bpp */ + } + else + { + xserverbpp = self->wm->screen->bpp; /* use client's bpp */ + } } + out_uint16_be(s, xserverbpp); /* send domain */ if(self->wm->client_info->domain[0]!='_') @@ -2291,7 +2296,7 @@ xrdp_mm_frame_ack(struct xrdp_mm *self, int frame_id) { int ex; - LLOGLN(0, ("xrdp_mm_frame_ack:")); + LLOGLN(10, ("xrdp_mm_frame_ack:")); self->encoder->frame_id_client = frame_id; if (self->wm->client_info->use_frame_acks == 0) { |
