[sound-juicer] Handle GST_STATE_CHANGE_ASYNC in sj-play.c better (#567011)



commit 2d5deeb9bf9bf2eb9389b61de81ef2017cf8e0d0
Author: Matthew Martin <mtt martin gmail com>
Date:   Mon Oct 10 15:25:29 2011 +0100

    Handle GST_STATE_CHANGE_ASYNC in sj-play.c better (#567011)
    
    Signed-off-by: Ross Burton <ross linux intel com>

 libjuicer/sj-metadata-gvfs.c |    6 +++---
 src/sj-play.c                |    9 +++++----
 2 files changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/libjuicer/sj-metadata-gvfs.c b/libjuicer/sj-metadata-gvfs.c
index f9fb95a..0c05a80 100644
--- a/libjuicer/sj-metadata-gvfs.c
+++ b/libjuicer/sj-metadata-gvfs.c
@@ -63,11 +63,11 @@ device_to_cdda_uri (const char *device)
 {
   if (g_str_has_prefix (device, "/dev/") == FALSE)
     return NULL;
-#ifdef __sun    
+#ifdef __sun
   return g_strdup_printf ("cdda://%s", device + strlen ("/dev/rdsk/"));
-#else  
+#else
   return g_strdup_printf ("cdda://%s", device + strlen ("/dev/"));
-#endif   
+#endif
 }
 
 static GList *
diff --git a/src/sj-play.c b/src/sj-play.c
index b6006f6..bc48275 100644
--- a/src/sj-play.c
+++ b/src/sj-play.c
@@ -57,6 +57,11 @@ select_track (void)
   }
 
   ret = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+  if (ret == GST_STATE_CHANGE_ASYNC) {
+	while (ret == GST_STATE_CHANGE_ASYNC)
+		ret = gst_element_get_state (pipeline, NULL, NULL, GST_MSECOND);
+  }		
+
   if (ret == GST_STATE_CHANGE_FAILURE) {
     return FALSE;
   } else if (ret == GST_STATE_CHANGE_SUCCESS) {
@@ -69,11 +74,7 @@ select_track (void)
       /* seek failed - what now? */
       return FALSE;
     }
-  } else if (ret == GST_STATE_CHANGE_ASYNC) {
-    /* do nothing, seek will hopefully be done later?! */
-    current_track = seek_to_track;
   }
-
   return TRUE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]