提交 049bcf95 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-7513: clear screen on unvmute

上级 1c5d2cc0
...@@ -921,10 +921,15 @@ static void reset_image(switch_image_t *img, switch_rgb_color_t *color) ...@@ -921,10 +921,15 @@ static void reset_image(switch_image_t *img, switch_rgb_color_t *color)
#define SCALE_FACTOR 360.0f #define SCALE_FACTOR 360.0f
static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer) /* clear layer and reset_layer called inside lock always */
static void clear_layer(mcu_canvas_t *canvas, mcu_layer_t *layer)
{ {
/* called inside lock always */ switch_img_fill(canvas->img, layer->x_pos, layer->y_pos, layer->screen_w, layer->screen_h, &canvas->bgcolor);
}
static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer)
{
layer->tagged = 0; layer->tagged = 0;
switch_img_free(&layer->banner_img); switch_img_free(&layer->banner_img);
...@@ -936,7 +941,7 @@ static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer) ...@@ -936,7 +941,7 @@ static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer)
layer->img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, layer->screen_h, 1); layer->img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, layer->screen_h, 1);
switch_assert(layer->img); switch_assert(layer->img);
switch_img_fill(canvas->img, layer->x_pos, layer->y_pos, layer->screen_w, layer->screen_h, &canvas->bgcolor); clear_layer(canvas, layer);
switch_img_free(&layer->cur_img); switch_img_free(&layer->cur_img);
} }
...@@ -7674,10 +7679,18 @@ static switch_status_t conf_api_sub_tvmute(conference_member_t *member, switch_s ...@@ -7674,10 +7679,18 @@ static switch_status_t conf_api_sub_tvmute(conference_member_t *member, switch_s
static switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_handle_t *stream, void *data) static switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
{ {
switch_event_t *event; switch_event_t *event;
mcu_layer_t *layer = NULL;
if (member == NULL) if (member == NULL)
return SWITCH_STATUS_GENERR; return SWITCH_STATUS_GENERR;
if (member->conference->canvas) {
switch_mutex_lock(member->conference->canvas->mutex);
layer = &member->conference->canvas->layers[member->video_layer_id];
clear_layer(member->conference->canvas, layer);
switch_mutex_unlock(member->conference->canvas->mutex);
}
switch_set_flag_locked(member, MFLAG_CAN_BE_SEEN); switch_set_flag_locked(member, MFLAG_CAN_BE_SEEN);
if (!(data) || !strstr((char *) data, "quiet")) { if (!(data) || !strstr((char *) data, "quiet")) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论