diff options
author | wm4 <wm4@nowhere> | 2015-05-28 21:56:45 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-05-28 21:56:45 +0200 |
commit | c4757ad17cf13941c74007cfeb1bc5cedfd05569 (patch) | |
tree | 88c55a13927a9f9b7569c384b51169f314eb7653 /video | |
parent | 6f5a10542c276ad4fa87a2f449dc4173e10fc47d (diff) | |
download | mpv-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.c | 5 |
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; |