summaryrefslogtreecommitdiffstats
path: root/xrdp
diff options
context:
space:
mode:
Diffstat (limited to 'xrdp')
-rw-r--r--xrdp/Makefile.am7
-rw-r--r--xrdp/xrdp.ini6
-rw-r--r--xrdp/xrdp_bitmap.c31
-rw-r--r--xrdp/xrdp_encoder.c5
-rw-r--r--xrdp/xrdp_keyboard.ini3
-rw-r--r--xrdp/xrdp_mm.c19
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)
{