summaryrefslogtreecommitdiff
path: root/src/xine-engine/osd.c
diff options
context:
space:
mode:
authorJulian Scheel <julian@jusst.de>2008-12-28 19:47:18 +0000
committerJulian Scheel <julian@jusst.de>2008-12-28 19:47:18 +0000
commit5c9bcbcefee17fdd254bcecd3865cd1a5202134b (patch)
treee6266f62559ed145293f1ec320602c97234981b1 /src/xine-engine/osd.c
parentc233c9834cd68408c5975368268c560c85c095a7 (diff)
downloadxine-lib-5c9bcbcefee17fdd254bcecd3865cd1a5202134b.tar.gz
xine-lib-5c9bcbcefee17fdd254bcecd3865cd1a5202134b.tar.bz2
Fix argb overlay; allow partial buffer updates to improve performance.
Diffstat (limited to 'src/xine-engine/osd.c')
-rw-r--r--src/xine-engine/osd.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c
index 0bc1574ca..4b521e539 100644
--- a/src/xine-engine/osd.c
+++ b/src/xine-engine/osd.c
@@ -1542,13 +1542,18 @@ static void osd_draw_bitmap(osd_object_t *osd, uint8_t *bitmap,
}
}
-static void osd_set_argb_buffer(osd_object_t *osd, uint32_t *argb_buffer)
+static void osd_set_argb_buffer(osd_object_t *osd, uint32_t *argb_buffer,
+ int x, int y, int width, int height)
{
osd->argb_buffer = argb_buffer;
- osd->x2 = osd->width;
- osd->x1 = 0;
- osd->y2 = osd->height;
- osd->y1 = 0;
+ if(osd->x1 == 0 || x < osd->x1)
+ osd->x1 = x;
+ if(osd->x2 == 0 || (x + width) > osd->x2)
+ osd->x2 = x + width;
+ if(osd->y1 == 0 || y < osd->y1)
+ osd->y1 = y;
+ if(osd->y2 == 0 || (y + height) > osd->y2)
+ osd->y2 = y + height;
}
static uint32_t osd_get_capabilities (osd_object_t *osd) {