Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
monotonic_time_provider.h
1// SPDX-FileCopyrightText: © 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <QElapsedTimer>
7
8namespace zrythm::utils
9{
10using MonotonicTime = qint64;
11
13{
14public:
15 virtual ~MonotonicTimeProvider () = default;
16 virtual MonotonicTime get_monotonic_time_nsecs () const = 0;
17 virtual MonotonicTime get_monotonic_time_usecs () const = 0;
18};
19
20class QElapsedTimeProvider : public MonotonicTimeProvider
21{
22public:
23 QElapsedTimeProvider () { timer_.start (); }
24
25 MonotonicTime get_monotonic_time_nsecs () const override
26 {
27 return timer_.nsecsElapsed ();
28 }
29
30 MonotonicTime get_monotonic_time_usecs () const override
31 {
32 return get_monotonic_time_nsecs () / 1000;
33 }
34
35private:
36 QElapsedTimer timer_;
37};
38
39} // namespace zrythm::utils
String utilities.
Definition algorithms.h:12