summaryrefslogtreecommitdiffstats
path: root/sub/osd.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-05-09 17:54:33 +0200
committerwm4 <wm4@nowhere>2020-05-09 18:02:57 +0200
commitb3a9058c0db3a14aa0e5f50a34b93753f1eb9a49 (patch)
tree18613a2f38f344529dcf9321d5fb4031399c8f81 /sub/osd.c
parentb727600d1fc883cd24f2d54e9691bb0d3a895844 (diff)
downloadmpv-b3a9058c0db3a14aa0e5f50a34b93753f1eb9a49.tar.bz2
mpv-b3a9058c0db3a14aa0e5f50a34b93753f1eb9a49.tar.xz
osd: add change timestamp and screen size to struct sub_bitmap_list
Should be somewhat helpful. (All VOs are full of code trying to compensate for this, more or less, and this will allow simplifying some code later. Maybe.) The screen size is mostly for robustness checks.
Diffstat (limited to 'sub/osd.c')
-rw-r--r--sub/osd.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sub/osd.c b/sub/osd.c
index 86bd976803..15ad5d20d7 100644
--- a/sub/osd.c
+++ b/sub/osd.c
@@ -136,6 +136,7 @@ struct osd_state *osd_create(struct mpv_global *global)
.type = n,
.text = talloc_strdup(obj, ""),
.progbar_state = {.type = -1},
+ .vo_change_id = 1,
};
osd->objs[n] = obj;
}
@@ -293,6 +294,11 @@ static struct sub_bitmaps *render_object(struct osd_state *osd,
res = osd_object_get_bitmaps(osd, obj, format);
}
+ if (obj->vo_had_output != !!res) {
+ obj->vo_had_output = !!res;
+ obj->vo_change_id += 1;
+ }
+
if (res) {
obj->vo_change_id += res->change_id;
@@ -314,6 +320,9 @@ struct sub_bitmap_list *osd_render(struct osd_state *osd, struct mp_osd_res res,
pthread_mutex_lock(&osd->lock);
struct sub_bitmap_list *list = talloc_zero(NULL, struct sub_bitmap_list);
+ list->change_id = 1;
+ list->w = res.w;
+ list->h = res.h;
if (osd->force_video_pts != MP_NOPTS_VALUE)
video_pts = osd->force_video_pts;
@@ -352,6 +361,8 @@ struct sub_bitmap_list *osd_render(struct osd_state *osd, struct mp_osd_res res,
}
}
+ list->change_id += obj->vo_change_id;
+
talloc_free(imgs);
}