mcu_layer_geometry_t geometry;
int member_id;
int idx;
+ int tagged;
switch_image_t *img;
switch_image_t *cur_img;
} mcu_layer_t;
static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer)
{
+
int x = 0, y = 0;
int screen_w = 0, screen_h = 0;
+ layer->tagged = 0;
+
screen_w = canvas->img->d_w * layer->geometry.scale / SCALE_FACTOR;
screen_h = canvas->img->d_h * layer->geometry.scale / SCALE_FACTOR;
switch_mutex_lock(member->conference->canvas->mutex);
layer = &member->conference->canvas->layers[idx];
+ layer->tagged = 0;
if (layer->member_id && layer->member_id == member->id) {
member->video_layer_id = idx;
detach_video_layer(member);
}
+ reset_layer(member->conference->canvas, layer);
+
channel = switch_core_session_get_channel(member->session);
res_id = switch_channel_get_variable_dup(channel, "video_reservation_id", SWITCH_FALSE, -1);
for (i = 0; i < MCU_MAX_LAYERS; i++) {
mcu_layer_t *layer = &conference->canvas->layers[i];
layer->member_id = 0;
+ layer->tagged = 0;
}
conference->canvas->layers_used = 0;
if (layer) {
switch_img_free(&layer->cur_img);
layer->cur_img = img;
- scale_and_patch(conference, layer);
+ layer->tagged = 1;
}
}
if (remaining) goto top;
+
+ for (i = 0; i < conference->canvas->total_layers; i++) {
+ mcu_layer_t *layer = &conference->canvas->layers[i];
+
+ if (layer->member_id > -1 && layer->cur_img && layer->tagged) {
+ scale_and_patch(conference, layer);
+ layer->tagged = 0;
+ }
+ }
+
+
if (used) {
switch_time_t now = switch_micro_time_now();