Revision 6f87755...
Go back to digest for 7th April 2013Optimization in Multimedia
Biggie: PlaylistFile refactoring, code deduplication, asynchronous loading
FEATURES:
* Playlist files are now read asynchronously when possible; patch and great
deal of refactoring by Tatjana Gornak.
Original description:
I've started my changes with an implementation of a ASXPlaylist class,
due this work I've found that implementation of different playlist file
types has different logic, as result I end up with a rewriting
playlist's implementations.
As example of difference:
- Constructor M3UPlaylist::M3UPlaylist( const KUrl &url ) sets a url,
but does not load playlist, therefore loading of playlist are
postponed till data from playlist are actualy needed (lazy loading)
On the other hand constructor XSPFPlaylist::XSPFPlaylist( const KUrl
&url, bool autoAppend ) loads playlist.
The main idea of proposed changes is to create a unify code for
processing playlist files:
- lazy loading
- common functionality was moved to PlaylistFile.
FIXED-IN: 2.8
REVIEW: 107473
DIGEST: Optimization: Amarok now reads playlist files asynchronously
when possible, thanks to Tatjana Gornak.
CCMAIL: Tatjana Gornak
File Changes
- src/playlist/PlaylistRestorer.cpp
- src/playlist/PlaylistRestorer.h
- tests/core/playlists/TestPlaylistObserver.cpp
- tests/core/playlists/TestPlaylistObserver.h
- src/core-impl/playlists/types/file/PlaylistFileLoaderJob.cpp
- ChangeLog
- src/CMakeLists.txt
- src/DirectoryLoader.cpp
- src/DirectoryLoader.h
- tests/TestDirectoryLoader.cpp
- tests/TestDirectoryLoader.h
- src/playlist/PlaylistActions.cpp
- src/playlist/PlaylistController.cpp
- src/playlistmanager/PlaylistManager.cpp
- src/playlistmanager/PlaylistManager.h
- src/playlistmanager/SyncedPlaylist.cpp
- src/playlistmanager/SyncedPlaylist.h
- src/browsers/playlistbrowser/PlaylistBrowserModel.cpp
- src/browsers/playlistbrowser/PlaylistBrowserModel.h
- src/core/playlists/Playlist.cpp
- src/core/playlists/Playlist.h
- src/core/playlists/PlaylistProvider.h
- src/playlistmanager/file/PlaylistFileProvider.cpp
- src/playlistmanager/sql/SqlPlaylist.cpp
- src/playlistmanager/sql/SqlUserPlaylistProvider.cpp
- src/services/gpodder/GpodderProvider.h
- tests/core/playlists/CMakeLists.txt
- tests/playlistmanager/file/TestPlaylistFileProvider.cpp
- src/context/applets/info/InfoApplet.cpp
- src/core-impl/collections/ipodcollection/IpodPlaylistProvider.h
- src/core-impl/podcasts/sql/SqlPodcastMeta.cpp
- src/core-impl/podcasts/sql/SqlPodcastProvider.cpp
- tests/core-impl/meta/multi/CMakeLists.txt
- tests/core-impl/meta/multi/TestMetaMultiTrack.cpp
- tests/core-impl/meta/multi/TestMetaMultiTrack.h
- src/core-impl/collections/umscollection/podcasts/UmsPodcastProvider.cpp
- src/core-impl/playlists/types/file/PlaylistFile.cpp
- src/core-impl/playlists/types/file/PlaylistFile.h
- src/core-impl/playlists/types/file/PlaylistFileSupport.cpp
- src/core-impl/playlists/types/file/PlaylistFileSupport.h
- src/core-impl/playlists/types/file/m3u/M3UPlaylist.cpp
- src/core-impl/playlists/types/file/m3u/M3UPlaylist.h
- src/core-impl/playlists/types/file/pls/PLSPlaylist.cpp
- src/core-impl/playlists/types/file/pls/PLSPlaylist.h
- src/core-impl/playlists/types/file/xspf/XSPFPlaylist.cpp
- src/core-impl/playlists/types/file/xspf/XSPFPlaylist.h
- tests/core-impl/playlists/types/file/m3u/TestM3UPlaylist.cpp
- tests/core-impl/playlists/types/file/pls/TestPLSPlaylist.cpp
- tests/core-impl/playlists/types/file/pls/TestPLSPlaylist.h
- tests/core-impl/playlists/types/file/xspf/TestXSPFPlaylist.cpp