fix misreported audiolenght, playback timer
[maemo-recorder] / src / maemo-recorder-ui.c
index 6d95261..ab39db7 100644 (file)
@@ -302,8 +302,8 @@ static gboolean createPipeline(AppData *app, PipeLineType type)
                     break;
 
                 case FORMAT_WAV:
-                    gst_bin_add_many(GST_BIN(pipeline), src, parse, sink, NULL);
-                    if (!gst_element_link_many (src, parse, sink, NULL))
+                    gst_bin_add_many(GST_BIN(pipeline), src, filter, parse, sink, NULL);
+                    if (!gst_element_link_many (src, filter, parse, sink, NULL))
                     {
                         ULOG_ERR("gst_element_link failed for src, parse and sink!");
                     }
@@ -574,6 +574,7 @@ static gboolean cbBus(GstBus *bus,
                            GST_STATE_PAUSED);
                      destroyPipeline(app, PIPELINE_REC);
                      app->saved = FALSE;
+                     setAppState(data, APPSTATE_READY);
                      break;
 
                  case APPSTATE_READY:
@@ -653,7 +654,6 @@ static gboolean cbCheckPosition (AppData *data)
     {
         gdouble time = GST_TIME_TO_SECS(pos);
         guint mins = 0;
-        gdouble secs;
         gchar* tmp;
 
         ULOG_DEBUG("pos = %lld, time = %f", 
@@ -665,13 +665,13 @@ static gboolean cbCheckPosition (AppData *data)
            GTK_ADJUSTMENT(data->mainViewData.adjustment),
            time);
         gtk_adjustment_value_changed(GTK_ADJUSTMENT(data->mainViewData.adjustment));
-        if (secs >= 60.0)
+        if (time >= 60.0)
         {
-            mins = secs / 60;
-            secs -= mins * 60.0;
+            mins = time / 60;
+            time -= mins * 60.0;
         }
 
-        tmp = g_strdup_printf("%02u:%02d", mins, (int)secs);
+        tmp = g_strdup_printf("%02u:%02d", mins, (int)time);
 
         gtk_label_set_text(GTK_LABEL(data->mainViewData.ctime),
                  tmp);
@@ -1328,6 +1328,7 @@ static void cbStop(GtkWidget* widget, GdkEventButton *event, AppData *data)
             ULOG_INFO("%s() - Setting playPipeline state to PAUSED", G_STRFUNC);
             gst_element_set_state(GST_ELEMENT(data->playPipeline), 
                      GST_STATE_PAUSED);
+            setAppState(data, APPSTATE_READY);
             /* flow through */
         case APPSTATE_PAUSED:
         case APPSTATE_READY:
@@ -1347,9 +1348,8 @@ static void cbStop(GtkWidget* widget, GdkEventButton *event, AppData *data)
         case APPSTATE_RECORDING:
         {
             gdouble len = -1.0;
-            gst_element_set_state(GST_ELEMENT(data->recPipeline), 
-                 GST_STATE_PAUSED);
-            destroyPipeline(data, PIPELINE_REC);
+            gst_element_send_event(GST_ELEMENT(data->recPipeline),
+                 gst_event_new_eos());
             gtk_widget_set_sensitive(data->buttonSaveAs, TRUE);
             data->saved = FALSE;
 
@@ -1366,8 +1366,6 @@ static void cbStop(GtkWidget* widget, GdkEventButton *event, AppData *data)
             break;
     }
 
-    setAppState(data, APPSTATE_READY);
-
     ULOG_DEBUG("%s() - end", G_STRFUNC); 
 }