Adds dot generation codes
[platform/core/multimedia/libmm-streamrecorder.git] / src / mm_streamrecorder_gstdispatch.c
index 9ff61cd..042d793 100644 (file)
@@ -302,6 +302,12 @@ gboolean _mmstreamrecorder_msg_callback(void *data)
                goto MSG_CALLBACK_DONE;
        }
 
+       _MMSTREAMRECORDER_LOCK((MMHandleType) hstreamrecorder);
+       if (hstreamrecorder->msg_data)
+               hstreamrecorder->msg_data = g_list_remove(hstreamrecorder->msg_data, item);
+
+       _MMSTREAMRECORDER_UNLOCK((MMHandleType) hstreamrecorder);
+
        /* _mmstreamrec_dbg_log("msg id:%x, msg_cb:%p, msg_data:%p, item:%p", item->id, hstreamrecorder->msg_cb, hstreamrecorder->msg_data, item); */
        _MMSTREAMRECORDER_LOCK_MESSAGE_CALLBACK(hstreamrecorder);
 
@@ -310,12 +316,6 @@ gboolean _mmstreamrecorder_msg_callback(void *data)
 
        _MMSTREAMRECORDER_UNLOCK_MESSAGE_CALLBACK(hstreamrecorder);
 
-       _MMSTREAMRECORDER_LOCK((MMHandleType) hstreamrecorder);
-       if (hstreamrecorder->msg_data)
-               hstreamrecorder->msg_data = g_list_remove(hstreamrecorder->msg_data, item);
-
-       _MMSTREAMRECORDER_UNLOCK((MMHandleType) hstreamrecorder);
-
 MSG_CALLBACK_DONE:
        /* release allocated memory */
        if (item->id == MM_MESSAGE_STREAMRECORDER_VIDEO_CAPTURED ||
@@ -812,6 +812,13 @@ gboolean _mmstreamrecorder_pipeline_cb_message(GstBus *bus, GstMessage *message,
                                                vnewstate = (GValue *) gst_structure_get_value(gst_message_get_structure(message), "new-state");
                                                newstate = (GstState) vnewstate->data[0].v_int;
                                                _mmstreamrec_dbg_log("GST_MESSAGE_STATE_CHANGED[%s]", gst_element_state_get_name(newstate));
+                                               if (newstate == 4) {
+                                                       if (hstreamrecorder->ini.generate_dot) {
+                                                               _mmstreamrec_dbg_log("GST_MESSAGE_STATE_PLAYING! DOT would be generated.");
+                                                               g_setenv("GST_DEBUG_DUMP_DOT_DIR", "/tmp/", FALSE);
+                                                               GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(sc->encode_element[_MMSTREAMRECORDER_ENCODE_MAIN_PIPE].gst), GST_DEBUG_GRAPH_SHOW_ALL, "streamrecorder_pipeline");
+                                                       }
+                                               }
                                        }
                                }
                        }