input/Stream: remove attribute "cond", replace with handler interface

This adds a bit of overhead, but also adds flexibility to the API,
because arbitrary triggers may be invoked from that virtual method
implementation, not just Cond::signal().

The motivation for this is to make the handlers more dynamic, for the
upcoming buffering class utilizing ProxyInputStream.
This commit is contained in:
Max Kellermann
2018-06-22 19:37:18 +02:00
parent 01d8eb6290
commit d0fbf6db59
66 changed files with 403 additions and 280 deletions

View File

@@ -89,8 +89,7 @@ static constexpr TagHandler embcue_tag_handler = {
static std::unique_ptr<SongEnumerator>
embcue_playlist_open_uri(const char *uri,
gcc_unused Mutex &mutex,
gcc_unused Cond &cond)
gcc_unused Mutex &mutex)
{
if (!PathTraitsUTF8::IsAbsolute(uri))
/* only local files supported */

View File

@@ -88,7 +88,7 @@ FlacPlaylist::NextSong()
static std::unique_ptr<SongEnumerator>
flac_playlist_open_uri(const char *uri,
gcc_unused Mutex &mutex, gcc_unused Cond &cond)
gcc_unused Mutex &mutex)
{
if (!PathTraitsUTF8::IsAbsolute(uri))
/* only local files supported */

View File

@@ -221,9 +221,9 @@ static constexpr yajl_callbacks parse_callbacks = {
*/
static void
soundcloud_parse_json(const char *url, Yajl::Handle &handle,
Mutex &mutex, Cond &cond)
Mutex &mutex)
{
auto input_stream = InputStream::OpenReady(url, mutex, cond);
auto input_stream = InputStream::OpenReady(url, mutex);
Yajl::ParseInputStream(handle, *input_stream);
}
@@ -235,7 +235,7 @@ soundcloud_parse_json(const char *url, Yajl::Handle &handle,
* soundcloud://url/<url or path of soundcloud page>
*/
static std::unique_ptr<SongEnumerator>
soundcloud_open_uri(const char *uri, Mutex &mutex, Cond &cond)
soundcloud_open_uri(const char *uri, Mutex &mutex)
{
assert(strncmp(uri, "soundcloud://", 13) == 0);
uri += 13;
@@ -277,7 +277,7 @@ soundcloud_open_uri(const char *uri, Mutex &mutex, Cond &cond)
SoundCloudJsonData data;
Yajl::Handle handle(&parse_callbacks, nullptr, &data);
soundcloud_parse_json(u, handle, mutex, cond);
soundcloud_parse_json(u, handle, mutex);
data.songs.reverse();
return std::make_unique<MemorySongEnumerator>(std::move(data.songs));