Commit Graph

107 Commits

Author SHA1 Message Date
Paul Davis 87f40ddc7f some libardour support for MIDI scene support 2024-04-25 13:07:00 -06:00
Robin Gareus 0f3e3b5243
Fix signal emission for Locations::ripple (1/2)
Locations::ripple can never add/remove markers, hence
Locations::changed is not applicable.

That signal is to indicate when more than one location is
added or removed from the location list.
2023-12-10 04:08:30 +01:00
Robin Gareus 153c7e289d
Add explicit API to copy Locations
This is in preparation to reduce signals during
Location Drag motion (which operates on a copied
Location, that causes [static] signal emissions,
but the location itself is not in any list).
2023-12-08 21:47:03 +01:00
Robin Gareus 0c5bbfa62d
Location: add API to use cached sorted location list
Every call to ::next_section() copies the location list
and sorts all the regions.

If the session has a significant amount of Locations and
Section Marker (#9568 has 300+) sorting them each time
when iterating over sections is significant.
2023-12-08 17:22:28 +01:00
Ben Loftis 101744b812
Add method to find a section location by position 2023-09-05 23:08:29 +02:00
Robin Gareus 46a916f0b4
Add method to query sections 2023-08-26 14:09:53 +02:00
Robin Gareus 6cf2659f8b
Add Location flags to define sections 2023-08-26 14:09:53 +02:00
Paul Davis 076cb86912 next iteration of changes to handle time domain bounces as undoable 2023-08-14 23:42:08 -06:00
Paul Davis 1b9f4999df locations now follow session time domain, always (probably) 2023-08-02 15:23:42 -06:00
Robin Gareus 4529a17617
Implement Section Delete/Insert 2023-06-06 02:42:43 +02:00
Robin Gareus 2bdf51e02d
Implement cut/paste section markers
This does not include partial ranges (selection only
include either range-start or range-end).

Copy/paste also remains to be done
2023-05-02 23:36:51 +02:00
Paul Davis 1cd1430975 skeleton code for global temporal domain change during tempo mapping 2023-03-24 14:19:15 -06:00
Paul Davis b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Paul Davis d69a2c3c13 small change to Locations::clear_cue_markers() API to bring it into line with other clear_* methods 2022-10-21 07:51:53 -06:00
Robin Gareus 88bd2115a0
Consolidate signal emission, fix RWLock deadlock
Play loop, change loop-location, undo.

Undo calls Locations::set_state, takes a writer-lock,
and calls Location::set_state which emits a Changed signal.
This triggers Editor::location_changed, and if loop-location
changed while looping, update_loop_range_view() queries the
loop location, taking a reader-lock.

This leads to a recursive lock, RWLock::ReaderLock after
a RWLock::WriterLock does not cause a deadlock, however
releasing the ReaderLock effectively also unlocks the WriterLock.
This leads to a deadlock next time a writer-lock is acquired.
2022-10-04 01:12:50 +02:00
Paul Davis 7bf89ce109 Constification: make Stateful::get_state() const, with all other required const-ness added (libs) 2022-04-06 21:56:59 -06:00
Paul Davis 2fa8c7cd42 triggerbox: if any cues were recorded, remove all existing cue markers in transport-roll-range before adding new ones 2022-01-21 13:08:47 -07:00
Ben Loftis 4bc3230756 Locations: provide a signal for when a single Location's Cue-ID changes 2022-01-21 10:06:18 -06:00
Paul Davis acdc1cd707 extend/adjust Location API to handle cue markers 2022-01-05 13:27:47 -07:00
Paul Davis 5783664b9e locations: provide Location::cue_change signal to notify about cue marker changes 2022-01-05 13:27:47 -07:00
Paul Davis c2d18dabd5 add new location flag, IsCueMarker 2022-01-04 15:23:51 -07:00
Paul Davis 4f18d7f220 fix timeline types for Location::ripple() method 2021-08-13 12:51:36 -06:00
Paul Davis 5f0ba5b404 fix recently added Location API to use timeline types 2021-08-13 12:51:35 -06:00
Paul Davis 9d4d3908e6 remove some nutempo #warnings and fix up Location time domain API 2021-08-13 12:51:33 -06:00
Paul Davis cdb1972928 continuing timeline type conversions 2021-08-13 12:51:29 -06:00
Paul Davis eae9d276fe libardour: conversion to use timeline types (mega-commit) 2021-08-13 12:51:29 -06:00
Paul Davis 9766132a53 libardour: add Locations::ripple() 2021-05-28 17:43:33 -06:00
Robin Gareus 292547b264
Use RWLock for Locations
This replaces a Mutex and adds additional read-locks.

This is needed to address some threading issues with rt-threads
calling auto_loop_location() while the GUI changes locations.

Since locations are C-pointers this is still not entirely safe!
Locations::remove() may delete a location while a pointer
to it is being used in another thread.
2021-05-09 03:20:14 +02:00
Paul Davis 950f0d4c9b change return API for Location::clear_*() methods to indicate if anything was removed 2021-03-16 17:40:06 -06:00
Paul Davis 951257909f Location API to remove xrun markers 2021-03-16 16:49:38 -06:00
Artem Alimov 5add650871 Add lua methods to control range locations
Method Session:locations():range_starts_at(pos, slop, incl)
to search range by start point with some inaccuracy delta.
Similar to mark_at(pos, slop)

Method Session:locations():add_range(start, end)
to create new range and get it for later changes.
2021-03-07 00:12:13 +03:00
Paul Davis 195fe0f712 add method to check for xrun status of a marker 2020-04-01 10:10:50 -06:00
Robin Gareus a22f918d9d
Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus 7cf68eaf72
Fix time_t <> long int ambiguity (OSX gcc builds)
This fixes an issue with
* XMLNode::get_property(const char*, T&)
* XMLNode::set_property(const char*, const T&)
resulting in
 string_convert.h:77: error: 'long int' is not a class,
 struct, or union type
2019-07-26 01:58:18 +02:00
Nikolaus Gullotta 7d4f72174c Location timestamp changes - can now sort by location creation date: lib ardour part 2019-07-22 15:47:01 -05:00
Robin Gareus 94409c80f3
NO-OP: whitespace 2019-04-08 01:56:52 +02:00
Robin Gareus e275154a40 Introduce a dedicated "Clock Origin" Marker 2017-11-23 00:11:55 +01:00
Paul Davis 30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
nick_m d0580ecfbc allow all types of range location (loop, start, end etc.) to be glued to bars and beats. 2016-12-29 01:39:31 +11:00
Robin Gareus d04ca6d414 a few more Location related lua bindings 2016-08-06 22:12:39 +02:00
nick_m 885f1fd684 Tempo ramps - update midi regions and locations when dragging tempo.
- also make locations and regions use a double beat rather than bbt for musical position.
2016-05-27 23:38:10 +10:00
Robin Gareus 04c56a0618 some strategic documentation
Prevent class descriptions inheriting the doc from PBD:Stateful by
adding some specific doc.
2016-04-12 17:03:44 +02:00
Robin Gareus a9187a9e25 Add a few class documentations to override inherited doc.
clang doxygen comments follows class inheritance.
Undocumented Ardour classes which inherit from sigc::trackable
also inherit sigc's documentation.
2016-03-31 01:16:07 +02:00
Paul Davis 4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Paul Davis a47cacfcc6 add signal to indicate absence of removal of scene change from Location 2015-06-29 14:18:13 -04:00
Paul Davis 8488d8f6a5 remove unnecessary and unused changes from grygorii 2015-06-29 14:18:12 -04:00
Paul Davis f11fc1852c fix whitespace/indentation and remove references to ScopedConnectionLists that were not used even in Tracks 2015-06-29 14:18:12 -04:00
GZharun 317bacfa3a [Summary] Eliminated redundant marker update notification which lead to creation of huge amount of redundant session events 2015-06-29 14:18:12 -04:00
Paul Davis f900711136 port changes to ARDOUR::Location and ARDOUR::Locations APIs from Tracks to Ardour.
Fixes deadlocks caused by mutex on Locations list, and clarifies the purposes and uses of the class-level and
object-level change-related signals.
2014-10-24 12:18:46 -04:00
Paul Davis 5c7d6ae004 add Location::set_skip() to allow toggling of skip-functionality for a given Location 2014-09-19 23:21:31 -04:00