Summary: | Amarok playlist should select next song before updating current | ||
---|---|---|---|
Product: | [Applications] amarok | Reporter: | BK <bk+bugzilla> |
Component: | Playlist | Assignee: | Amarok Developers <amarok-bugs-dist> |
Status: | RESOLVED NOT A BUG | ||
Severity: | normal | CC: | langstr, nhn, ognyan_angelov, sven.burmeister, teo |
Priority: | NOR | ||
Version First Reported In: | 2.3.2 | ||
Target Milestone: | 2.4.0 | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
BK
2010-01-24 07:59:57 UTC
this does look like a bug, but I haven't tried reproducing it Confirmed bug still present in version 2.3. Still renders sorting of playlists on any automatically updated stat (e.g., score & last played) useless. Presumably does the same thing to manually updated stats, such as rating, title etc, but since that's the result of manual intervention, and not something that happens automatically, I figure that's OK. Can somebody please try to reproduce this? I think BUG 229926 and BUG 230191 are duplicates of this bug. I suspect that most of this can be fixed as follows: - Move that one finishedPlaying() call out of PlaylistActions: handle it all in one place (EngineController). My unmerged pile already contains a patch for that. - EngineController and PlaylistActions have a somewhat rigid bi-directional coupling: Enginecontroller has hard-coded calls to 'The::playlistActions()->requestNextTrack()', which does a hard-coded call back into 'The::engineController()->play()'. I think 'The::playlistActions()->requestNextTrack()' should do the same thing as the track navigators function with that name: return a value, not do a 'play()' call. So the EngineController code would go from: if ( xyz ) The::playlistActions()->requestNextTrack(); to something like: void EngineController::setNextTrack( Meta::TrackPtr ... ) { ... } ... if ( xyz ) setNextTrack( The::playlistActions()->requestNextTrack() ); - And finally the specific fix for these bugs: in EngineController::slotAboutToFinish(), change the code from: m_currentTrack->finishedPlaying(); The::playlistActions()->requestNextTrack(); to something like this: nextTrack = The::playlistActions()->requestNextTrack(); m_currentTrack->finishedPlaying(); setNextTrack( The::playlistActions()->requestNextTrack() ); -- However, EngineController really isn't code I know well. This is not something that I'm planning to tackle alone. *** Bug 229926 has been marked as a duplicate of this bug. *** *** Bug 230191 has been marked as a duplicate of this bug. *** Oops, copy-paste error, that last code should read: nextTrack = The::playlistActions()->requestNextTrack(); m_currentTrack->finishedPlaying(); setNextTrack( nextTrack ); (sorry if this is duplicated; bugs.kde.org is giving database timeout errors) Changing target. Setup: Amarok 2.3.2 KDE 4.4.5 Test Result: Same thing here. I have to refresh the playlist to show me the correct positions of the songs... Bump version, confirmed by tester. This is an automated message from the triager: Amarok 2.4.1 has been released on May 8 already. Could you please upgrade and test if you can still reproduce this bug? Without feedback within a month we will close this bug as resolved. Thank you for your understanding. Closing for lack of feedback. Feel free to reopen if you can still reproduce this with Amarok 2.4.2 beta 1 or later and provide the necessary feedback. |