diff options
author | David Robillard <d@drobilla.net> | 2017-12-17 20:33:47 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-12-17 20:33:47 +0100 |
commit | 7f37e2306f79d3f77934aa97e5f784fb0b39b838 (patch) | |
tree | 32a8b3b87795ba494ff5f0fcaf7ea893a8fb5594 /src/server/JackDriver.cpp | |
parent | 86bf9cbd7af99c8964745d414494c26af11af0f4 (diff) | |
download | ingen-7f37e2.tar.gz ingen-7f37e2.tar.bz2 ingen-7f37e2.zip |
Use LV2 atom forge C++ bindings
Diffstat (limited to 'src/server/JackDriver.cpp')
-rw-r--r-- | src/server/JackDriver.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/server/JackDriver.cpp b/src/server/JackDriver.cpp index 44f92dd8..ad2c5c5b 100644 --- a/src/server/JackDriver.cpp +++ b/src/server/JackDriver.cpp @@ -55,6 +55,7 @@ namespace Server { JackDriver::JackDriver(Engine& engine) : _engine(engine) + , _forge(&engine.world()->uri_map().urid_map_feature()->urid_map) , _sem(0) , _flag(false) , _client(NULL) @@ -67,8 +68,6 @@ JackDriver::JackDriver(Engine& engine) , _old_rolling(false) { _midi_event_type = _engine.world()->uris().midi_MidiEvent; - lv2_atom_forge_init( - &_forge, &engine.world()->uri_map().urid_map_feature()->urid_map); } JackDriver::~JackDriver() @@ -427,26 +426,26 @@ JackDriver::append_time_events(RunContext& context, _old_bpm = pos->beats_per_minute; // Build an LV2 position object to append to the buffer - LV2_Atom pos_buf[16]; - LV2_Atom_Forge_Frame frame; - lv2_atom_forge_set_buffer(&_forge, (uint8_t*)pos_buf, sizeof(pos_buf)); - lv2_atom_forge_object(&_forge, &frame, 0, uris.time_Position); - lv2_atom_forge_key(&_forge, uris.time_frame); - lv2_atom_forge_long(&_forge, pos->frame); - lv2_atom_forge_key(&_forge, uris.time_speed); - lv2_atom_forge_float(&_forge, rolling ? 1.0 : 0.0); - if (pos->valid & JackPositionBBT) { - lv2_atom_forge_key(&_forge, uris.time_barBeat); - lv2_atom_forge_float( - &_forge, pos->beat - 1 + (pos->tick / pos->ticks_per_beat)); - lv2_atom_forge_key(&_forge, uris.time_bar); - lv2_atom_forge_long(&_forge, pos->bar - 1); - lv2_atom_forge_key(&_forge, uris.time_beatUnit); - lv2_atom_forge_int(&_forge, pos->beat_type); - lv2_atom_forge_key(&_forge, uris.time_beatsPerBar); - lv2_atom_forge_float(&_forge, pos->beats_per_bar); - lv2_atom_forge_key(&_forge, uris.time_beatsPerMinute); - lv2_atom_forge_float(&_forge, pos->beats_per_minute); + LV2_Atom pos_buf[16]; + _forge.set_buffer((uint8_t*)pos_buf, sizeof(pos_buf)); + { + lv2::atom::Forge::ScopedObject position(_forge, 0, uris.time_Position); + position.key(uris.time_frame); + _forge.write(int64_t(pos->frame)); + position.key(uris.time_speed); + _forge.write(rolling ? 1.0f : 0.0f); + if (pos->valid & JackPositionBBT) { + position.key(uris.time_barBeat); + _forge.write(pos->beat - 1 + (pos->tick / pos->ticks_per_beat)); + position.key(uris.time_bar); + _forge.write(int64_t(pos->bar - 1)); + position.key(uris.time_beatUnit); + _forge.write(int32_t(pos->beat_type)); + position.key(uris.time_beatsPerBar); + _forge.write(float(pos->beats_per_bar)); + position.key(uris.time_beatsPerMinute); + _forge.write(float(pos->beats_per_minute)); + } } // Append position to buffer at offset 0 (start of this cycle) |