Stash radio settings per app (#1151)

* add a little Stash utility.
* add radio state RAII helper.
* first part of radio_state changes
* add radio_state_ to rest of apps
* fix freq_step and format
* fix unused ui_sigfrx: corrected sample rate, added back freq setting
This commit is contained in:
Kyle Reed 2023-06-14 00:57:20 -07:00 committed by GitHub
parent 19491ce3f7
commit 6298388fe1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
89 changed files with 283 additions and 130 deletions

View file

@ -126,6 +126,22 @@ constexpr const T& clip(const T& value, const T& minimum, const T& maximum) {
return std::max(std::min(value, maximum), minimum);
}
/* Saves state on construction and reverts it when destroyed. */
template <typename T>
struct Stash {
Stash(T& target)
: target_{target}, prev_{target} {
}
~Stash() {
target_ = std::move(prev_);
}
private:
T& target_;
T prev_;
};
// TODO: need to decide if this is inclusive or exclusive.
// The implementations are different and cause the subtle
// bugs mentioned below.