ardour.git
7 years agomini-tl: subscribe to location add/remove signals
Robin Gareus [Sun, 18 Dec 2016 13:52:26 +0000 (14:52 +0100)]
mini-tl: subscribe to location add/remove signals

7 years agothere is no curve for identical note_types_per_minute values.
nick_m [Sun, 18 Dec 2016 16:23:33 +0000 (03:23 +1100)]
there is no curve for identical note_types_per_minute values.

7 years agoTransport Layout:
Ben Loftis [Sun, 18 Dec 2016 15:02:13 +0000 (09:02 -0600)]
Transport Layout:
* Remove some redundant containers and frames, for a cleaner look.
* Adjust transport button spacing and sizes to more closely match the editor toolbar.

7 years agoTransport Layout: Alert buttons do not need to be red when inactive
Ben Loftis [Sun, 18 Dec 2016 04:41:25 +0000 (22:41 -0600)]
Transport Layout: Alert buttons do not need to be red when inactive

7 years agoTransport Layout: Attempts to standardize button sizes and padding.
Ben Loftis [Sun, 18 Dec 2016 04:32:38 +0000 (22:32 -0600)]
Transport Layout: Attempts to standardize button sizes and padding.

7 years agoMini-timeline: Any click not on a marker should trigger a locate
Ben Loftis [Sun, 18 Dec 2016 01:18:16 +0000 (19:18 -0600)]
Mini-timeline: Any click not on a marker should trigger a locate

7 years agoMini-timeline: Use timeline colors from config
Ben Loftis [Sun, 18 Dec 2016 01:16:09 +0000 (19:16 -0600)]
Mini-timeline: Use timeline colors from config

7 years agoshould not really bind a shared_ptr<Port> to a sigc slot, so don't do that
Paul Davis [Sun, 18 Dec 2016 00:07:17 +0000 (00:07 +0000)]
should not really bind a shared_ptr<Port> to a sigc slot, so don't do that

7 years agomove termination of auto connect thread till after control protocols are destroyed.
Paul Davis [Sun, 18 Dec 2016 00:06:44 +0000 (00:06 +0000)]
move termination of auto connect thread till after control protocols are destroyed.

Otherwise, control protocol ports don't actually get deleted

7 years agoPrepare configurable mini-timeline time-span
Robin Gareus [Sat, 17 Dec 2016 23:06:39 +0000 (00:06 +0100)]
Prepare configurable mini-timeline time-span

7 years agoremove channel filter status and button from MIDI track header, access via context...
Paul Davis [Sat, 17 Dec 2016 17:58:44 +0000 (17:58 +0000)]
remove channel filter status and button from MIDI track header, access via context menu

7 years agofix gcc4 compilation (local type used in template)
Robin Gareus [Sat, 17 Dec 2016 12:00:33 +0000 (13:00 +0100)]
fix gcc4 compilation (local type used in template)

7 years agoRefine transport tool bar layout
Robin Gareus [Sat, 17 Dec 2016 00:43:24 +0000 (01:43 +0100)]
Refine transport tool bar layout

7 years agoPrepare mini-timeline widget for toolbar
Robin Gareus [Sat, 17 Dec 2016 00:43:09 +0000 (01:43 +0100)]
Prepare mini-timeline widget for toolbar

7 years agoremove cruft
Robin Gareus [Sat, 17 Dec 2016 00:40:22 +0000 (01:40 +0100)]
remove cruft

7 years agoAdd UI to set global track layered mode
Robin Gareus [Mon, 12 Dec 2016 20:48:29 +0000 (21:48 +0100)]
Add UI to set global track layered mode

7 years agoHide/remove per-track record-mode in favor of global setting.
Robin Gareus [Mon, 12 Dec 2016 18:44:03 +0000 (19:44 +0100)]
Hide/remove per-track record-mode in favor of global setting.

7 years agoMove selection/punch clocks to editor Sidebar
Robin Gareus [Sat, 17 Dec 2016 01:31:41 +0000 (02:31 +0100)]
Move selection/punch clocks to editor Sidebar

7 years agoCommence transport tool bar re-layout
Robin Gareus [Sun, 11 Dec 2016 16:24:30 +0000 (17:24 +0100)]
Commence transport tool bar re-layout

7 years agoRework shuttle control display
Robin Gareus [Sun, 11 Dec 2016 00:33:23 +0000 (01:33 +0100)]
Rework shuttle control display

7 years agoAdd API to query editor's playhead cursor position
Robin Gareus [Fri, 16 Dec 2016 14:02:29 +0000 (15:02 +0100)]
Add API to query editor's playhead cursor position

7 years agoinitial attempt at importing SMF tempo maps during MIDI import.
Paul Davis [Fri, 16 Dec 2016 16:49:52 +0000 (16:49 +0000)]
initial attempt at importing SMF tempo maps during MIDI import.

Still with debug output

7 years agoadd copy constructor, operator= and a clean ::dump() method for TempoMap
Paul Davis [Fri, 16 Dec 2016 16:49:27 +0000 (16:49 +0000)]
add copy constructor, operator= and a clean ::dump() method for TempoMap

7 years agoadd arguments (unusued) to control whether or not SMF tempo map is used during import
Paul Davis [Fri, 16 Dec 2016 14:57:14 +0000 (14:57 +0000)]
add arguments (unusued) to control whether or not SMF tempo map is used during import

7 years agoadd arguments (unusued) to control whether or not SMF tempo map is used during import
Paul Davis [Fri, 16 Dec 2016 14:57:10 +0000 (14:57 +0000)]
add arguments (unusued) to control whether or not SMF tempo map is used during import

7 years agotweak presentation of SMF tempo option
Paul Davis [Fri, 16 Dec 2016 14:14:08 +0000 (14:14 +0000)]
tweak presentation of SMF tempo option

7 years agoshow tempo information for MIDI files in preview pane; start to offer choice about...
Paul Davis [Fri, 16 Dec 2016 13:46:13 +0000 (13:46 +0000)]
show tempo information for MIDI files in preview pane; start to offer choice about using tempo map when importing

7 years ago"toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo
Paul Davis [Fri, 16 Dec 2016 13:45:43 +0000 (13:45 +0000)]
"toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo

7 years agoexpose SMF tempo information in Evoral::SMF
Paul Davis [Fri, 16 Dec 2016 10:43:52 +0000 (10:43 +0000)]
expose SMF tempo information in Evoral::SMF

7 years agoadd function to get number of tempos found in SMF tempo map
Paul Davis [Fri, 16 Dec 2016 10:43:41 +0000 (10:43 +0000)]
add function to get number of tempos found in SMF tempo map

7 years agounused but slightly tricky code to add track name/instrument to an SMF file when...
Paul Davis [Thu, 15 Dec 2016 17:23:44 +0000 (17:23 +0000)]
unused but slightly tricky code to add track name/instrument to an SMF file when saved

7 years agoadd comments about limitations for Evoral::SMF and tracks
Paul Davis [Thu, 15 Dec 2016 17:22:48 +0000 (17:22 +0000)]
add comments about limitations for Evoral::SMF and tracks

7 years agoMIDI tracer actually changes the event-loop
Robin Gareus [Fri, 16 Dec 2016 00:56:15 +0000 (01:56 +0100)]
MIDI tracer actually changes the event-loop

7 years agofix generic plugins for toggle with 2 scalepoints (enum)
Robin Gareus [Fri, 16 Dec 2016 00:55:28 +0000 (01:55 +0100)]
fix generic plugins for toggle with 2 scalepoints (enum)

Signed-off-by: Robin Gareus <robin@gareus.org>
7 years agosome further invalidation details:
Robin Gareus [Thu, 15 Dec 2016 17:16:03 +0000 (18:16 +0100)]
some further invalidation details:

Prevent double unref during when the EventLoop terminates:
deleting the ringbuffer deletes all requests, some of which may
contain stale invalidation

remove the buffer_map_lock, now that signals ref-count the IR.

7 years agostore InvalidationRecord in a Connection object and ref/unref it as appropriate
Paul Davis [Thu, 15 Dec 2016 16:36:39 +0000 (16:36 +0000)]
store InvalidationRecord in a Connection object and ref/unref it as appropriate

7 years agoadd ::use_count() method to InvalidationRecord
Paul Davis [Thu, 15 Dec 2016 16:35:37 +0000 (16:35 +0000)]
add ::use_count() method to InvalidationRecord

7 years agobe a bit less flickery when redrawing tempo/meter markers.
nick_m [Thu, 15 Dec 2016 15:56:58 +0000 (02:56 +1100)]
be a bit less flickery when redrawing tempo/meter markers.

7 years agofix unused Outside filled framed curve for constant points outside the draw area.
nick_m [Thu, 15 Dec 2016 15:54:10 +0000 (02:54 +1100)]
fix unused Outside filled framed curve for constant points outside the draw area.

7 years agorevert c3ab67dd now that this misbehaviour is understood.
nick_m [Thu, 15 Dec 2016 15:52:39 +0000 (02:52 +1100)]
revert c3ab67dd now that this misbehaviour is understood.

7 years agofix issue with disappearing tempo curve at constant tempi.
nick_m [Thu, 15 Dec 2016 15:50:07 +0000 (02:50 +1100)]
fix issue with disappearing tempo curve at constant tempi.

7 years agotempo before the initial section is always constant.
nick_m [Thu, 15 Dec 2016 15:15:56 +0000 (02:15 +1100)]
tempo before the initial section is always constant.

7 years agoamend incomplete change in previous commit.
nick_m [Thu, 15 Dec 2016 15:01:50 +0000 (02:01 +1100)]
amend incomplete change in previous commit.

7 years agomore work on patch change redisplay.
nick_m [Thu, 15 Dec 2016 14:58:58 +0000 (01:58 +1100)]
more work on patch change redisplay.

- fixes just-introduced undo crash.

7 years agofix thinko in TempoMap::framepos_plus_qn.
nick_m [Thu, 15 Dec 2016 14:04:22 +0000 (01:04 +1100)]
fix thinko in TempoMap::framepos_plus_qn.

- affects region relative time conversion when
  initial meter is non-zero.

7 years agocorrect return syntax
Paul Davis [Thu, 15 Dec 2016 11:57:31 +0000 (11:57 +0000)]
correct return syntax

7 years agostd::list::erase() needs a non-const iterator.;
Paul Davis [Thu, 15 Dec 2016 11:36:55 +0000 (11:36 +0000)]
std::list::erase() needs a non-const iterator.;

at least for some versions of gcc.

7 years agospeed up patch change redisplay when using scroomer / adjusting height.
nick_m [Thu, 15 Dec 2016 11:35:23 +0000 (22:35 +1100)]
speed up patch change redisplay when using scroomer / adjusting height.

- zoom is still a bit slow.

7 years agoand now with erase
Robin Gareus [Thu, 15 Dec 2016 09:57:40 +0000 (10:57 +0100)]
and now with erase

7 years agoC++98 compatible iterator erase
Robin Gareus [Thu, 15 Dec 2016 09:40:45 +0000 (10:40 +0100)]
C++98 compatible iterator erase

7 years agorework request invalidation
Robin Gareus [Thu, 15 Dec 2016 05:11:20 +0000 (06:11 +0100)]
rework request invalidation

This kills 2 birds with 1 stone: Removes the necessity of locks
and makes call_slot() realtime safe (req->invalidation->requests list
push_back). On object destruction, the invalidation-record (IR) itself is
invalidated.

Invalidated IRs are pushed onto a trash-pool and deleted in the event-loop
of the invalidated object (GUI thread) once all requests that reference it
have been processed.

One last detail remains: PBD::signal connect should reference the IR
and disconnect unreference it. This will guarantee that signal emission
will not reference the IR while the pool trash is dropped.

7 years agoAdd a trash pool for invalidation requests.
Robin Gareus [Wed, 14 Dec 2016 21:38:37 +0000 (22:38 +0100)]
Add a trash pool for invalidation requests.

While EventLoop::invalidate_request() does invalidate request in the
request-list. It does *not* invalidate requests in the
per-thread-request-ringbuffer(s).
The invalidation record cannot be deleted in EventLoop::invalidate_request
see 6b5891a78f.

7 years agoNO-OP: re-indent
Robin Gareus [Wed, 14 Dec 2016 21:21:11 +0000 (22:21 +0100)]
NO-OP: re-indent

7 years agoAtomically to invalidate request
Robin Gareus [Wed, 14 Dec 2016 21:19:33 +0000 (22:19 +0100)]
Atomically to invalidate request

Yet another slightly overkill approach, but it /may/ explain crashes.

7 years agoAdd some more invalidation debug messages.
Robin Gareus [Wed, 14 Dec 2016 18:43:12 +0000 (19:43 +0100)]
Add some more invalidation debug messages.

7 years agoThe threading anecdotes - Episode 7
Robin Gareus [Wed, 14 Dec 2016 17:46:01 +0000 (18:46 +0100)]
The threading anecdotes - Episode 7

When do_request() destroys the receiver object, the receiver will
free the invalidation record. So the IR needs to be removed from the list
before executing the request.

Invalid read of size 8
   at: AbstractUI<Gtkmm2ext::UIRequest>::handle_ui_requests() (abstract_ui.cc:242)
   by: BaseUI::request_handler(Glib::IOCondition) (base_ui.cc:141)
   by: sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition>::operator()(Glib::IOCondition const&) const (mem_fun.h:2066)
   by: sigc::adaptor_functor<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition> >::deduce_result_type<Glib::IOCondition const&, void, void, void, void, void, void>::type sigc::adaptor_functor<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition> >::operator()<Glib::IOCondition const&>(Glib::IOCondition const&) const (adaptor_trait.h:89)
   by: sigc::internal::slot_call1<sigc::bound_mem_functor1<bool, BaseUI, Glib::IOCondition>, bool, Glib::IOCondition>::call_it(sigc::internal::slot_rep*, Glib::IOCondition const&) (slot.h:148)
   by: sigc::slot1<bool, Glib::IOCondition>::operator()(Glib::IOCondition const&) const (slot.h:643)
   by: cross_thread_channel_call_receive_slot(_GIOChannel*, GIOCondition, void*) (crossthread.cc:49)
   by: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
   by: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
   by: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.5000.2)
   by: gtk_main (in /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.31)
   by: Gtkmm2ext::UI::run(Receiver&) (gtk_ui.cc:286)
   by main (main.cc:408)
 Addrd1b8 is 24 bytes inside a block of size 48 free'd
   at: operator delete(void*) (vg_replace_malloc.c:576)
   by: PBD::EventLoop::invalidate_request(void*) (event_loop.cc:98)
   by: sigc::internal::trackable_callback_list::~trackable_callback_list() (in /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0)
   by: sigc::trackable::notify_callbacks() (in /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0.0.0)
   by: ProcessorEntry::LuaPluginDisplay::~LuaPluginDisplay() (processor_box.cc:1757)
   by: ProcessorEntry::LuaPluginDisplay::~LuaPluginDisplay() (processor_box.cc:1760)
   by: ProcessorEntry::~ProcessorEntry() (processor_box.cc:251)

7 years agoskip dead threads (if the event remains, it'll be cleaned up below)
Robin Gareus [Wed, 14 Dec 2016 16:48:44 +0000 (17:48 +0100)]
skip dead threads (if the event remains, it'll be cleaned up below)

7 years agofix potential invalid lock
Robin Gareus [Wed, 14 Dec 2016 16:31:31 +0000 (17:31 +0100)]
fix potential invalid lock

7 years agorework locking (fa07233a, 112fba182)
Robin Gareus [Wed, 14 Dec 2016 12:42:45 +0000 (13:42 +0100)]
rework locking (fa07233a112fba182)

For now: use a single lock, which should fix all related crashes.
optimize (with less contended partial locks) if this works.

7 years agoGUI changes to allow user to specify how/if to use SMF track/instrument names during...
Paul Davis [Wed, 14 Dec 2016 12:31:16 +0000 (12:31 +0000)]
GUI changes to allow user to specify how/if to use SMF track/instrument names during import

7 years agochange ordering of options for multichannel import
Paul Davis [Wed, 14 Dec 2016 11:45:37 +0000 (11:45 +0000)]
change ordering of options for multichannel import

7 years agotemporary default value for ImportStatus.midi_track_name_source
Paul Davis [Wed, 14 Dec 2016 11:45:18 +0000 (11:45 +0000)]
temporary default value for ImportStatus.midi_track_name_source

7 years agouse SMF track or instrument names in imported MIDI track names, if requested
Paul Davis [Wed, 14 Dec 2016 11:44:40 +0000 (11:44 +0000)]
use SMF track or instrument names in imported MIDI track names, if requested

7 years agoadd new member to ImportStatus object to allow specifying how to name new MIDI tracks
Paul Davis [Wed, 14 Dec 2016 11:44:01 +0000 (11:44 +0000)]
add new member to ImportStatus object to allow specifying how to name new MIDI tracks

7 years agoadd a new enum to identify how SMF data should be used when naming imported MIDI...
Paul Davis [Wed, 14 Dec 2016 11:43:23 +0000 (11:43 +0000)]
add a new enum to identify how SMF data should be used when naming imported MIDI tracks

7 years agoadd API to Evoral::SMF to retrieve all track/instrument names for use when importing
Paul Davis [Wed, 14 Dec 2016 11:42:54 +0000 (11:42 +0000)]
add API to Evoral::SMF to retrieve all track/instrument names for use when importing

7 years agoextract track and instrument names from SMF while loading
Paul Davis [Wed, 14 Dec 2016 11:42:10 +0000 (11:42 +0000)]
extract track and instrument names from SMF while loading

7 years agoadd braces and warning for unlikely error
Paul Davis [Wed, 14 Dec 2016 11:41:09 +0000 (11:41 +0000)]
add braces and warning for unlikely error

7 years agofix incorrect test for textual meta events in libsmf
Paul Davis [Wed, 14 Dec 2016 11:40:44 +0000 (11:40 +0000)]
fix incorrect test for textual meta events in libsmf

7 years agobraces please
Paul Davis [Wed, 14 Dec 2016 11:40:27 +0000 (11:40 +0000)]
braces please

7 years agobraces, please
Paul Davis [Wed, 14 Dec 2016 11:40:07 +0000 (11:40 +0000)]
braces, please

7 years agofree track name/instrument string memory when necessary
Paul Davis [Wed, 14 Dec 2016 11:38:31 +0000 (11:38 +0000)]
free track name/instrument string memory when necessary

7 years agoadd track and instrument name members to smf_track_t
Paul Davis [Wed, 14 Dec 2016 11:37:35 +0000 (11:37 +0000)]
add track and instrument name members to smf_track_t

7 years agoimproving logic/flow for SMF type 1 files part 1:
Paul Davis [Tue, 13 Dec 2016 16:48:20 +0000 (16:48 +0000)]
improving logic/flow for SMF type 1 files part 1:

check num tracks for type1 and offer multichannel option if appropriate

7 years agorelease locks before deleting record
Robin Gareus [Wed, 14 Dec 2016 01:25:13 +0000 (02:25 +0100)]
release locks before deleting record

7 years agoamend prev commit
Robin Gareus [Tue, 13 Dec 2016 23:51:40 +0000 (00:51 +0100)]
amend prev commit

7 years agomutex 'er up
Robin Gareus [Tue, 13 Dec 2016 22:46:55 +0000 (23:46 +0100)]
mutex 'er up

Some overzealous locking to track down RequestObject related crashes.

bc0fa4d689a4 wrongly locked the current event loop's
request_invalidation_lock instead of the invalidation's list lock.

Also Abstract UI is able to delete requests concurrently with with
EventLoop invalidation.
e.g. PortManager::PortRegisteredOrUnregistered  and GlobalPortMatrixWindow
so the lock needs to be exposed.

If this solves various issues, mutexes should to be consolidated
(request_buffer_map_lock + request_invalidation_lock) and be chosen
such that there is as little contention as possible.

7 years agotest diff for patch change performance when caching colours.
nick_m [Tue, 13 Dec 2016 17:05:08 +0000 (04:05 +1100)]
test diff for patch change performance when caching colours.

7 years agowhen dragging or copying multiple regions, respect position lock style.
nick_m [Tue, 13 Dec 2016 15:08:59 +0000 (02:08 +1100)]
when dragging or copying multiple regions, respect position lock style.

- music-locked regions are moved by drag beat distance
  (will conform to tempo changes over the drag distance)
  audio-locked regions are moved by frame distance.

7 years agochanges to adapt to modified version of GTK/Quartz which uses only MOD2 for Command...
Paul Davis [Tue, 13 Dec 2016 11:22:51 +0000 (06:22 -0500)]
changes to adapt to modified version of GTK/Quartz which uses only MOD2 for Command, everywhere.

The default version of GTK2/Quartz uses MOD2+META for keys and MOD2 for scroll, which is
basically insane

7 years agoFurther fixes to non-cxx11 enabled builds
Tim Mayberry [Tue, 13 Dec 2016 07:10:30 +0000 (17:10 +1000)]
Further fixes to non-cxx11 enabled builds

Hopefully all that is necessary this time

7 years agoFix for non-cxx11 enabled builds
Tim Mayberry [Tue, 13 Dec 2016 06:50:41 +0000 (16:50 +1000)]
Fix for non-cxx11 enabled builds

7 years agoAdd option to Zoom to Selection on double click
Tim Mayberry [Tue, 13 Dec 2016 02:02:57 +0000 (12:02 +1000)]
Add option to Zoom to Selection on double click

Currently implemented for Region and Range selections.

The new option is false/off by default to maintain existing behaviour. I'm not
sure it should require another option, perhaps Zoom to Selection should be the
default and accessing the region properties dialog can be via Modifier+double
click, but further changes can be made on user feedback etc.

Related: #7112

7 years agoChange Zoom to Selection action (Z key) to zoom on both axes
Tim Mayberry [Mon, 12 Dec 2016 23:20:44 +0000 (09:20 +1000)]
Change Zoom to Selection action (Z key) to zoom on both axes

Add Zoom to Selection (Horizontal) action to access previous behavior.

Remove Editor::temporal_zoom_region as it was duplicate code and broken for
both_axes

Should Resolve: #7112

7 years agoFix layered-record undo, include changes to existing region(s)
Robin Gareus [Tue, 13 Dec 2016 01:33:07 +0000 (02:33 +0100)]
Fix layered-record undo, include changes to existing region(s)

7 years agoFix possible crash when removing ports with jack1
Robin Gareus [Mon, 12 Dec 2016 21:47:16 +0000 (22:47 +0100)]
Fix possible crash when removing ports with jack1

7 years agoAdd Slavable::AssignmentChanged signal to notify when a slavable is assigned/unassign...
Paul Davis [Mon, 12 Dec 2016 18:43:47 +0000 (18:43 +0000)]
Add Slavable::AssignmentChanged signal to notify when a slavable is assigned/unassigned to/from a master

7 years agoUI tweak for the spacer at the bottom of the master bus.
Ben Loftis [Mon, 12 Dec 2016 18:16:43 +0000 (12:16 -0600)]
UI tweak for the spacer at the bottom of the master bus.

7 years agoonly update MidiRegion length_beats in partial copy ctor if there is an offset.
nick_m [Mon, 12 Dec 2016 17:36:07 +0000 (04:36 +1100)]
only update MidiRegion length_beats in partial copy ctor if there is an offset.

7 years agoonly set the exact musical position of the primary region for move/copy drag.
nick_m [Mon, 12 Dec 2016 17:33:58 +0000 (04:33 +1100)]
only set the exact musical position of the primary region for move/copy drag.

7 years agoonly recalculate MidiRegion start_beats if there is an offset in the 'part-of' ctor.
nick_m [Mon, 12 Dec 2016 15:15:34 +0000 (02:15 +1100)]
only recalculate MidiRegion start_beats if there is an offset in the 'part-of' ctor.

- when drag-copying MIDI regions, a partial region ctor is used
  which can lead to _start_beats being off by a sample.
  this in turn leads to 7168 happening, but only if magnetic snap
  is used and the regions are copied as a group.
  this should fix 7168, but the magnetic snap part is not yet addressed.

7 years agoTowards making tape-tracks work again..
Robin Gareus [Mon, 12 Dec 2016 02:20:29 +0000 (03:20 +0100)]
Towards making tape-tracks work again..

7 years agoFix a potential deadlock/crash (here tape-track peak-file)
Robin Gareus [Mon, 12 Dec 2016 02:13:16 +0000 (03:13 +0100)]
Fix a potential deadlock/crash (here tape-track peak-file)

read_peaks_with_fpp() already holds _lock, build_peaks_from_scratch()
takes the _lock again.

Depending on glib[mm] and the threading lib it may either result in a
deadlock, or with EDEADLK in undefined behavior when a
non-recursive lock is released twice.

7 years agoFix potential deadlock on session-load
Robin Gareus [Sun, 11 Dec 2016 23:09:24 +0000 (00:09 +0100)]
Fix potential deadlock on session-load

7 years agodisallow placement of audio-locked tempi within a frame of any other.
nick_m [Sun, 11 Dec 2016 15:37:26 +0000 (02:37 +1100)]
disallow placement of audio-locked tempi within a frame of any other.

7 years agosort tempo curves initially as well.
nick_m [Sun, 11 Dec 2016 15:03:19 +0000 (02:03 +1100)]
sort tempo curves initially as well.

7 years agofix loop/crash when dragging an audio-locked tempo over a music-locked one while...
nick_m [Sun, 11 Dec 2016 15:01:12 +0000 (02:01 +1100)]
fix loop/crash when dragging an audio-locked tempo over a music-locked one while snapped to grid.

7 years agono-op - rename TempoMap::set_active_tempos -> TempoMap::set_active_tempi
nick_m [Sun, 11 Dec 2016 14:59:23 +0000 (01:59 +1100)]
no-op - rename TempoMap::set_active_tempos -> TempoMap::set_active_tempi

7 years agoclean up some odd logic.
nick_m [Sun, 11 Dec 2016 14:57:41 +0000 (01:57 +1100)]
clean up some odd logic.

7 years agoamend previous commit
nick_m [Thu, 24 Nov 2016 14:39:22 +0000 (01:39 +1100)]
amend previous commit