59class TimebaseProvider : public QObject
63 Timebase effectiveTimebase READ effectiveTimebase NOTIFY
64 effectiveTimebaseChanged)
69 explicit TimebaseProvider (QObject * parent =
nullptr);
72 void setSource (TimebaseProvider * source);
76 void clearOverride ();
78 [[nodiscard]]
bool hasOverride ()
const {
return override_.has_value (); }
79 [[nodiscard]] std::optional<Timebase> overrideValue ()
const
85 [[nodiscard]]
Timebase effectiveTimebase ()
const;
87 Q_SIGNAL
void effectiveTimebaseChanged ();
88 Q_SIGNAL
void overrideChanged ();
93 static constexpr int kMaxChainDepth = 64;
95 void recompute_and_emit_if_changed ();
97 QPointer<TimebaseProvider> source_;
98 std::optional<Timebase> override_;
99 Timebase cached_effective_ = Timebase::Musical;