Skip to content

Commit

Permalink
FS-7513: fix queued video playbacks
Browse files Browse the repository at this point in the history
  • Loading branch information
anthmFS authored and mjerris committed May 28, 2015
1 parent 8a0b951 commit 74cff6a
Showing 1 changed file with 26 additions and 16 deletions.
42 changes: 26 additions & 16 deletions src/mod/applications/mod_conference/mod_conference.c
Original file line number Diff line number Diff line change
Expand Up @@ -4655,6 +4655,24 @@ static switch_status_t video_thread_callback(switch_core_session_t *session, swi
return SWITCH_STATUS_SUCCESS;
}

static void fnode_check_video(conference_obj_t *conference, conference_file_node_t *fnode) {

if (switch_core_file_has_video(&fnode->fh)) {
int full_screen = 0;

if (fnode->fh.params) {
full_screen = switch_true(switch_event_get_header(fnode->fh.params, "full-screen"));
}

if (full_screen) {
conference->canvas->play_file = 1;
conference->playing_video_file = 1;
} else {
canvas_set_fnode_layer(conference, fnode, -1);
}
}
}

static void conference_command_handler(switch_live_array_t *la, const char *cmd, const char *sessid, cJSON *jla, void *user_data)
{
}
Expand Down Expand Up @@ -5105,6 +5123,11 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v
fnode = conference->fnode;
conference->fnode = conference->fnode->next;

if (conference->fnode) {
fnode_check_video(conference, conference->fnode);
}


pool = fnode->pool;
fnode = NULL;
switch_core_destroy_memory_pool(&pool);
Expand Down Expand Up @@ -7158,8 +7181,6 @@ static void canvas_set_fnode_layer(conference_obj_t *conference, conference_file
switch_mutex_unlock(conference->canvas->mutex);
}



/* Play a file in the conference room */
static switch_status_t conference_play_file(conference_obj_t *conference, char *file, uint32_t leadin, switch_channel_t *channel, uint8_t async)
{
Expand Down Expand Up @@ -7312,20 +7333,9 @@ static switch_status_t conference_play_file(conference_obj_t *conference, char *
fnode->pool = pool;
fnode->async = async;
fnode->file = switch_core_strdup(fnode->pool, file);

if (switch_core_file_has_video(&fnode->fh)) {
int full_screen = 0;

if (fnode->fh.params) {
full_screen = switch_true(switch_event_get_header(fnode->fh.params, "full-screen"));
}

if (full_screen) {
conference->canvas->play_file = 1;
conference->playing_video_file = 1;
} else {
canvas_set_fnode_layer(conference, fnode, -1);
}

if (!conference->fnode || (async && !conference->async_fnode)) {
fnode_check_video(conference, fnode);
}

/* Queue the node */
Expand Down

0 comments on commit 74cff6a

Please sign in to comment.