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:
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user