summaryrefslogtreecommitdiffstats
path: root/libvo/sub.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvo/sub.c')
-rw-r--r--libvo/sub.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libvo/sub.c b/libvo/sub.c
index e4a3978113..c51dbd05cf 100644
--- a/libvo/sub.c
+++ b/libvo/sub.c
@@ -221,7 +221,9 @@ inline static void vo_update_nav (mp_osd_obj_t *obj, int dxs, int dys) {
len = obj->stride * (obj->bbox.y2 - obj->bbox.y1);
memset (obj->bitmap_buffer, OSD_NAV_BOX_ALPHA, len);
memset (obj->alpha_buffer, OSD_NAV_BOX_ALPHA, len);
- obj->flags |= OSDFLAG_BBOX | OSDFLAG_VISIBLE | OSDFLAG_CHANGED;
+ obj->flags |= OSDFLAG_BBOX | OSDFLAG_CHANGED;
+ if (obj->bbox.y2 > obj->bbox.y1 && obj->bbox.x2 > obj->bbox.x1)
+ obj->flags |= OSDFLAG_VISIBLE;
}
#endif
@@ -1003,7 +1005,9 @@ int vo_osd_check_range_update(int x1,int y1,int x2,int y2){
while(obj){
if(obj->flags&OSDFLAG_VISIBLE){
if( (obj->bbox.x1<=x2 && obj->bbox.x2>=x1) &&
- (obj->bbox.y1<=y2 && obj->bbox.y2>=y1) ) return 1;
+ (obj->bbox.y1<=y2 && obj->bbox.y2>=y1) &&
+ obj->bbox.y2 > obj->bbox.y1 && obj->bbox.x1 > obj->bbox.x2
+ ) return 1;
}
obj=obj->next;
}