summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-05-28 21:56:45 +0200
committerwm4 <wm4@nowhere>2015-05-28 21:56:45 +0200
commitc4757ad17cf13941c74007cfeb1bc5cedfd05569 (patch)
tree88c55a13927a9f9b7569c384b51169f314eb7653 /video
parent6f5a10542c276ad4fa87a2f449dc4173e10fc47d (diff)
downloadmpv-c4757ad17cf13941c74007cfeb1bc5cedfd05569.tar.bz2
mpv-c4757ad17cf13941c74007cfeb1bc5cedfd05569.tar.xz
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.
Diffstat (limited to 'video')
-rw-r--r--video/out/gl_video.c5
1 files changed, 4 insertions, 1 deletions
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;