1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-29 23:07:56 +00:00
mpv/sub
wm4 385febe276 sub: protect ASS_Renderer state
Each subtitle track gets its own decoder instance (sd_ass). But they use
a shared ASS_Renderer. This is done mainly because of fontconfig.
Initializing fontconfig is very slow when using it with memory fonts, so
there's a practical need to cache this memory font state, which is done
by not creating separate ASS_Renderers. This is very dirty and very
evil, but we probably can't get rid of it any time soon.

The shared ASS_Renderer was not properly synchronized. While the program
logic guarantees that only one sd_ass instance is visible at a time,
there are other interactions that require synchronization. In
particular, I suspect concurrent execution of mp_ass_configure_fonts()
and sd_ass.get_bitmaps cause issues in a newer libass development
branch.

So here's a shitty hack that hopefully fixes things, hopefully only
until libass becomes less dependent on fontconfig.
2015-07-06 21:55:37 +02:00
..
ass_mp.c Update license headers 2015-04-13 12:10:01 +02:00
ass_mp.h Update license headers 2015-04-13 12:10:01 +02:00
dec_sub.c sub: protect ASS_Renderer state 2015-07-06 21:55:37 +02:00
dec_sub.h sub: protect ASS_Renderer state 2015-07-06 21:55:37 +02:00
draw_bmp.c Update license headers 2015-04-13 12:10:01 +02:00
draw_bmp.h csputils: get rid of mp_csp_details 2015-01-06 16:50:58 +01:00
find_subfiles.c player: use an array for stream ID options and such 2015-05-22 21:00:24 +02:00
find_subfiles.h Update license headers 2015-04-13 12:10:01 +02:00
img_convert.c Update license headers 2015-04-13 12:10:01 +02:00
img_convert.h
osd_dummy.c Add some missing "const"s 2014-10-10 13:44:08 +02:00
osd_font.otf
osd_libass.c Update license headers 2015-04-13 12:10:01 +02:00
osd_state.h osd: simplify an aspect of change detection handling 2015-03-18 13:15:20 +01:00
osd.c Update license headers 2015-04-13 12:10:01 +02:00
osd.h Update license headers 2015-04-13 12:10:01 +02:00
sd_ass.c sub: protect ASS_Renderer state 2015-07-06 21:55:37 +02:00
sd_lavc_conv.c Move compat/ and bstr/ directory contents somewhere else 2014-08-29 12:31:52 +02:00
sd_lavc.c Update license headers 2015-04-13 12:10:01 +02:00
sd_lavf_srt.c Move compat/ and bstr/ directory contents somewhere else 2014-08-29 12:31:52 +02:00
sd_microdvd.c Update license headers 2015-04-13 12:10:01 +02:00
sd_movtext.c
sd_srt.c Update license headers 2015-04-13 12:10:01 +02:00
sd.h sub: protect ASS_Renderer state 2015-07-06 21:55:37 +02:00