summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xrdp/xrdp.ini3
-rw-r--r--xrdp/xrdp_login_wnd.c23
-rw-r--r--xrdp/xrdp_types.h1
3 files changed, 26 insertions, 1 deletions
diff --git a/xrdp/xrdp.ini b/xrdp/xrdp.ini
index 12387ce3..1f11f8c3 100644
--- a/xrdp/xrdp.ini
+++ b/xrdp/xrdp.ini
@@ -68,6 +68,9 @@ ls_height=430
# login screen background color in RGB format
ls_bg_color=dedede
+# optional background image filename (bmp format).
+#ls_background_image=
+
# logo
# full path to bmp-file or file in shared folder
ls_logo_filename=
diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index 8b14cb26..f8896c4e 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -576,6 +576,23 @@ xrdp_login_wnd_create(struct xrdp_wm *self)
if (regular)
{
+ // Load the background image.
+ // If no file is specified no default image will be loaded.
+ // We only load the image if bpp > 8
+ if (globals->ls_background_image[0] != 0 && self->screen->bpp > 8)
+ {
+ char fileName[256] ;
+ but = xrdp_bitmap_create(4, 4, self->screen->bpp, WND_TYPE_IMAGE, self);
+ g_snprintf(fileName, 255, "%s/%s", XRDP_SHARE_PATH, globals->ls_background_image);
+ log_message(LOG_LEVEL_DEBUG, "We try to load the following background file: %s", fileName);
+ xrdp_bitmap_load(but, fileName, self->palette);
+ but->parent = self->screen;
+ but->owner = self->screen;
+ but->left = self->screen->width - but->width;
+ but->top = self->screen->height - but->height;
+ list_add_item(self->screen->child_list, (long)but);
+ }
+
/* if logo image not specified, use default */
if (globals->ls_logo_filename[0] == 0)
g_snprintf(globals->ls_logo_filename, 255, "%s/xrdp_logo.bmp", XRDP_SHARE_PATH);
@@ -848,7 +865,11 @@ load_xrdp_config(struct xrdp_config *config, int bpp)
g_strncpy(globals->ls_logo_filename, v, 255);
globals->ls_logo_filename[255] = 0;
}
-
+ else if (g_strncmp(n, "ls_background_image", 255) == 0)
+ {
+ g_strncpy(globals->ls_background_image, v, 255);
+ globals->ls_background_image[255] = 0;
+ }
else if (g_strncmp(n, "ls_logo_x_pos", 64) == 0)
globals->ls_logo_x_pos = g_atoi(v);
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index 973b64e8..0e31dd59 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -580,6 +580,7 @@ struct xrdp_cfg_globals
int ls_height; /* window height */
int ls_bg_color; /* background color */
char ls_logo_filename[256]; /* logo filename */
+ char ls_background_image[256]; /* background image file name */
int ls_logo_x_pos; /* logo x co-ordinate */
int ls_logo_y_pos; /* logo y co-ordinate */
int ls_label_x_pos; /* x pos of labels */