Commit 0709878b authored by Max Kellermann's avatar Max Kellermann

decoder/API: add class StopDecoder

parent 662e4770
......@@ -47,6 +47,13 @@
class Error;
/**
* Throw an instance of this class to stop decoding the current song
* (successfully). It can be used to jump out of all of a decoder's
* stack frames.
*/
class StopDecoder {};
/**
* Notify the player thread that it has finished initialization and
* that it has read the song's meta data.
*
......
......@@ -356,6 +356,8 @@ try {
return !path_fs.IsNull()
? decoder_run_file(decoder, real_uri, path_fs)
: decoder_run_stream(decoder, real_uri);
} catch (StopDecoder) {
return true;
} catch (const std::runtime_error &e) {
/* copy the exception to decoder.error */
......
......@@ -310,7 +310,7 @@ MPDOpusDecoder::HandleEOS()
return decoder_get_command(decoder);
}
return DecoderCommand::STOP;
throw StopDecoder();
}
inline DecoderCommand
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment