summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Reufer <thomas@reufer.ch>2015-10-15 07:29:39 +0200
committerThomas Reufer <thomas@reufer.ch>2015-10-15 07:32:00 +0200
commitd9265b7b66f9759f72cdeec037e10b09cd44a25e (patch)
tree8b3271f6fb65acf010b9a3bc4fd12803e0044e7f
parent1637c08b7f47e35b8046b90b5e10c74c9d576ae5 (diff)
downloadvdr-plugin-rpihddevice-d9265b7b66f9759f72cdeec037e10b09cd44a25e.tar.gz
vdr-plugin-rpihddevice-d9265b7b66f9759f72cdeec037e10b09cd44a25e.tar.bz2
don't crop OSD images to pixmap size to allow scaled drawing
-rw-r--r--HISTORY1
-rw-r--r--ovgosd.c18
2 files changed, 6 insertions, 13 deletions
diff --git a/HISTORY b/HISTORY
index 0c887ec..994e370 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7,6 +7,7 @@ VDR Plugin 'rpihddevice' Revision History
- added French translations (thanks to Cyril Jaquier)
- added plugin options to specify video and OSD layers
- fixed:
+ - don't crop OSD images to pixmap size to allow scaled drawing
- treat zero as valid PTS value
- perform save / restore region direct on pixmaps for accelerated OSDs
- wait for the OVG thread to be ready when creating an accelerated OSD
diff --git a/ovgosd.c b/ovgosd.c
index 97f8ab8..7d94a06 100644
--- a/ovgosd.c
+++ b/ovgosd.c
@@ -1578,14 +1578,8 @@ public:
virtual bool Execute(cEgl *egl)
{
- int w = min((m_x < 0 ? m_w + m_x : m_w), m_target->width);
- int h = min((m_y < 0 ? m_h + m_y : m_h), m_target->height);
-
- int x = m_x < 0 ? 0 : m_x;
- int y = m_y < 0 ? 0 : m_y;
-
- w = min(w, m_target->width - x);
- h = min(h, m_target->height - y);
+ int w = min(m_w, vgGeti(VG_MAX_IMAGE_WIDTH));
+ int h = min(m_h, vgGeti(VG_MAX_IMAGE_HEIGHT));
if (w <= 0 || h <= 0)
return true;
@@ -1600,7 +1594,7 @@ public:
vgLoadIdentity();
vgScale(1.0f, -1.0f);
- vgTranslate(x, y - m_target->height);
+ vgTranslate(m_x, m_y - m_target->height);
vgScale(m_scaleX, m_scaleY);
VGImage image = vgCreateImage(VG_sARGB_8888, w, h,
@@ -1612,11 +1606,9 @@ public:
return false;
}
- int offsetX = m_x < 0 ? -m_x : 0;
- int offsetY = m_y < 0 ? -m_y : 0;
+ vgImageSubData(image, m_argb, m_w * sizeof(tColor),
+ VG_sARGB_8888, 0, 0, w, h);
- vgImageSubData(image, m_argb + offsetY * m_w + offsetX,
- m_w * sizeof(tColor), VG_sARGB_8888, 0, 0, w, h);
vgDrawImage(image);
vgDestroyImage(image);