Bug 90404 - aRts-engine: skips all tracks after current one ends
Summary: aRts-engine: skips all tracks after current one ends
Alias: None
Product: amarok
Classification: Applications
Component: general (show other bugs)
Version: 1.1
Platform: Debian testing Linux
: NOR normal with 60 votes (vote)
Target Milestone: ---
Assignee: Amarok Developers
: 91071 (view as bug list)
Depends on:
Reported: 2004-09-28 16:29 UTC by Andreas Steffen
Modified: 2006-06-11 12:32 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:

console output when bug happens (5.41 KB, text/plain)
2005-03-02 01:52 UTC, Michael Appleman

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Steffen 2004-09-28 16:29:49 UTC
Version:           1.1 (using KDE KDE 3.3.0)
Installed from:    Debian testing/unstable Packages
OS:                Linux

After the currently playing song ends, amaroK tries to switch to the next, gets a hiccup, and runs through all the tracks remaining in the playlist, attempting to play each for half a second, but failing. The behaviour looks the same as when there is no running arts daemon; however, arts is running well and double-clicking on the next track will cause it to play. Keyboard shortcuts for seeking do not work directly  after the bug has occurred, though. I have tried this with many different mp3, so corruption can be excluded. Also, this bug did not occur until I upgraded from amaroK 1.0.2 to 1.1. Shuffling does not affect this behaviour.
Comment 1 Andreas Steffen 2004-09-28 16:31:32 UTC
Whoopsie, should have tried this before: Activating Fade-over makes the problem disappear. Interesting.
Comment 2 Jason Voegele 2004-10-15 17:00:59 UTC
I can confirm similar behavior.  Once the first track in the playlist completes, amaroK skips 2-4 tracks and begins playing again from there.  If I check the 'crossfade' option, amaroK plays all tracks normally.

Amarok 1.1.1 installed from Debian unstable, using arts engine under KDE 3.3.0.
Comment 3 Christian Muehlhaeuser 2005-01-04 07:54:59 UTC
*** Bug 91071 has been marked as a duplicate of this bug. ***
Comment 4 Cesar Crusius 2005-01-21 19:38:54 UTC
I can verify that the same bug happens in 1.2-beta3
Comment 5 mrudolf 2005-01-25 12:57:56 UTC
It seems it is getting worse with new CVS versions. Now it happens almost all 
the time.
Comment 6 mrudolf 2005-01-28 10:45:59 UTC
mrudolf@kdewebdev.org,  wtorek, 25 stycznia 2005 12:57:
>------- Additional Comments From mrudolf kdewebdev org  2005-01-25 12:57
> ------- It seems it is getting worse with new CVS versions. Now it happens
> almost all the time.

Now similar problems can be observed in xine-engine as well. Here, the songs 
are not skipped but the sound often stops for a moment after first few 
seconds of the song.

BTW. Behavior with arts is similar - 1-2 seconds of a song are played before 
the song is skipped. Maybe the problem lies with Crossfading/Inserting gap? 
It looks like sometimes songs are truncated some 1-5 seconds before the end - 
isn't the cause the same?

Comment 7 mrudolf 2005-01-30 10:21:51 UTC
One more remark:  switching to next song using Next button (almost) never 
triggers the bug. Maybe there is some problem/bug in Crossfading/Interval 
Comment 8 Dane Elwell 2005-02-12 15:00:08 UTC
I can confirm this bug happens in 1.2-beta4, KDE 3.3.2.

At the end of the current track it will skip 3-4 tracks and start playing again. Queuing tracks doesn't work as it goes to the queued track, then skips 3-4 songs before playing again.

If I skip the tracks forward myself (by clicking next or Win+B) it works fine.

I'm not using crossfading and I'm using the arts engine.

This bug has gotten worse in every version. Bug present in 1.1, 1.2-beta2/3/4 on my system. Not present in 1.0*.

Gentoo Linux, gcc version 3.3.5  (Gentoo Linux 3.3.5-r1, ssp-3.3.2-3, pie-, artsd 1.3.2, kernel 2.6.7-gentoo-r14 (using built-in ALSA drivers, emu10k1, Soundblaster Live), KDE 3.3.2.

CFLAGS="-Os -march=pentium4 -fomit-frame-pointer -pipe -ftracer"
Comment 9 Mark Kretschmann 2005-02-14 19:17:06 UTC
Could someone please attach a full debug log of a session where this problem occured?
Comment 10 Michael Appleman 2005-03-02 01:52:55 UTC
Created attachment 9911 [details]
console output when bug happens

When I set the transition to normal, with a 0ms gap it doesn't seem to do this
anymore. The higher the gap I set the more songs it sskipped. At 2000ms it
skipped 20 songs, at 200ms it skipped 2-3. Its like it keeps 'clicking' next
every ~100ms untill the delay is up.

amarok 1.1.1 on Debian testing, arts engine.

Attached is the console output, with the delay at 200ms. The first song I hit
'play' to start. 1st song ended and skipped the 2nd and 3rd(2 skipped songs),
and the 4th one played normaly.
Comment 11 Dane Elwell 2005-03-05 11:50:16 UTC
Just to confirm on comment #10, setting the delay at 0ms on normal stops this problem from occuring on my machine as well.
Comment 12 Rinse De Vries 2005-03-06 00:10:25 UTC
Hi, I use amaroK 1.2 with aRts on SuSE 9.1, same problem over here.
When selecting 3000 msec pause between the tracks, amaroK only plas thos 3 sec of every song in the list :o)
When setting the pause to 200 msec the player does work correct though.

Comment 13 Seb Ruiz 2005-03-09 14:05:36 UTC
CVS commit by seb: 

FIX: Handle delay gap between tracks properly with aRts engine
BUG: 90404
CCMAIL: amarok-devel@lists.sf.net

  M +1 -0      ChangeLog   1.550
  M +7 -1      src/enginecontroller.cpp   1.127
  M +1 -0      src/enginecontroller.h   1.49

--- kdeextragear-1/amarok/ChangeLog  #1.549:1.550
@@ -14,4 +14,5 @@
+    * Handle delay gap between songs properly with aRts engine. (BR 90404)
     * Switched order of "Make playlist" and "Queue after current track" menus
       to avoid playlist destruction. (BR 96164 part 1)

--- kdeextragear-1/amarok/src/enginecontroller.cpp  #1.126:1.127
@@ -274,4 +274,5 @@ void EngineController::previous() //SLOT
 void EngineController::next( bool forceNext ) //SLOT
+    m_isTiming = false;
     emit orderNext(forceNext);
@@ -555,5 +556,10 @@ void EngineController::slotTrackEnded() 
         //FIXME not perfect
+        if ( !m_isTiming )
+        {
         QTimer::singleShot( AmarokConfig::trackDelayLength(), this, SLOT(next()) );
+            m_isTiming = true;
+        }
     else next(false);

--- kdeextragear-1/amarok/src/enginecontroller.h  #1.48:1.49
@@ -120,4 +120,5 @@ private:
     int             m_muteVolume;
     bool            m_xFadeThisTrack;
+    bool            m_isTiming;
     QTimer*         m_timer;