summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sub/osd.c2
-rw-r--r--sub/osd.h2
-rw-r--r--video/out/opengl/video.c5
3 files changed, 8 insertions, 1 deletions
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;