- wfd_sink_debug("got command %x", wfd_sink->manager_thread_cmd);
-
- if (wfd_sink->manager_thread_cmd & WFD_SINK_MANAGER_CMD_EXIT) {
- wfd_sink_debug("exiting manager thread");
- goto EXIT;
- }
-
- /* check command */
- link_auido_bin = wfd_sink->manager_thread_cmd & WFD_SINK_MANAGER_CMD_LINK_A_BIN;
- link_video_bin = wfd_sink->manager_thread_cmd & WFD_SINK_MANAGER_CMD_LINK_V_BIN;
- set_ready_audio_bin = wfd_sink->manager_thread_cmd & WFD_SINK_MANAGER_CMD_PREPARE_A_BIN;
- if (set_ready_audio_bin && !link_auido_bin && !wfd_sink->audio_bin_is_linked) {
- wfd_sink_error("audio bin is not linked... wait for command for linking audiobin");
- WFD_SINK_MANAGER_UNLOCK(wfd_sink);
- continue;
- }
- set_ready_video_bin = wfd_sink->manager_thread_cmd & WFD_SINK_MANAGER_CMD_PREPARE_V_BIN;
- if (set_ready_video_bin && !link_video_bin && !wfd_sink->video_bin_is_linked) {
- wfd_sink_error("video bin is not linked... wait for command for linking videobin.");
- WFD_SINK_MANAGER_UNLOCK(wfd_sink);
- continue;
- }
-
- /* link audio bin*/
- if (link_auido_bin) {
- wfd_sink_debug("try to link audiobin.");
- if (MM_ERROR_NONE != __mm_wfd_sink_link_audiobin(wfd_sink)) {
- wfd_sink_error("failed to link audiobin.....\n");
- goto EXIT;
- }
- }
-
- /* link video bin*/
- if (link_video_bin) {
- wfd_sink_debug("try to link videobin.");
- if (MM_ERROR_NONE != __mm_wfd_sink_link_videobin(wfd_sink)) {
- wfd_sink_error("failed to link videobin.....\n");
- goto EXIT;
- }
- }
-
- if (set_ready_audio_bin) {
- wfd_sink_debug("try to prepare audiobin.");
- if (MM_ERROR_NONE != __mm_wfd_sink_prepare_audiobin(wfd_sink)) {
- wfd_sink_error("failed to prepare audiobin.....\n");
- goto EXIT;
- }
- }
-
- if (set_ready_video_bin) {
- wfd_sink_debug("try to prepare videobin.");
- if (MM_ERROR_NONE != __mm_wfd_sink_prepare_videobin(wfd_sink)) {
- wfd_sink_error("failed to prepare videobin.....\n");
- goto EXIT;
+ for (walk = wfd_sink->manager_thread_cmd; walk; walk = g_list_next (walk)) {
+ cmd = GPOINTER_TO_INT(walk->data);
+
+ wfd_sink_debug("got command %d", cmd);
+
+ switch (cmd) {
+ case WFD_SINK_MANAGER_CMD_LINK_A_DECODEBIN:
+ wfd_sink_debug("try to link audio decodebin.");
+ if (MM_ERROR_NONE != __mm_wfd_sink_link_audio_decodebin(wfd_sink)) {
+ wfd_sink_error("failed to link audio decodebin.....\n");
+ goto EXIT;
+ }
+ break;
+ case WFD_SINK_MANAGER_CMD_LINK_V_DECODEBIN:
+ wfd_sink_debug("try to link video decodebin.");
+ if (MM_ERROR_NONE != __mm_wfd_sink_link_video_decodebin(wfd_sink)) {
+ wfd_sink_error("failed to link video decodebin.....\n");
+ goto EXIT;
+ }
+ break;
+ case WFD_SINK_MANAGER_CMD_PREPARE_A_PIPELINE:
+ wfd_sink_debug("try to prepare audio pipeline.");
+ if (MM_ERROR_NONE != __mm_wfd_sink_prepare_audio_pipeline(wfd_sink)) {
+ wfd_sink_error("failed to prepare audio pipeline.....\n");
+ goto EXIT;
+ }
+ break;
+ case WFD_SINK_MANAGER_CMD_PREPARE_V_PIPELINE:
+ wfd_sink_debug("try to prepare video pipeline.");
+ if (MM_ERROR_NONE != __mm_wfd_sink_prepare_video_pipeline(wfd_sink)) {
+ wfd_sink_error("failed to prepare video pipeline.....\n");
+ goto EXIT;
+ }
+ break;
+ case WFD_SINK_MANAGER_CMD_EXIT:
+ wfd_sink_debug("exiting manager thread");
+ goto EXIT;
+ break;
+ default:
+ break;