mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 06:17:35 +00:00
LibDSP+Piano: Fix visibility of Object-derivative constructors
Derivatives of Core::Object should be constructed through ClassName::construct(), to avoid handling ref-counted objects with refcount zero. Fixing the visibility means that misuses like this are more difficult. This commit is separate from the other Applications/Libraries changes because it required additional adaption of the code. Note that the old code did precisely what these changes try to prevent: Create and handle a ref-counted object with a refcount of zero.
This commit is contained in:
parent
25032a02aa
commit
52a1ff4d4b
2 changed files with 9 additions and 9 deletions
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
Track::Track(const u32& time)
|
Track::Track(const u32& time)
|
||||||
: m_time(time)
|
: m_time(time)
|
||||||
, m_temporary_transport(make_ref_counted<LibDSP::Transport>(120, 4))
|
, m_temporary_transport(LibDSP::Transport::construct(120, 4))
|
||||||
, m_delay(make_ref_counted<LibDSP::Effects::Delay>(m_temporary_transport))
|
, m_delay(make_ref_counted<LibDSP::Effects::Delay>(m_temporary_transport))
|
||||||
{
|
{
|
||||||
set_volume(volume_max);
|
set_volume(volume_max);
|
||||||
|
|
|
@ -16,6 +16,14 @@ namespace LibDSP {
|
||||||
class Transport final : public Core::Object {
|
class Transport final : public Core::Object {
|
||||||
C_OBJECT(Transport)
|
C_OBJECT(Transport)
|
||||||
public:
|
public:
|
||||||
|
u32 const& time() const { return m_time; }
|
||||||
|
u16 beats_per_minute() const { return m_beats_per_minute; }
|
||||||
|
double current_second() const { return m_time / m_sample_rate; }
|
||||||
|
double samples_per_measure() const { return (1.0 / m_beats_per_minute) * 60.0 * m_sample_rate; }
|
||||||
|
double sample_rate() const { return m_sample_rate; }
|
||||||
|
double current_measure() const { return m_time / samples_per_measure(); }
|
||||||
|
|
||||||
|
private:
|
||||||
Transport(u16 beats_per_minute, u8 beats_per_measure, u32 sample_rate)
|
Transport(u16 beats_per_minute, u8 beats_per_measure, u32 sample_rate)
|
||||||
: m_beats_per_minute(beats_per_minute)
|
: m_beats_per_minute(beats_per_minute)
|
||||||
, m_beats_per_measure(beats_per_measure)
|
, m_beats_per_measure(beats_per_measure)
|
||||||
|
@ -27,14 +35,6 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 const& time() const { return m_time; }
|
|
||||||
u16 beats_per_minute() const { return m_beats_per_minute; }
|
|
||||||
double current_second() const { return m_time / m_sample_rate; }
|
|
||||||
double samples_per_measure() const { return (1.0 / m_beats_per_minute) * 60.0 * m_sample_rate; }
|
|
||||||
double sample_rate() const { return m_sample_rate; }
|
|
||||||
double current_measure() const { return m_time / samples_per_measure(); }
|
|
||||||
|
|
||||||
private:
|
|
||||||
u32 m_time { 0 };
|
u32 m_time { 0 };
|
||||||
u16 const m_beats_per_minute { 0 };
|
u16 const m_beats_per_minute { 0 };
|
||||||
u8 const m_beats_per_measure { 0 };
|
u8 const m_beats_per_measure { 0 };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue