After current_engine.take(), seek error paths used to return with no engine while is_playing stayed true. Abort now sets stream_error and stops the playing flag so the UI cannot show silent "playing".
After current_engine.take(), seek error paths used to return with no engine while is_playing stayed true. Abort now sets stream_error and stops the playing flag so the UI cannot show silent "playing".