Commit Graph

226 Commits

Author SHA1 Message Date
Simeon Bird 09e839353e Speed up playlist restoring by moving sqlite query off main thread
The playlist fetching uses QtConcurrent to make the playlist on a
different thread (possibly concurrently for each item).
However, profiling reveals that the slow operation is fetching
the rows from the SQLite database, making this redundant.

Instead move the whole playlist loading, including the database access,
into a single function, and call that function in a different thread via
QtConcurrent::run.

This has the side effect of moving all the concurrent stuff from
PlaylistBackend into the callers.

kstartperf measures:

Before: 7.5s cold
        3.6 s warm

After: ~4.0 s cold
       3.5 s warm
2014-12-09 12:47:37 -05:00
Juan Luis Boya García 292fff7e3a Fix #4420: Previous track in dynamic random mix 2014-11-29 19:34:31 +01:00
Arnaud Bienner 7ac9e4c6d1 Fix a bug in InsertItems functions that makes Cdda tracks to not be saved/restored correctly when restarting Clementine 2014-10-26 17:08:12 +01:00
Arnaud Bienner dc0d3436c8 Finish CD integration update to Gstreamer 1.0
Move everything related to CDDA to a seperate class, so we can more easily reuse it in SongLoader
2014-10-26 03:32:37 +01:00
Arnaud Bienner c35e573637 Missing things from previous commit 2014-10-07 00:29:46 +02:00
Arnaud Bienner f6e6d3b937 Revert "Finished the changes to the quick change menu. Everything should work."
This reverts commit a468085c3a.

Conflicts:
	src/playlist/playlistcontainer.cpp
	src/playlist/playlistcontainer.h
	src/ui/behavioursettingspage.cpp
2014-10-07 00:29:46 +02:00
ppkt 43a6740b48 Remove unavailable items from playlist 2014-08-24 10:44:27 +02:00
Gavin Howard f41bebbeb2 Ran 'make format' on my patch. 2014-08-18 09:56:01 -06:00
Gavin Howard a468085c3a Finished the changes to the quick change menu. Everything should work. 2014-08-15 18:52:01 -06:00
Helder Martins e4054fad5e Clarified comment to be more accurate of what it does 2014-08-03 10:48:01 +01:00
Helder Martins 56fc242520 complemented condition inside reshuffleindices function to take into account the selected track 2014-07-27 23:07:50 +01:00
Helder Martins 0c2d4e9f1c Fixed a minor issue where the playlist wasnt updating the queue order, when a track was dequeued using the ctrl-d shortcut 2014-07-23 00:15:06 +01:00
David Sansome c8625deffb Update persistent model indexes properly when sorting the playlist. Fixes #4358 2014-06-07 13:31:25 +10:00
David Sansome 53be1e1f65 Revert "Use guaranteed random number generator." Fixes #4400
This reverts commit 9f6899ac82.
2014-06-07 12:12:08 +10:00
Arnaud Bienner 134b617ec4 Emit dataChanged when changing skip track state.
Otherwise, when changing this for the currently playing track, the "strike out" change wasn't visible.
2014-05-25 18:44:54 +02:00
John Maguire 9f6899ac82 Use guaranteed random number generator.
Fixes #4352
2014-05-20 17:03:04 +02:00
John Maguire 24a4cff807 Merge pull request #4288 from sundrythoughts/rating-optimization
Increase performance of mass rating changes.
2014-05-20 12:42:39 +01:00
Mark Furneaux d0ca2cef6c Comment remove 2014-04-25 23:02:42 -04:00
Mark Furneaux ce8b7303c0 Formatting 2014-04-25 22:50:52 -04:00
Mark Furneaux c890af6306 More elegant solution to last commit
set_current_row now takes optional parameter "is_stopping" for when auto stop
is enabled.
2014-04-25 22:45:25 -04:00
Joseph Freeman fe4a80b2d5 Removed commented-out code and ran make format. 2014-04-25 19:41:04 -04:00
Joseph Freeman 156728390d Increase performance of mass rating changes. 2014-04-25 19:37:46 -04:00
Mark Furneaux 416d06bb06 Fix stop after track
Stop after track would cause now playing widget, OSD, and last.fm
scrobbler to change to next track after stopping. This patch prevents
set_current_row() from firing an event which triggers the track change.
2014-04-25 14:30:31 -04:00
John Maguire 3323c2d094 Convert all instances of foreach() to a C++11 for
find ext src -name '*.cpp' -exec \
    sed -i -e 's/foreach(\([^,]\+\),/for (\1 :/' {} \;
2014-02-10 14:43:32 +01:00
Dave Sansome 89369029ab Merge branch 'skip_track' of https://github.com/asiviero/Clementine into asiviero-skip_track
Conflicts:
	src/playlist/playlist.cpp
	src/playlist/playlistitem.h
	src/ui/mainwindow.cpp
2014-02-08 13:19:23 +11:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
John Maguire 71893e4847 Use nullptr instead of NULL everywhere. 2014-02-06 17:29:59 +01:00
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01:00
Mladen Pejaković 657bbcf00f Fix for pull request #4170 2014-02-04 15:04:19 +01:00
asiviero c0132b2ed3 Renaming skip properties, strike out track when it is to be skipped 2014-01-27 00:26:51 -02:00
David Sansome f816a47ad9 Make SongLoader add URLs as raw streams if there exists a URL handler
for that scheme.  This fixes a bug where sky:// URLs couldn't be added
with MPRIS.
2014-01-24 23:54:38 +11:00
asiviero c817431593 Greying out song and added verification to next on album mode 2014-01-20 22:35:01 -02:00
asiviero 5c21768760 Minor fixes and label adjustments 2014-01-20 22:10:23 -02:00
asiviero 1c0a221563 Added skip track feature 2014-01-20 22:10:16 -02:00
asiviero 048c2d9b9c Modified queue to store tracks to skip 2014-01-20 22:10:08 -02:00
Arnaud Bienner 3715e5f15e Revert revision 316b5d7db4 and revision e7a5c482fe (aka re-enable inline editing) 2013-11-22 20:59:31 +01:00
Arnaud Bienner 316b5d7db4 (Add a comment to explain why I removed this) 2013-11-17 19:42:06 +01:00
Arnaud Bienner e7a5c482fe Don't allow tag inline editing anymore.
This was a pretty good idea, but now we have a dedicated tag dialog editor, I'm not sure it is very useful. It was probably faster to edit tags this way, but I'm afraid lot of people may inadvertently modify their tags because of this. Still allow inline editing of score and comment, because they sound less critical to me.
Fixes issue 3251.
2013-11-17 19:00:44 +01:00
Arnaud Bienner 5e6821dead Add a 'favorite' widget to playlist tab, and keep in playlistlist container only favorite playlists, instead of all playlists. 2013-05-11 23:18:03 +02:00
David Sansome dac22dbd72 Explicitly cast scoped_ptrs to bool. Fixes issue 3570. 2013-04-15 21:41:54 +10:00
Uwe Klotz a6d3b48231 Extend tag support: performer, grouping
The transaction handling while upgrading the database schema had to be revised.
Furthermore some QSqlQuery statements needed to be finished properly.

Fixes issue 2556
2013-03-10 18:16:03 +11:00
John Maguire 8bbcd6b760 Use a better check for support for std::unordered_map. 2012-11-22 12:24:38 +01:00
David Sansome 0beab5c9a8 Temporarily use tr1/unordered_map on OS X 2012-11-22 19:38:17 +11:00
Arnaud Bienner af8e8c753e Use a better data structure to track uniques songs when removing duplicate. 2012-11-22 02:06:29 +01:00
Przemysław Dąbek a241774fb5 more consistent whitespaces 2012-11-21 18:46:42 +01:00
Przemysław Dąbek 92637cb7d1 improved removing duplicated songs 2012-11-21 16:06:19 +01:00
Anand 1aec4a4c7f When pressing the Previous button in Repeat Track mode, go to the previous track instead of repeating the current one. Fixes issue 2897 2012-08-26 13:11:28 +01:00
David Sansome 2035c3e7f5 Fix a bug where dragging songs to the bottom of the playlist would actually move them back to the top. 2012-07-15 12:51:19 +01:00
David Sansome de782c980d Ignore custom playlist row colours for the currently playing item - they might clash with the glowing current track indicator. Fixes issue 3042. 2012-07-15 12:44:53 +01:00
John Maguire 0558c7bf69 Fix build for Qt < 4.7 2012-07-09 11:34:47 +02:00
cornicis dcab14e5fe added removeDuplicateSongs() function to playlist.cpp and added this action to the playlist-menu
Fixes issue #21
2012-07-06 11:46:04 +02:00
David Sansome b9bb449651 Use the first visible column when dragging+dropping within the playlist, instead of column 0 which may be hidden
Fixes issue 2879
2012-06-15 10:18:38 +01:00
Robbert Krebbers 3b186c698d Allow playlist sorting and shuffling to be undone. Fixes issue 654.
Also:
  - When sorting a dynamic playlist, only songs after the currently playing track are sorted.
  - When moving songs in a dynamic playlist, recolor them if moved across the current track.
  - When playing a future song in a dynamic playlist, move it to the current location.  Fixes issue 1140
2012-06-09 14:33:51 +01:00
David Sansome 8c33cb91e0 Don't show any tooltips for the Mood column 2012-05-27 22:01:37 +01:00
David Sansome a2feaa61e7 Create and render moodbars in background threads to avoid blocking the UI 2012-05-27 18:53:57 +01:00
David Sansome 19c3e1d5ec Add a Mood column to the playlist 2012-05-27 16:46:16 +01:00
David Flatz 1e9a7e2119 Fix segfault when drag&dropping playlist entries from different instance
Fixes issue 2896
2012-04-25 16:38:59 +01:00
David Sansome 9be641ee87 The external tagreader mostly works now:
* Make TagReaderClient a singleton until it's easier to pass dependencies around
 * Add a WaitForSignal() that uses a local event loop to wait for a signal to be emitted
 * Add a WaitForFinished() to _MessageReplyBase that blocks using a semaphore
 * Add blocking versions of all TagReaderClient methods
 * Use the TagReaderClient everywhere that Song::InitFromFile and friends were used before
2012-01-07 00:26:07 +00:00
John Maguire bcf9475f2b Add a source column to the playlist view with appropriate icons. 2012-01-04 11:56:09 +00:00
David Sansome 0aba1ce77d Fix a crash when creating a new smart playlist 2011-11-29 13:01:54 +00:00
Robbert Krebbers 7c1cedeac8 Fix a bug where moving songs down in the playlist could not be undone properly. Fixes issue 1908 2011-11-29 11:39:47 +00:00
David Sansome b873209d39 Remove the <xiphcomment.h> include from song.h so that windows headers don't infect everything else. Also move other bits of song.h into song.cpp, and reduce the number of includes in song.h. 2011-11-28 13:56:55 +00:00
Angus Gratton 360aaabd0d Add playlist album artist for use in playlist grid view (Issue 509) 2011-11-28 11:04:38 +00:00
David Sansome da532ef3ca Make manual track changes ignore the "repeat track" setting. Fixes issue 2426 2011-11-27 21:02:37 +00:00
David Sansome b8ee548eb4 Rename the existing "Shuffle by album" mode to "Shuffle tracks in this album", and add a new "Shuffle albums" mode that plays all the tracks in each album sequentially, but then jumps to a different random album afterwards.
Fixes issue 1152
2011-11-27 15:01:10 +00:00
Arnaud Bienner ceab3bd6f0 Add Grooveshark songs as internet items, when adding them from global search, so user can use all GS custom actions 2011-11-24 00:30:11 +01:00
Arnaud Bienner 867a072579 Improve UpdateItems complexity: still quadratic in wort-case, twice better in average, but linear in best case, which is very likely to happen in real usecases 2011-11-19 16:01:58 +01:00
Arnaud Bienner fdad2bd706 Make the async load of folders thread-safe 2011-11-18 21:55:54 +01:00
David Sansome 63fdf11cd8 Keep the playlist column alignment setting in PlaylistView instead of in each individual Playlist, ensuring all playlists share the same column alignments and there's only one place to save/restore them.
Fixes issue 1795
2011-11-12 16:12:51 +00:00
HyperQuantum 94a7ceb898 Add an "Expand" button to add more tracks to a dynamic playlist. Fixes issue 1268 2011-11-10 11:21:41 +00:00
Arnaud Bienner 89680a02f0 Add the ability to have custom actions for PlaylistItems, and InternetPlaylistItems (through services). Add 'add to playlists' actions for Grooveshark 2011-11-06 16:12:44 +01:00
Arnaud Bienner 4143823870 Get GrooveShark songs' length (give the ability to seek through stream). markStream and markSongComplete, as resquested by GrooveShark 2011-10-02 12:05:56 +02:00
David Sansome 53e175e503 When stopping due to "Stop after this track", set the current song to the one after, so when the user presses Play it plays the next song instead of the last one again. 2011-09-27 23:31:15 +01:00
David Sansome 804cbbc14e Save the playlist after editing fields of files in it - affects files that are not in the library. 2011-08-27 23:09:42 +01:00
David Sansome 9312f153b7 Don't show a notification and update the now playing widget when editing a song that isn't currently playing. Fixes issue 1689 2011-08-27 23:08:53 +01:00
David Sansome 7e0e4e48e4 When loading a CUE from disk that isn't in the library, don't overwrite the metadata of its first song with the metadata from the audio file. Fixes issue 2092 2011-08-27 22:29:35 +01:00
Arnaud Bienner cb28557a77 Correct typo 2011-08-08 23:44:49 +02:00
David Sansome dd3eee63e5 Remove python scripting support 2011-07-23 15:32:12 +01:00
Tyler Rhodes ded8e5f6f0 Refactor "Radio" files into "Internet" files. 2011-07-15 13:27:50 +00:00
Tyler Rhodes 5c6f9e625b Allow shorter playlist column names if header size is too small.
Fixes issue 201.
2011-07-06 13:22:42 +00:00
David Sansome c8305c0eee Don't record an undo step when all the songs inserted into the playlist were vetoed. Thanks schizosfera. 2011-07-01 20:48:18 +00:00
David Sansome 5dbdc8354b Port the deleted songs invalidator script to PythonQt. Thanks schizosfera. Fixes issue 2035 2011-07-01 20:47:46 +00:00
David Sansome 7415d85dce When initialising a song from a library query, don't always assume the metadata originally came from a file (which means icycast tags are ignored when it is played). Fixes issue 1857 2011-06-17 20:00:10 +00:00
Arnaud Bienner 272841ab73 Starting audio CD support. Starts issue 701 2011-06-09 23:08:43 +00:00
David Sansome 6dd1634946 Add Python bindings for Playlists, port the rainbowizer plugin to PythonQt and make its colours a bit more tasteful 2011-05-29 12:55:18 +00:00
David Sansome e2c6526840 Make dynamic playlists use the limit specified in the smart playlist dialog. Thanks google@robbertkrebbers.nl. Fixes issue 1082. Fixes issue 1192. 2011-05-14 13:44:10 +00:00
David Sansome 06852aaeb7 Show spotify search results in a separate playlist tab rather than in a tree in the sidebar. 2011-04-28 17:50:45 +00:00
David Sansome ccb9f8cf94 Use URLs everywhere instead of filenames. Move the URL parsing and song loading code out of individual playlist parsers and into the base class. Fix the playlist parser unit tests. 2011-04-28 12:27:53 +00:00
David Sansome 3d6677fe6d Allow radio services (Spotify) to store whole songs in playlist items 2011-04-26 22:06:58 +00:00
David Sansome 3eedc916ad Add a new logging system 2011-04-22 16:50:29 +00:00
Paweł Bara b8e1880854 "remove deleted songs from playlists" action in the 'deleted songs invalidator' plugin (fixes issue #1594) 2011-04-21 21:56:37 +00:00
David Sansome 8f4c1dbbf6 When doing gapless playback, fix a bug where the TrackEnded signal would be emitted too early, before the track had actually ended. This caused the song after the current song to get scrobbled and its playcount increased. Fixes issue 1771 2011-04-17 14:11:37 +00:00
Arnaud Bienner 65ef047c38 Loading file in async way, in two times: fast loading files and insert them in playlist view, while loading info (tags, ...) in background thread 2011-04-16 14:04:15 +00:00
David Sansome f905ce3510 Put a limit on the size of the playlist undo stack, and don't add operations to the stack if they affect more than 500 items. Fixes issue 1762 2011-04-16 13:31:57 +00:00
Andrea Decorte 5d8f1fe872 Added scrobbling button in main window and a global shortcut for
toggling it. Fixes issue 1090
Improved last.fm error handling
2011-04-07 16:25:52 +00:00
Andrea Decorte ecda0ada4a Playlists get an automatic name, no more prompts. Fixes issue #423 2011-03-25 19:16:12 +00:00
David Sansome 31ead96e91 Fix last.fm scrobbling. Fixes issue 1503 2011-03-20 22:19:38 +00:00
Paweł Bara e619d7a280 fixing a bug where streams were removed from playlist during Clementine's startup 2011-03-20 16:07:24 +00:00
Paweł Bara bfb068a6d1 conditionally hide some context menu actions in library view and playlist view
Song.is_stream()
2011-03-20 12:43:10 +00:00
Paweł Bara 3db00fc339 plugin that lets you grey out deleted songs on demand ("main menu / playlist") - available by default
also: this action will "ungrey" songs that were deleted but got restored

SIPs
2011-03-19 10:22:55 +00:00