summaryrefslogtreecommitdiffstats
path: root/sub/sub.c
diff options
context:
space:
mode:
authorharklu <harklu@wat>2011-08-08 10:07:17 +0200
committerUoti Urpala <uau@mplayer2.org>2011-08-09 03:28:58 +0300
commitd4b8d1486a69ee5bbd96a2758f56c1bbc6242bfb (patch)
tree943c14a454c9961f7bf7f9fbcdc1ac3da32e4917 /sub/sub.c
parentfada084499a33a4a1d7ef79f3ac72364a55e0c17 (diff)
downloadmpv-d4b8d1486a69ee5bbd96a2758f56c1bbc6242bfb.tar.bz2
mpv-d4b8d1486a69ee5bbd96a2758f56c1bbc6242bfb.tar.xz
core: allocate OSD text buffers dynamically
The OSD text buffers (mp_osd_msg_t.text and osd_state.text) used to be static arrays, with the buffer sizes spread all over the code as magic constants. Make the buffers dynamically allocated and remove the arbitrary length limits.
Diffstat (limited to 'sub/sub.c')
-rw-r--r--sub/sub.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sub/sub.c b/sub/sub.c
index 880793373c..efe648948c 100644
--- a/sub/sub.c
+++ b/sub/sub.c
@@ -1239,9 +1239,18 @@ struct osd_state *osd_create(void)
#ifdef CONFIG_FREETYPE
force_load_font = 1;
#endif
+ osd_set_text(osd, NULL);
return osd;
}
+void osd_set_text(struct osd_state *osd, const char *text) {
+ talloc_free(osd->osd_text);
+ //osd->text must never be NULL
+ if (!text)
+ text = "";
+ osd->osd_text = talloc_strdup(osd, text);
+}
+
int vo_osd_changed_flag=0;
void osd_remove_text(struct osd_state *osd, int dxs, int dys,