Add API to locate to named marker

This commit is contained in:
Robin Gareus
2025-11-24 23:03:00 +01:00
parent 64b71e96ea
commit e9256cf0e4
3 changed files with 18 additions and 0 deletions

View File

@@ -495,6 +495,8 @@ public:
void request_stop (bool abort = false, bool clear_state = false, TransportRequestSource origin = TRS_UI);
void request_locate (samplepos_t sample, bool force = false, LocateTransportDisposition ltd = RollIfAppropriate, TransportRequestSource origin = TRS_UI);
bool request_locate_to_mark (std::string const&, LocateTransportDisposition ltd = RollIfAppropriate, TransportRequestSource origin = TRS_UI);
void request_play_loop (bool yn, bool leave_rolling = false);
bool get_play_loop () const { return play_loop; }

View File

@@ -3109,6 +3109,7 @@ LuaBindings::common (lua_State* L)
.addFunction ("timecode_frames_per_second", &Session::timecode_frames_per_second)
.addFunction ("timecode_drop_frames", &Session::timecode_drop_frames)
.addFunction ("request_locate", &Session::request_locate)
.addFunction ("request_locate_to_mark", &Session::request_locate_to_mark)
.addFunction ("request_roll", &Session::request_roll)
.addFunction ("request_stop", &Session::request_stop)
.addFunction ("request_play_loop", &Session::request_play_loop)

View File

@@ -994,6 +994,21 @@ Session::force_locate (samplepos_t target_sample, LocateTransportDisposition ltd
queue_event (ev);
}
bool
Session::request_locate_to_mark (std::string const& name, LocateTransportDisposition ltd, TransportRequestSource origin)
{
for (auto const& l : locations()->list()) {
if (!l->is_mark() || l->is_hidden() || l->is_session_range()) {
continue;
}
if (l->name () == name) {
request_locate (l->start_sample(), false, ltd, origin);
return true;
}
}
return false;
}
void
Session::unset_preroll_record_trim ()
{