@@ -124,6 +124,30 @@ auto vamp_zero::control_state::set_observer(std::function<void(vamp_zero::app_st
|
||||
observer_ = std::move(observer);
|
||||
}
|
||||
|
||||
auto vamp_zero::control_state::finish_playback(std::uint64_t session, std::string error, std::shared_ptr<vamp_zero::catalogue const> catalog) -> void {
|
||||
auto observer = std::function<void(vamp_zero::app_state)>{};
|
||||
auto updated = vamp_zero::app_state{};
|
||||
{
|
||||
auto lock = std::scoped_lock{mutex_};
|
||||
if (!state_.audio.playback_enabled || state_.score_session != session || (catalog && catalog != state_.catalog) || (state_.mode != vamp_zero::app_mode::PERFORMANCE_SCORE && state_.mode != vamp_zero::app_mode::PRACTICE_SCORE)) {
|
||||
return;
|
||||
}
|
||||
if (error.empty()) {
|
||||
auto count = state_.select_count;
|
||||
state_ = vamp_zero::apply_app_command(std::move(state_), vamp_protocol::page_command::SELECT);
|
||||
state_.select_count = count;
|
||||
state_.last_command = "playback-completed";
|
||||
} else {
|
||||
state_.audio.playback_error = std::move(error);
|
||||
}
|
||||
updated = snapshot_locked();
|
||||
observer = observer_;
|
||||
}
|
||||
if (observer) {
|
||||
observer(std::move(updated));
|
||||
}
|
||||
}
|
||||
|
||||
auto vamp_zero::portal_status_json(vamp_zero::config const &config, vamp_zero::app_state const &state) -> boost::json::value {
|
||||
auto control = boost::json::object{};
|
||||
control["ap_ssid"] = config.control.ap_ssid;
|
||||
|
||||
Reference in New Issue
Block a user