                        (:track-number desired) (:track-offset desired))]
 
     ;; find out what track we should be playing
-    (let [bits (best-media-url urls)]
-      (if-not (= (.-src actual) bits)
+    (let [bits (best-media-url urls)
+          actual-path (.getPath (goog.Uri. (.-src actual)))]
+      (when-not (= actual-path bits)
+        (println ["want " bits " got " (.-src actual)])
         (set! (.-src actual) bits)))
 
     (when (and (.-paused actual) (:playing desired) urls)

      (let [el (om/get-node owner)]
        ;; last arg "true" is cos audio events don't bubble
        ;; http://stackoverflow.com/questions/11291651/why-dont-audio-and-video-events-bubble
        (.addEventListener el "ended" player-next true)))
    om/IRender
    (render [this]
      (let [queue (om/observe owner (player-queue))

                              ">>|")
                  (dom/button #js { :onClick player-prev }
                              "|<<")
                  (dom/span #js {:className "elapsed-time time"}
                            (mmss (:track-offset (player-state))))
                  " / "
                  (dom/span #js {:className "track-time"}
                            (mmss (get (current-track) "length" 0)))
                  (dom/audio #js {:ref "player"}))))))


