diff --git a/ChangeLog b/ChangeLog
index 112adee..fae7c6c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,10 @@ Key:
* Something changed / fixed
v.0.5dev (ongoing development)
+ * lcdexec: notification when called program finishes
+ * xosd driver: offset from top-left corner
+
+v.0.5.2 (unreleased)
* fix switching on/off the Load screen in lcdproc client using the menu
* refactor adv_bignum: support height > 4, loadable chars with offset
* ged rid of global variables buffer & tmp in lcdproc client
diff --git a/LCDd.conf b/LCDd.conf
index 85befed..0eea2ff 100644
--- a/LCDd.conf
+++ b/LCDd.conf
@@ -950,7 +950,10 @@ Speed=19200
# set display size [default: 20x4]
Size=20x4
-# font to use, in XLFD format, as given by "xfontsel"
+# Offset in pixels from the top-left corner of the monitor [default: 0x0]
+Offset=200x200
+
+# X font to use, in XLFD format, as given by "xfontsel"
Font=-*-terminus-*-r-*-*-*-320-*-*-*-*-*
# EOF
diff --git a/docs/lcdproc-user/drivers/xosd.docbook b/docs/lcdproc-user/drivers/xosd.docbook
index 8daf5be..93fc27a 100644
--- a/docs/lcdproc-user/drivers/xosd.docbook
+++ b/docs/lcdproc-user/drivers/xosd.docbook
@@ -34,6 +34,24 @@ on-screen display (OSD) used by most modern televisions and video-players.
+
+
+ Offset=
+
+ X-OFFSET
+ x
+ Y-OFFSET
+
+
+
+ Offset (in pixels) of the top-left corner of LCDproc's
+ xosd window from the top-left corner of the monitor.
+ If not given, it defaults to 0x0.
+
+
+
+Offset=200x200
+
Font=
@@ -52,6 +70,46 @@ on-screen display (OSD) used by most modern televisions and video-players.
+
+
diff --git a/server/drivers/xosdlib_drv.c b/server/drivers/xosdlib_drv.c
index 5929d9a..17716fc 100644
--- a/server/drivers/xosdlib_drv.c
+++ b/server/drivers/xosdlib_drv.c
@@ -57,7 +57,9 @@ MODULE_EXPORT char *symbol_prefix = "xosdlib_drv_";
MODULE_EXPORT int
xosdlib_drv_init (Driver *drvthis)
{
- char size[LCD_MAX_WIDTH+1] = DEFAULT_SIZE;
+ const char *size;
+ const char *offset;
+ int x, y;
int tmp;
PrivateData *p;
@@ -84,9 +86,7 @@ xosdlib_drv_init (Driver *drvthis)
int w;
int h;
- strncpy(size, drvthis->config_get_string(drvthis->name, "Size",
- 0, DEFAULT_SIZE), sizeof(size));
- size[sizeof(size) - 1] = '\0';
+ size = drvthis->config_get_string(drvthis->name, "Size", 0, DEFAULT_SIZE);
debug(RPT_INFO, "%s: Size (in config) is '%s'", __FUNCTION__, size);
if ((sscanf(size, "%dx%d", &w, &h) != 2) ||
(w <= 0) || (w > LCD_MAX_WIDTH) ||
@@ -110,6 +110,20 @@ xosdlib_drv_init (Driver *drvthis)
}
report(RPT_INFO, "%s: using size %dx%d", drvthis->name, p->width, p->height);
+ /* Which x/y offsets */
+ offset = drvthis->config_get_string(drvthis->name, "Offset", 0, DEFAULT_OFFSET);
+ debug(RPT_INFO, "%s: Offset (in config) is '%s'", __FUNCTION__, offset);
+ if (sscanf(offset, "%dx%d", &x, &y) != 2) {
+ report(RPT_WARNING, "%s: cannot read Offset: %s. using default %s",
+ drvthis->name, offset, DEFAULT_OFFSET);
+ sscanf(DEFAULT_OFFSET, "%dx%d", &x, &y);
+ }
+ p->xoffs= x;
+ p->yoffs = y;
+
+ report(RPT_INFO, "%s: using offset %dx%d", drvthis->name, p->xoffs, p->yoffs);
+
+
/* Which backlight brightness */
tmp = drvthis->config_get_int(drvthis->name, "Brightness", 0, DEFAULT_BRIGHTNESS);
debug(RPT_INFO, "%s: Brightness (in config) is '%d'", __FUNCTION__, tmp);
@@ -144,10 +158,20 @@ xosdlib_drv_init (Driver *drvthis)
}
/* set font */
- if (xosd_set_font(p->osd, p->font) == -1) {
+ if (xosd_set_font(p->osd, p->font) != 0) {
report(RPT_ERR, "%s: xosd_set_font() failed", drvthis->name);
return -1;
- }
+ }
+
+ /* set x/y offsets */
+ if (xosd_set_horizontal_offset(p->osd, p->xoffs) != 0) {
+ report(RPT_ERR, "%s: xosd_set_horizontal_offset() failed", drvthis->name);
+ return -1;
+ }
+ if (xosd_set_vertical_offset(p->osd, p->yoffs) != 0) {
+ report(RPT_ERR, "%s: xosd_set_vertical_offset() failed", drvthis->name);
+ return -1;
+ }
/* make sure the frame buffer is there... */
p->framebuf = (unsigned char *) malloc(p->width * p->height);
diff --git a/server/drivers/xosdlib_drv.h b/server/drivers/xosdlib_drv.h
index 530cdfd..2a55a51 100644
--- a/server/drivers/xosdlib_drv.h
+++ b/server/drivers/xosdlib_drv.h
@@ -5,6 +5,7 @@
#define DEFAULT_FONT "fixed"
#define DEFAULT_SIZE "20x4"
+#define DEFAULT_OFFSET "0x0"
#define DEFAULT_CONTRAST 500
#define DEFAULT_BRIGHTNESS 1000
#define DEFAULT_OFFBRIGHTNESS 500