From cc05910f16a5ccd8e3dca26a89e9c3835cbdb645 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 4 Oct 2012 17:16:40 +0200 Subject: sub: cosmetics: move things around Move sub-bitmap definitions from dec_sub.h to sub.h. While it's a bit odd that OSD data structures are in a file named sub.h, it's definitely way too strange to have them in a file about subtitle decoding. (Maybe sub.h/.c and the sub/ directory should be split out and renamed "osd" at a later point.) Remove including ass_mp.h (and the libass headers) where possible. Remove typedefs for mp_eosd_res and sub_bitmaps structs. Store a mp_eosd_res struct in osd_state instead of just w/h. Note that sbtitles might be rendered using different sizes/margins when filters are involved (the subtitle renderer is not supposed to use the OSD res directly, and the "dim" member removed in the previous commit is something different). --- sub/sub.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'sub/sub.c') diff --git a/sub/sub.c b/sub/sub.c index 600ef6fae1..b2d9eb82fc 100644 --- a/sub/sub.c +++ b/sub/sub.c @@ -35,7 +35,7 @@ #include "mp_msg.h" #include "libvo/video_out.h" #include "sub.h" -#include "sub/ass_mp.h" +#include "dec_sub.h" #include "img_convert.h" #include "spudec.h" @@ -92,9 +92,11 @@ static struct osd_state *global_osd; static void osd_update_ext(struct osd_state *osd, struct mp_eosd_res res) { - if (osd->w != res.w || osd->h != res.h) { - osd->w = res.w; - osd->h = res.h; + struct mp_eosd_res old = osd->res; + if (old.w != res.w || old.h != res.h || old.ml != res.ml || old.mt != res.mt + || old.mr != res.mr || old.mb != res.mb) + { + osd->res = res; for (int n = 0; n < MAX_OSD_PARTS; n++) osd->objs[n]->force_redraw = true; } @@ -171,7 +173,7 @@ static bool render_object(struct osd_state *osd, struct osd_object *obj, if (obj->type == OSDTYPE_SPU) { *out_imgs = (struct sub_bitmaps) {0}; if (spu_visible(osd, obj)) - spudec_get_bitmap(vo_spudec, osd->w, osd->h, out_imgs); + spudec_get_bitmap(vo_spudec, osd->res.w, osd->res.h, out_imgs); // Normal change-detection (sub. dec. calls vo_osd_changed(OSDTYPE_SPU)) if (obj->force_redraw) { out_imgs->bitmap_id++; @@ -269,7 +271,7 @@ bool osd_draw_sub(struct osd_state *osd, struct sub_bitmaps *out_imgs, void draw_osd_with_eosd(struct vo *vo, struct osd_state *osd) { - mp_eosd_res_t dim = {0}; + struct mp_eosd_res dim = {0}; if (vo_control(vo, VOCTRL_GET_EOSD_RES, &dim) != VO_TRUE) return; -- cgit v1.2.3