From 22e802e80048defd401462e062afcb10093ac793 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Thu, 30 May 2013 11:24:16 +0200 Subject: playback,talk: Share audiobuffer via core_alloc_maximum(). This fixes the radioart crash that was the result of buffering.c working on a freed buffer at the same time as buflib (radioart uses buffering.c for the images). With this change the buffer is owned by buflib exclusively so this cannot happen. As a result, audio_get_buffer() doesn't exist anymore. Callers should call core_alloc_maximum() directly. This buffer needs to be protected as usual against movement if necessary (previously it was not protected at all which cased the radioart crash), To get most of it they can adjust the willingness of the talk engine to give its buffer away (at the expense of disabling voice interface) with the new talk_buffer_set_policy() function. Change-Id: I52123012208d04967876a304451d634e2bef3a33 --- apps/gui/skin_engine/skin_render.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'apps/gui') diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 28483cbc49..0d36711e91 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c @@ -280,13 +280,11 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, if (do_refresh && aa) { int handle = playback_current_aa_hid(data->playback_aa_slot); -#if 0 /* FIXME: FS#12797*/ if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) { struct dim dim = {aa->width, aa->height}; handle = radio_get_art_hid(&dim); } -#endif aa->draw_handle = handle; } break; -- cgit v1.2.3