diff --git a/sub/osd.c b/sub/osd.c index 9517595ff3..0d594cd24d 100644 --- a/sub/osd.c +++ b/sub/osd.c @@ -104,7 +104,7 @@ const struct m_sub_options sub_style_conf = { .change_flags = UPDATE_OSD, }; -static bool osd_res_equals(struct mp_osd_res a, struct mp_osd_res b) +bool osd_res_equals(struct mp_osd_res a, struct mp_osd_res b) { return a.w == b.w && a.h == b.h && a.ml == b.ml && a.mt == b.mt && a.mr == b.mr && a.mb == b.mb diff --git a/sub/osd.h b/sub/osd.h index d139647718..114ab4a8f1 100644 --- a/sub/osd.h +++ b/sub/osd.h @@ -82,6 +82,8 @@ struct mp_osd_res { double display_par; }; +bool osd_res_equals(struct mp_osd_res a, struct mp_osd_res b); + // 0 <= sub_bitmaps.render_index < MAX_OSD_PARTS #define MAX_OSD_PARTS 5 diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index f95222081c..53f6b8a21c 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -3133,6 +3133,11 @@ void gl_video_resize(struct gl_video *p, struct mp_rect *src, struct mp_rect *dst, struct mp_osd_res *osd) { + if (mp_rect_equals(&p->src_rect, src) && + mp_rect_equals(&p->dst_rect, dst) && + osd_res_equals(p->osd_rect, *osd)) + return; + p->src_rect = *src; p->dst_rect = *dst; p->osd_rect = *osd;