summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/video.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/opengl/video.c')
-rw-r--r--video/out/opengl/video.c29
1 files changed, 9 insertions, 20 deletions
diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c
index f217bc7a70..cb8da859c8 100644
--- a/video/out/opengl/video.c
+++ b/video/out/opengl/video.c
@@ -494,6 +494,7 @@ static void init_image_desc(struct gl_video *p, int fmt);
static void gl_video_upload_image(struct gl_video *p, struct mp_image *mpi);
static void assign_options(struct gl_video_opts *dst, struct gl_video_opts *src);
static void get_scale_factors(struct gl_video *p, bool transpose_rot, double xy[2]);
+static void gl_video_setup_hooks(struct gl_video *p);
#define GLSL(x) gl_sc_add(p->sc, #x "\n");
#define GLSLF(...) gl_sc_addf(p->sc, __VA_ARGS__)
@@ -561,7 +562,7 @@ static inline int fbosurface_wrap(int id)
return id < 0 ? id + FBOSURFACES_MAX : id;
}
-static void recreate_osd(struct gl_video *p)
+static void reinit_osd(struct gl_video *p)
{
mpgl_osd_destroy(p->osd);
p->osd = NULL;
@@ -571,20 +572,6 @@ static void recreate_osd(struct gl_video *p)
}
}
-static void gl_video_setup_hooks(struct gl_video *p);
-static void reinit_rendering(struct gl_video *p)
-{
- MP_VERBOSE(p, "Reinit rendering.\n");
-
- debug_check_gl(p, "before scaler initialization");
-
- uninit_rendering(p);
-
- recreate_osd(p);
-
- gl_video_setup_hooks(p);
-}
-
static void uninit_rendering(struct gl_video *p)
{
GL *gl = p->gl;
@@ -626,8 +613,6 @@ void gl_video_update_profile(struct gl_video *p)
p->use_lut_3d = true;
check_gl_features(p);
-
- reinit_rendering(p);
}
static bool gl_video_get_lut3d(struct gl_video *p, enum mp_csp_prim prim,
@@ -858,7 +843,7 @@ static void init_video(struct gl_video *p)
debug_check_gl(p, "after video texture creation");
- reinit_rendering(p);
+ gl_video_setup_hooks(p);
}
static void unref_current_image(struct gl_video *p)
@@ -1770,6 +1755,8 @@ static void pass_hook_user_shaders(struct gl_video *p, char **shaders)
static void gl_video_setup_hooks(struct gl_video *p)
{
+ gl_video_reset_hooks(p);
+
if (p->opts.deband) {
pass_add_hooks(p, (struct tex_hook) {.hook = deband_hook,
.bind_tex = {"HOOKED"}},
@@ -2843,6 +2830,7 @@ void gl_video_resize(struct gl_video *p, int vp_w, int vp_h,
p->vp_h = vp_h;
gl_video_reset_surfaces(p);
+ gl_video_setup_hooks(p);
if (p->osd)
mpgl_osd_resize(p->osd, p->osd_rect, p->image_params.stereo_out);
@@ -3416,7 +3404,7 @@ void gl_video_set_osd_source(struct gl_video *p, struct osd_state *osd)
mpgl_osd_destroy(p->osd);
p->osd = NULL;
p->osd_state = osd;
- recreate_osd(p);
+ reinit_osd(p);
}
struct gl_video *gl_video_init(GL *gl, struct mp_log *log, struct mpv_global *g,
@@ -3441,7 +3429,6 @@ struct gl_video *gl_video_init(GL *gl, struct mp_log *log, struct mpv_global *g,
p->scaler[n] = (struct scaler){.index = n};
gl_video_set_debug(p, true);
init_gl(p);
- recreate_osd(p);
return p;
}
@@ -3522,6 +3509,8 @@ void gl_video_set_options(struct gl_video *p, struct gl_video_opts *opts)
check_gl_features(p);
uninit_rendering(p);
+ gl_video_setup_hooks(p);
+ reinit_osd(p);
if (p->opts.interpolation && !p->global->opts->video_sync && !p->dsi_warned) {
MP_WARN(p, "Interpolation now requires enabling display-sync mode.\n"