diff options
Diffstat (limited to 'sub')
-rw-r--r-- | sub/osd.c | 11 | ||||
-rw-r--r-- | sub/osd.h | 8 |
2 files changed, 19 insertions, 0 deletions
@@ -206,6 +206,14 @@ void osd_set_external2(struct osd_state *osd, struct sub_bitmaps *imgs) pthread_mutex_unlock(&osd->lock); } +void osd_set_nav_highlight(struct osd_state *osd, void *priv) +{ + pthread_mutex_lock(&osd->lock); + osd->objs[OSDTYPE_NAV_HIGHLIGHT]->highlight_priv = priv; + osd_changed_unlocked(osd, OSDTYPE_NAV_HIGHLIGHT); + pthread_mutex_unlock(&osd->lock); +} + static void render_object(struct osd_state *osd, struct osd_object *obj, struct mp_osd_res res, double video_pts, const bool sub_formats[SUBBITMAP_COUNT], @@ -239,6 +247,9 @@ static void render_object(struct osd_state *osd, struct osd_object *obj, *out_imgs = *obj->external2; obj->external2->bitmap_id = obj->external2->bitmap_pos_id = 0; } + } else if (obj->type == OSDTYPE_NAV_HIGHLIGHT) { + if (obj->highlight_priv) + mp_nav_get_highlight(obj->highlight_priv, obj->vo_res, out_imgs); } else { osd_object_get_bitmaps(osd, obj, out_imgs); } @@ -84,6 +84,8 @@ enum mp_osdtype { OSDTYPE_SUB, OSDTYPE_SUB2, + OSDTYPE_NAV_HIGHLIGHT, // dvdnav fake highlights + OSDTYPE_PROGBAR, OSDTYPE_OSD, @@ -172,6 +174,8 @@ void osd_set_external(struct osd_state *osd, int res_x, int res_y, char *text); void osd_set_external2(struct osd_state *osd, struct sub_bitmaps *imgs); +void osd_set_nav_highlight(struct osd_state *osd, void *priv); + enum mp_osd_draw_flags { OSD_DRAW_SUB_FILTER = (1 << 0), OSD_DRAW_SUB_ONLY = (1 << 1), @@ -220,4 +224,8 @@ void osd_get_function_sym(char *buffer, size_t buffer_size, int osd_function); void osd_object_get_resolution(struct osd_state *osd, int obj, int *out_w, int *out_h); +// defined in player +void mp_nav_get_highlight(void *priv, struct mp_osd_res res, + struct sub_bitmaps *out_imgs); + #endif /* MPLAYER_SUB_H */ |