Ben Loftis [Sun, 18 Dec 2016 04:32:38 +0000 (22:32 -0600)]
Transport Layout: Attempts to standardize button sizes and padding.
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
Ben Loftis [Sun, 18 Dec 2016 01:16:09 +0000 (19:16 -0600)]
Mini-timeline: Use timeline colors from config
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
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
Robin Gareus [Sat, 17 Dec 2016 23:06:39 +0000 (00:06 +0100)]
Prepare configurable mini-timeline time-span
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
Robin Gareus [Sat, 17 Dec 2016 12:00:33 +0000 (13:00 +0100)]
fix gcc4 compilation (local type used in template)
Robin Gareus [Sat, 17 Dec 2016 00:43:24 +0000 (01:43 +0100)]
Refine transport tool bar layout
Robin Gareus [Sat, 17 Dec 2016 00:43:09 +0000 (01:43 +0100)]
Prepare mini-timeline widget for toolbar
Robin Gareus [Sat, 17 Dec 2016 00:40:22 +0000 (01:40 +0100)]
remove cruft
Robin Gareus [Mon, 12 Dec 2016 20:48:29 +0000 (21:48 +0100)]
Add UI to set global track layered mode
Robin Gareus [Mon, 12 Dec 2016 18:44:03 +0000 (19:44 +0100)]
Hide/remove per-track record-mode in favor of global setting.
Robin Gareus [Sat, 17 Dec 2016 01:31:41 +0000 (02:31 +0100)]
Move selection/punch clocks to editor Sidebar
Robin Gareus [Sun, 11 Dec 2016 16:24:30 +0000 (17:24 +0100)]
Commence transport tool bar re-layout
Robin Gareus [Sun, 11 Dec 2016 00:33:23 +0000 (01:33 +0100)]
Rework shuttle control display
Robin Gareus [Fri, 16 Dec 2016 14:02:29 +0000 (15:02 +0100)]
Add API to query editor's playhead cursor position
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
Paul Davis [Fri, 16 Dec 2016 16:49:27 +0000 (16:49 +0000)]
add copy constructor, operator= and a clean ::dump() method for TempoMap
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
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
Paul Davis [Fri, 16 Dec 2016 14:14:08 +0000 (14:14 +0000)]
tweak presentation of SMF tempo option
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
Paul Davis [Fri, 16 Dec 2016 13:45:43 +0000 (13:45 +0000)]
"toll free bridging" between smf_tempo_t and Evoral::SMF::Tempo
Paul Davis [Fri, 16 Dec 2016 10:43:52 +0000 (10:43 +0000)]
expose SMF tempo information in Evoral::SMF
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
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
Paul Davis [Thu, 15 Dec 2016 17:22:48 +0000 (17:22 +0000)]
add comments about limitations for Evoral::SMF and tracks
Robin Gareus [Fri, 16 Dec 2016 00:56:15 +0000 (01:56 +0100)]
MIDI tracer actually changes the event-loop
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>
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.
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
Paul Davis [Thu, 15 Dec 2016 16:35:37 +0000 (16:35 +0000)]
add ::use_count() method to InvalidationRecord
nick_m [Thu, 15 Dec 2016 15:56:58 +0000 (02:56 +1100)]
be a bit less flickery when redrawing tempo/meter markers.
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.
nick_m [Thu, 15 Dec 2016 15:52:39 +0000 (02:52 +1100)]
revert
c3ab67dd now that this misbehaviour is understood.
nick_m [Thu, 15 Dec 2016 15:50:07 +0000 (02:50 +1100)]
fix issue with disappearing tempo curve at constant tempi.
nick_m [Thu, 15 Dec 2016 15:15:56 +0000 (02:15 +1100)]
tempo before the initial section is always constant.
nick_m [Thu, 15 Dec 2016 15:01:50 +0000 (02:01 +1100)]
amend incomplete change in previous commit.
nick_m [Thu, 15 Dec 2016 14:58:58 +0000 (01:58 +1100)]
more work on patch change redisplay.
- fixes just-introduced undo crash.
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.
Paul Davis [Thu, 15 Dec 2016 11:57:31 +0000 (11:57 +0000)]
correct return syntax
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.
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.
Robin Gareus [Thu, 15 Dec 2016 09:57:40 +0000 (10:57 +0100)]
and now with erase
Robin Gareus [Thu, 15 Dec 2016 09:40:45 +0000 (10:40 +0100)]
C++98 compatible iterator erase
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.
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.
Robin Gareus [Wed, 14 Dec 2016 21:21:11 +0000 (22:21 +0100)]
NO-OP: re-indent
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.
Robin Gareus [Wed, 14 Dec 2016 18:43:12 +0000 (19:43 +0100)]
Add some more invalidation debug messages.
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)
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)
Robin Gareus [Wed, 14 Dec 2016 16:31:31 +0000 (17:31 +0100)]
fix potential invalid lock
Robin Gareus [Wed, 14 Dec 2016 12:42:45 +0000 (13:42 +0100)]
rework locking (
fa07233a,
112fba182)
For now: use a single lock, which should fix all related crashes.
optimize (with less contended partial locks) if this works.
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
Paul Davis [Wed, 14 Dec 2016 11:45:37 +0000 (11:45 +0000)]
change ordering of options for multichannel import
Paul Davis [Wed, 14 Dec 2016 11:45:18 +0000 (11:45 +0000)]
temporary default value for ImportStatus.midi_track_name_source
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
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
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
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
Paul Davis [Wed, 14 Dec 2016 11:42:10 +0000 (11:42 +0000)]
extract track and instrument names from SMF while loading
Paul Davis [Wed, 14 Dec 2016 11:41:09 +0000 (11:41 +0000)]
add braces and warning for unlikely error
Paul Davis [Wed, 14 Dec 2016 11:40:44 +0000 (11:40 +0000)]
fix incorrect test for textual meta events in libsmf
Paul Davis [Wed, 14 Dec 2016 11:40:27 +0000 (11:40 +0000)]
braces please
Paul Davis [Wed, 14 Dec 2016 11:40:07 +0000 (11:40 +0000)]
braces, please
Paul Davis [Wed, 14 Dec 2016 11:38:31 +0000 (11:38 +0000)]
free track name/instrument string memory when necessary
Paul Davis [Wed, 14 Dec 2016 11:37:35 +0000 (11:37 +0000)]
add track and instrument name members to smf_track_t
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
Robin Gareus [Wed, 14 Dec 2016 01:25:13 +0000 (02:25 +0100)]
release locks before deleting record
Robin Gareus [Tue, 13 Dec 2016 23:51:40 +0000 (00:51 +0100)]
amend prev commit
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.
nick_m [Tue, 13 Dec 2016 17:05:08 +0000 (04:05 +1100)]
test diff for patch change performance when caching colours.
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.
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
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
Tim Mayberry [Tue, 13 Dec 2016 06:50:41 +0000 (16:50 +1000)]
Fix for non-cxx11 enabled builds
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
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
Robin Gareus [Tue, 13 Dec 2016 01:33:07 +0000 (02:33 +0100)]
Fix layered-record undo, include changes to existing region(s)
Robin Gareus [Mon, 12 Dec 2016 21:47:16 +0000 (22:47 +0100)]
Fix possible crash when removing ports with jack1
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
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.
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.
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.
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.
Robin Gareus [Mon, 12 Dec 2016 02:20:29 +0000 (03:20 +0100)]
Towards making tape-tracks work again..
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.
Robin Gareus [Sun, 11 Dec 2016 23:09:24 +0000 (00:09 +0100)]
Fix potential deadlock on session-load
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.
nick_m [Sun, 11 Dec 2016 15:03:19 +0000 (02:03 +1100)]
sort tempo curves initially as well.
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.
nick_m [Sun, 11 Dec 2016 14:59:23 +0000 (01:59 +1100)]
no-op - rename TempoMap::set_active_tempos -> TempoMap::set_active_tempi
nick_m [Sun, 11 Dec 2016 14:57:41 +0000 (01:57 +1100)]
clean up some odd logic.
nick_m [Thu, 24 Nov 2016 14:39:22 +0000 (01:39 +1100)]
amend previous commit
nick_m [Thu, 24 Nov 2016 14:38:19 +0000 (01:38 +1100)]
rename MetricSection movable -> initial, but of course initial is !movable..
Robin Gareus [Sun, 11 Dec 2016 14:46:53 +0000 (15:46 +0100)]
Add support for MacVST hidden/favorites
Robin Gareus [Sun, 11 Dec 2016 14:45:42 +0000 (15:45 +0100)]
Add a small tool to experiment with libcanvas
nick_m [Sun, 11 Dec 2016 12:57:50 +0000 (23:57 +1100)]
there is no need to do a full set_colors() in MidiGhostRegion ctor.