From c4757ad17cf13941c74007cfeb1bc5cedfd05569 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 28 May 2015 21:56:45 +0200 Subject: vo_opengl: avoid broken shader if hwdec fails to provide textures If gl_hwdec_driver.map_image fails, all textures will be set to 0. This in turn makes pass_prepare_src_tex() skip generation of the texture uniforms, which leads to a shader compilation error, as e.g. texture0 is not defined but expected to exist and accessed. Set the textures to an invalid non-0 ID instead. OpenGL can deal with it. --- video/out/gl_video.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'video') diff --git a/video/out/gl_video.c b/video/out/gl_video.c index bb621df76e..19013c5272 100644 --- a/video/out/gl_video.c +++ b/video/out/gl_video.c @@ -667,7 +667,10 @@ static void pass_set_image_textures(struct gl_video *p, struct video_image *vimg / vimg->planes[1].tex_h; if (p->hwdec_active) { - p->hwdec->driver->map_image(p->hwdec, vimg->mpi, imgtex); + if (p->hwdec->driver->map_image(p->hwdec, vimg->mpi, imgtex) < 0) { + for (int n = 0; n < p->plane_count; n++) + imgtex[n] = -1; + } } else { for (int n = 0; n < p->plane_count; n++) imgtex[n] = vimg->planes[n].gl_texture; -- cgit v1.2.3