From 28bd6e2e38d3e13f32ac43d08222a2d6953edabe Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 Dec 2015 13:07:50 -0600 Subject: [PATCH] FS-8615 #resolve [Crash when quickly changing layouts and setting reservation ids.] --- src/mod/applications/mod_conference/conference_api.c | 3 +-- src/mod/applications/mod_conference/conference_video.c | 9 +++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index dc9d683e7e..93ca89baa9 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -1583,10 +1583,9 @@ switch_status_t conference_api_sub_vid_res_id(conference_member_t *member, switc } else { member->video_reservation_id = switch_core_strdup(member->pool, text); stream->write_function(stream, "+OK reservation_id %s\n", text); + conference_video_detach_video_layer(member); } - conference_video_detach_video_layer(member); - return SWITCH_STATUS_SUCCESS; } diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 6a16604226..dfece45d97 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -615,14 +615,19 @@ void conference_video_detach_video_layer(conference_member_t *member) mcu_layer_t *layer = NULL; mcu_canvas_t *canvas = NULL; - if (member->canvas_id < 0 || member->video_layer_id < 0) return; - + if (member->canvas_id < 0) return; + if (!(canvas = conference_video_get_canvas_locked(member))) { return; } switch_mutex_lock(canvas->mutex); + if (member->video_layer_id < 0) { + switch_mutex_unlock(canvas->mutex); + return; + } + layer = &canvas->layers[member->video_layer_id]; if (layer->geometry.audio_position) {