summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Elkouby <streetwalkermc@gmail.com>2019-11-02 15:24:56 +0200
committerwm4 <1387750+wm4@users.noreply.github.com>2019-11-02 14:42:36 +0100
commitdfc060f0991255858d8286c3e77196b8762daf48 (patch)
treee500a462acc0bbcfeaca90eaaca7ea6c73f2134e
parent985a1cde5ae34792aeca2aaf9f6787c4ca58e3b8 (diff)
downloadmpv-dfc060f0991255858d8286c3e77196b8762daf48.tar.bz2
mpv-dfc060f0991255858d8286c3e77196b8762daf48.tar.xz
ass_mp: reset packer when allocation fails
Sometimes the atlas can get so large that it exceeds the maximum allowed size for an mp_image. Since the atlas will never shrink naturally, this breaks subtitles entirely until mpv is restarted. Reset the packer so that subtitles can rendered properly once the atlas fits again. This is a partial workaround for #6286.
-rw-r--r--sub/ass_mp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sub/ass_mp.c b/sub/ass_mp.c
index bb003a3edd..d5d9e3e7d6 100644
--- a/sub/ass_mp.c
+++ b/sub/ass_mp.c
@@ -230,8 +230,10 @@ static bool pack(struct mp_ass_packer *p, struct sub_bitmaps *res, int imgfmt)
{
talloc_free(p->cached_img);
p->cached_img = mp_image_alloc(imgfmt, p->packer->w, p->packer->h);
- if (!p->cached_img)
+ if (!p->cached_img) {
+ packer_reset(p->packer);
return false;
+ }
talloc_steal(p, p->cached_img);
}