6b5891a78f
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)
2016-12-14 18:46:01 +01:00
518c31eeb7
skip dead threads (if the event remains, it'll be cleaned up below)
2016-12-14 17:48:44 +01:00
036390f4c2
fix potential invalid lock
2016-12-14 17:31:31 +01:00
7a1ff7ce8f
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.
2016-12-14 13:43:20 +01:00
9e4b972286
GUI changes to allow user to specify how/if to use SMF track/instrument names during import
2016-12-14 12:31:16 +00:00
9a7823f139
change ordering of options for multichannel import
2016-12-14 11:46:26 +00:00
42d5573e78
temporary default value for ImportStatus.midi_track_name_source
2016-12-14 11:46:26 +00:00
f3b3a411d0
use SMF track or instrument names in imported MIDI track names, if requested
2016-12-14 11:46:26 +00:00
6ea7f37c6b
add new member to ImportStatus object to allow specifying how to name new MIDI tracks
2016-12-14 11:46:26 +00:00
721f3270c3
add a new enum to identify how SMF data should be used when naming imported MIDI tracks
2016-12-14 11:46:26 +00:00
d2fd01c241
add API to Evoral::SMF to retrieve all track/instrument names for use when importing
2016-12-14 11:46:26 +00:00
7e0dbd06db
extract track and instrument names from SMF while loading
2016-12-14 11:46:26 +00:00
24160a3b85
add braces and warning for unlikely error
2016-12-14 11:46:26 +00:00
ff6f8ca6c4
fix incorrect test for textual meta events in libsmf
2016-12-14 11:46:26 +00:00
54ef5fadc2
braces please
2016-12-14 11:46:26 +00:00
d5074be4f1
braces, please
2016-12-14 11:46:26 +00:00
8002a0c66e
free track name/instrument string memory when necessary
2016-12-14 11:46:26 +00:00
28caef7d81
add track and instrument name members to smf_track_t
2016-12-14 11:46:26 +00:00
eb58c4108f
improving logic/flow for SMF type 1 files part 1:
...
check num tracks for type1 and offer multichannel option if appropriate
2016-12-14 11:46:26 +00:00
dd525d1613
release locks before deleting record
2016-12-14 02:25:13 +01:00
112fba182f
amend prev commit
2016-12-14 00:51:40 +01:00
fa07233a17
mutex 'er up
...
Some overzealous locking to track down RequestObject related crashes.
bc0fa4d689
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.
2016-12-13 23:47:07 +01:00
nick_m
176625d9e0
test diff for patch change performance when caching colours.
2016-12-14 04:05:08 +11:00
nick_m
c518bc3fb7
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.
2016-12-14 02:08:59 +11:00
545f5bee87
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
2016-12-13 07:02:08 -05:00
b34a614df4
Further fixes to non-cxx11 enabled builds
...
Hopefully all that is necessary this time
2016-12-13 17:10:30 +10:00
fced0887aa
Fix for non-cxx11 enabled builds
2016-12-13 16:50:41 +10:00
0eff7d4a0c
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
2016-12-13 13:02:04 +10:00
89623923bd
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
2016-12-13 12:25:03 +10:00
989f934c38
Fix layered-record undo, include changes to existing region(s)
2016-12-13 02:33:07 +01:00
8276a4658a
Fix possible crash when removing ports with jack1
2016-12-12 22:47:16 +01:00
e37bfffca5
Add Slavable::AssignmentChanged signal to notify when a slavable is assigned/unassigned to/from a master
2016-12-12 18:43:55 +00:00
afa6720288
UI tweak for the spacer at the bottom of the master bus.
2016-12-12 12:16:43 -06:00
nick_m
e9deb82ef6
only update MidiRegion length_beats in partial copy ctor if there is an offset.
2016-12-13 04:36:07 +11:00
nick_m
44e8181c36
only set the exact musical position of the primary region for move/copy drag.
2016-12-13 04:33:58 +11:00
nick_m
a4d8cc2e04
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.
2016-12-13 02:15:34 +11:00
f22d852d8c
Towards making tape-tracks work again..
2016-12-12 03:20:29 +01:00
d3803c54de
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.
2016-12-12 03:13:16 +01:00
b52bf1a42c
Fix potential deadlock on session-load
2016-12-12 00:09:38 +01:00
nick_m
e4d6e4a87f
disallow placement of audio-locked tempi within a frame of any other.
2016-12-12 02:37:26 +11:00
nick_m
9c5e1ffb0d
sort tempo curves initially as well.
2016-12-12 02:07:00 +11:00
nick_m
9598f2a811
fix loop/crash when dragging an audio-locked tempo over a music-locked one while snapped to grid.
2016-12-12 02:07:00 +11:00
nick_m
0d7b298fbe
no-op - rename TempoMap::set_active_tempos -> TempoMap::set_active_tempi
2016-12-12 02:07:00 +11:00
nick_m
4d625d35b6
clean up some odd logic.
2016-12-12 02:07:00 +11:00
nick_m
782b28a1a8
amend previous commit
2016-12-12 02:07:00 +11:00
nick_m
34e41a3ca6
rename MetricSection movable -> initial, but of course initial is !movable..
2016-12-12 02:07:00 +11:00
0c54e56f96
Add support for MacVST hidden/favorites
2016-12-11 15:52:56 +01:00
2481db7a7f
Add a small tool to experiment with libcanvas
2016-12-11 15:52:56 +01:00
nick_m
165645495c
there is no need to do a full set_colors() in MidiGhostRegion ctor.
2016-12-11 23:57:50 +11:00
nick_m
22f17a3007
tempo curve fiddling.
2016-12-11 23:55:13 +11:00