Revision 6f87755...

Go back to digest for 7th April 2013

Optimization in Multimedia

Matěj Laitl committed changes in [amarok] /:

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

Added 5 files
  •   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
Modified 45 files
  •   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
50 files changed in total