APG is never going to implement PlaylistProvider
authorSoren Harward <stharward@gmail.com>
Sat, 28 Aug 2010 22:31:09 +0000 (18:31 -0400)
committerSoren Harward <stharward@gmail.com>
Fri, 17 Sep 2010 18:42:19 +0000 (14:42 -0400)
commitbc4fc152d461a7f3af6c393bd85ee8ad82d49fe6
tree045a896dfeb2f6a1b341b06287faaa4de16cfaf7
parent216b3644b74e4a85966a7a803892a1eee170835d
APG is never going to implement PlaylistProvider

The problem isn't implementing the APG as a PlaylistProvider.  That's
pretty easy to do.

The problem is implementing APG Presets as a Playlist, which is the
defined behavior of the PlaylistProvider.  The single biggest
showstopper to this implementation is the fact that Playlist::tracks()
is defined synchronously, while the ConstraintSolver in the APG operates
asynchronously.  Thus, either the Playlist class would have to be
substantially rewritten to operare asynchronously, or the call to
Playlist::tracks() would have to block until the ConstraintSolver
finishes.  Neither of these is an attractive option.

Further problems (though not as dire) occur with the addTrack() and
removeTrack() functions, and the trackCount() function.  And having an
Observer of an APG-based Playlist is just pointless because the APG
never adds or removes tracks, unless it generates a completely new
playlist.

So as far as I'm concerned, this issue is dead.  The APG will not ever
implement a PlaylistProvider because it just doesn't fit the design
paradigm.

CCMAIL: bart.cerneels@kde.org
src/playlistgenerator/TODO