summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2013-01-17 20:55:22 +0000
committerphintuka <phintuka>2013-01-17 20:55:22 +0000
commitfe5255533ad855f7d733a7add8b1e90e35313c92 (patch)
treeacf9ef02d833d8c6ff43896e89e6d4b01b1d2026
parentacee7fb95dc913cb06ad4c8cb6c461c77c3bc18a (diff)
downloadxineliboutput-fe5255533ad855f7d733a7add8b1e90e35313c92.tar.gz
xineliboutput-fe5255533ad855f7d733a7add8b1e90e35313c92.tar.bz2
Changed how "dirty area" of ARGB buffer is set
-rw-r--r--xine/osd_manager.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/xine/osd_manager.c b/xine/osd_manager.c
index 4a31d3a8..a6f750a5 100644
--- a/xine/osd_manager.c
+++ b/xine/osd_manager.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: osd_manager.c,v 1.25 2013-01-15 20:45:19 phintuka Exp $
+ * $Id: osd_manager.c,v 1.26 2013-01-17 20:55:22 phintuka Exp $
*
*/
@@ -706,10 +706,23 @@ static int exec_osd_set_argb(osd_manager_impl_t *this, osd_command_t *cmd)
}
/* set dirty area. not used in opengl2 driver ... */
+#if 0
+ /* this can't work... There's no way to know if driver has
+ copied the dirty area to display. So dirty area can never be
+ shrinked, just expanded ... */
osd->argb_layer->x1 = cmd->x;
osd->argb_layer->x2 = cmd->x + cmd->w - 1;
osd->argb_layer->y1 = cmd->y;
osd->argb_layer->y2 = cmd->y + cmd->h - 1;
+#else
+ /* argb layer update area accumulation */
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#define MAX(a,b) ((a)>(b)?(a):(b))
+ osd->argb_layer->x1 = MIN( osd->argb_layer->x1, cmd->x );
+ osd->argb_layer->x2 = MAX( osd->argb_layer->x2, cmd->x + cmd->w );
+ osd->argb_layer->y1 = MIN( osd->argb_layer->y1, cmd->y );
+ osd->argb_layer->y2 = MAX( osd->argb_layer->y2, cmd->y + cmd->h );
+#endif
/* set buffer (ref-counted) */
set_argb_layer(&ov_overlay.argb_layer, osd->argb_layer);