ardour.git
8 years agoexpose count widgets for duplicate track dialog
Paul Davis [Sat, 14 Nov 2015 15:35:07 +0000 (10:35 -0500)]
expose count widgets for duplicate track dialog

8 years agopartial dialog to control track duplication
Paul Davis [Sat, 14 Nov 2015 15:29:50 +0000 (10:29 -0500)]
partial dialog to control track duplication

8 years agolinux installer tweak:
Robin Gareus [Fri, 13 Nov 2015 23:36:19 +0000 (17:36 -0600)]
linux installer tweak:

check architecture before gcc4/5 compat

8 years agoinitial/partial implementation of duplicate track/bus
Paul Davis [Fri, 13 Nov 2015 21:14:42 +0000 (16:14 -0500)]
initial/partial implementation of duplicate track/bus

8 years agosubstantial part of infrastructure required for track/bus duplication
Paul Davis [Fri, 13 Nov 2015 21:14:09 +0000 (16:14 -0500)]
substantial part of infrastructure required for track/bus duplication

This includes removing the removal of ID values in XML, and its replacement with
thread-local forcing of ID resets, implemented in a previous commit

8 years agofix return value from Route::save_as_template()
Paul Davis [Fri, 13 Nov 2015 21:12:53 +0000 (16:12 -0500)]
fix return value from Route::save_as_template()

8 years agoFix #6673 - another prematurely closed undo transaction.
nick_m [Fri, 13 Nov 2015 16:14:23 +0000 (03:14 +1100)]
Fix #6673 - another prematurely closed undo transaction.

- add_midi_region used to commit, resulting in
  _region->set_position() adding a command when there was
  no current transaction. The sub-bug here was that repeatedly
  calling set_position() on the new region resulted in nonsensical
  automation movement after the drag.

8 years agoArdour::Region - add method required to fix #6673.
nick_m [Fri, 13 Nov 2015 16:05:53 +0000 (03:05 +1100)]
Ardour::Region - add method required to fix #6673.

8 years agofix edge-case in Dummy-backend random number generator initialization
Robin Gareus [Thu, 12 Nov 2015 15:49:40 +0000 (09:49 -0600)]
fix edge-case in Dummy-backend random number generator initialization

8 years agoprovide a mechanism to force ID regeneration/reset in PBD::Stateful when settingthe...
Paul Davis [Thu, 12 Nov 2015 15:24:41 +0000 (10:24 -0500)]
provide a mechanism to force ID regeneration/reset in PBD::Stateful when settingthe ID object from XML or string sources

8 years agoremove requirement for transport speed to be 1.0 when generating click (metronome)
Paul Davis [Thu, 12 Nov 2015 14:46:14 +0000 (09:46 -0500)]
remove requirement for transport speed to be 1.0 when generating click (metronome)

This is experimental and may not work

8 years agoUse XMLNode::remove_child_and_delete in Stateful::add_extra_xml
Tim Mayberry [Sat, 7 Nov 2015 05:26:27 +0000 (15:26 +1000)]
Use XMLNode::remove_child_and_delete in Stateful::add_extra_xml

As the node being replaced has been added with XMLNode::add_child_nocopy the
node also needs to be deleted or a memory leak occurs.

8 years agoUse constructor initialization list in Stateful class
Tim Mayberry [Fri, 6 Nov 2015 12:16:27 +0000 (22:16 +1000)]
Use constructor initialization list in Stateful class

8 years agoReplace spaces with tabs in pbd/stateful.h
Tim Mayberry [Fri, 6 Nov 2015 10:04:48 +0000 (20:04 +1000)]
Replace spaces with tabs in pbd/stateful.h

8 years agomore correct semantics for reserved IO name checking
Paul Davis [Mon, 9 Nov 2015 13:24:35 +0000 (08:24 -0500)]
more correct semantics for reserved IO name checking

8 years agoslightly improved fix for reserved name handling
Paul Davis [Sun, 8 Nov 2015 03:23:23 +0000 (22:23 -0500)]
slightly improved fix for reserved name handling

8 years agodon't force rename of reserved route/IO names if the name isn't taken yet
Paul Davis [Sun, 8 Nov 2015 03:15:59 +0000 (22:15 -0500)]
don't force rename of reserved route/IO names if the name isn't taken yet

8 years agoMackie Control: Initialize vpot assignment on start-up.
Len Ovens [Sat, 7 Nov 2015 03:28:24 +0000 (19:28 -0800)]
Mackie Control: Initialize vpot assignment on start-up.

8 years agoMackie Control: Add send functionality to vpot assign section.
Len Ovens [Sat, 7 Nov 2015 00:18:13 +0000 (16:18 -0800)]
Mackie Control: Add send functionality to vpot assign section.

8 years agoAdd some newly introduced sources to our MSVC project (libardour)
John Emmas [Fri, 6 Nov 2015 08:22:58 +0000 (08:22 +0000)]
Add some newly introduced sources to our MSVC project (libardour)

8 years agoMerge branch 'chaot4-feature_open_dialog_before_chat'
Paul Davis [Wed, 4 Nov 2015 22:53:15 +0000 (17:53 -0500)]
Merge branch 'chaot4-feature_open_dialog_before_chat'

8 years agoShow info dialog when opening chat via Help -> Chat.
André Nusser [Mon, 2 Nov 2015 21:51:45 +0000 (22:51 +0100)]
Show info dialog when opening chat via Help -> Chat.

This should clarify for users that in IRC you post your question and
wait, and not leave after a few minutes.

8 years agoMerge branch 'chaot4-f_overwrite_dialog_improvement'
Paul Davis [Wed, 4 Nov 2015 22:52:10 +0000 (17:52 -0500)]
Merge branch 'chaot4-f_overwrite_dialog_improvement'

8 years agoRemove explicit positioning of overwrite_file_dialog.
André Nusser [Sun, 1 Nov 2015 21:24:02 +0000 (22:24 +0100)]
Remove explicit positioning of overwrite_file_dialog.

ArdourDialog takes care of this.

8 years agoFix ordering of buttons in midi export dialog.
André Nusser [Sun, 1 Nov 2015 21:23:01 +0000 (22:23 +0100)]
Fix ordering of buttons in midi export dialog.

[Cancel] [Save] instead of [Save] [Cancel].

8 years agoImprove behavior of overwrite_file_dialog.
André Nusser [Sun, 1 Nov 2015 20:00:05 +0000 (21:00 +0100)]
Improve behavior of overwrite_file_dialog.

- Make overwrite file dialogs transient.
- Cancelling the overwrite dialog doesn't close initial dialog.

8 years agono-op; reordering of class forward declarations in editor.h.
André Nusser [Sun, 1 Nov 2015 20:56:09 +0000 (21:56 +0100)]
no-op; reordering of class forward declarations in editor.h.

8 years agoMerge branch 'chaot4-fix_duplicate_fencepost_error'
Paul Davis [Wed, 4 Nov 2015 22:50:24 +0000 (17:50 -0500)]
Merge branch 'chaot4-fix_duplicate_fencepost_error'

8 years agoFix fencepost error in duplicate_some_regions. Adapt start position.
André Nusser [Wed, 28 Oct 2015 21:09:39 +0000 (22:09 +0100)]
Fix fencepost error in duplicate_some_regions. Adapt start position.

8 years agoMake duplicate start at position, not position + 1. (libs part)
André Nusser [Wed, 28 Oct 2015 21:06:46 +0000 (22:06 +0100)]
Make duplicate start at position, not position + 1. (libs part)

8 years agoMerge branch 'chaot4-fix_click_gain_entry_enter'
Paul Davis [Wed, 4 Nov 2015 22:49:24 +0000 (17:49 -0500)]
Merge branch 'chaot4-fix_click_gain_entry_enter'

8 years agoLet Entry of FaderOption react on ENTER and allow only numerical input.
André Nusser [Wed, 4 Nov 2015 22:10:27 +0000 (23:10 +0100)]
Let Entry of FaderOption react on ENTER and allow only numerical input.

This enables setting click gain and solo gain in the preferences using
the text field. -- fixes #6668

8 years agoadd required header
Paul Davis [Wed, 4 Nov 2015 12:58:10 +0000 (07:58 -0500)]
add required header

8 years agolibardour wrapper for EBUr128 VAMP plugin
Robin Gareus [Tue, 3 Nov 2015 18:20:00 +0000 (19:20 +0100)]
libardour wrapper for EBUr128 VAMP plugin

8 years agoadd basic VAMP plugin for EBUr128 analysis
Robin Gareus [Tue, 3 Nov 2015 06:51:39 +0000 (07:51 +0100)]
add basic VAMP plugin for EBUr128 analysis

FeatureSet will be extended to report detailed analysis.

8 years agoGUI checkbox to disable plugins
Robin Gareus [Tue, 3 Nov 2015 07:02:22 +0000 (08:02 +0100)]
GUI checkbox to disable plugins

for the benefit of Windows and OSX users and everyone else who does
not run Ardour from the commandline.

8 years agoupdate midi channel button display when mode changes
Robin Gareus [Tue, 3 Nov 2015 18:16:06 +0000 (19:16 +0100)]
update midi channel button display when mode changes

8 years agoClean up selection history in Editor destructor.
nick_m [Mon, 2 Nov 2015 18:25:15 +0000 (05:25 +1100)]
Clean up selection history in Editor destructor.

8 years agoAutomationList::set_automation_state () only needs a memento for toggled.
nick_m [Mon, 2 Nov 2015 17:18:09 +0000 (04:18 +1100)]
AutomationList::set_automation_state () only needs a memento for toggled.

8 years agoClass 'PhaseControllable' needs to be importable since it gets referenced outside...
John Emmas [Mon, 2 Nov 2015 11:27:43 +0000 (11:27 +0000)]
Class 'PhaseControllable' needs to be importable since it gets referenced outside of libardour

Specifically, 'PhaseControllable::channel()' and 'PhaseControllable::set_channel()' get called from 'mackie/strip.cc'

At some point we might also need to do this for the related classes (SoloControllable and MuteControllable) although it doesn't seem to be needed right at this moment.

8 years agofix crash when cleaning up canvas items
Robin Gareus [Mon, 2 Nov 2015 04:15:55 +0000 (05:15 +0100)]
fix crash when cleaning up canvas items

Backport from Mixbus. In Ardour this does not currently matter
since there is no top-level canvas destroyed top-down.

...
Editor::session_going_away
MixerStrip::~MixerStrip
MixbusStripCanvas::~MixbusStripCanvas
ArdourCanvas::GtkCanvas::~GtkCanvas
ArdourCanvas::Canvas::~Canvas
ArdourCanvas::Root::~Root
ArdourCanvas::Container::~Container
ArdourCanvas::Item::~Item
ArdourCanvas::Item::clear_items
GtkCanvas::item_going_away()
queue_draw_item_area()

..expose can take place async to garbage collection: crash in one of the
items.

8 years agoDon't handle possible phase change if no audio channels in mackie control
Len Ovens [Mon, 2 Nov 2015 03:25:45 +0000 (19:25 -0800)]
Don't handle possible phase change if no audio channels in mackie control

8 years agoFix Mackie surface phase control for flip and more than one audio channel.
Len Ovens [Sun, 1 Nov 2015 23:30:36 +0000 (15:30 -0800)]
Fix Mackie surface phase control for flip and more than one audio channel.

8 years agoAdded Phase control mackie controls as part of the Trim (track) vpot assignment.
Len Ovens [Sun, 1 Nov 2015 21:35:02 +0000 (13:35 -0800)]
Added Phase control mackie controls as part of the Trim (track) vpot assignment.

8 years agoFix missing undo for record mute automation.
nick_m [Sun, 1 Nov 2015 18:34:09 +0000 (05:34 +1100)]
Fix missing undo for record mute automation.

8 years agoClean up _before XMLNode in AutomationList if no automation write occurred.
nick_m [Sun, 1 Nov 2015 15:12:54 +0000 (02:12 +1100)]
Clean up _before XMLNode in AutomationList if no automation write occurred.

8 years agoAutomation watch sets position for new write pass when transport stopped.
nick_m [Sun, 1 Nov 2015 12:21:08 +0000 (23:21 +1100)]
Automation watch sets position for new write pass when transport stopped.

8 years agoRevert starting write pass only in write mode when transport located.
nick_m [Sun, 1 Nov 2015 12:13:40 +0000 (23:13 +1100)]
Revert starting write pass only in write mode when transport located.

8 years agoGrey out unavailable note context menu items rather than hiding them.
nick_m [Sat, 31 Oct 2015 19:06:31 +0000 (06:06 +1100)]
Grey out unavailable note context menu items rather than hiding them.

8 years agoClarify context menu for midi notes.
nick_m [Sat, 31 Oct 2015 18:22:55 +0000 (05:22 +1100)]
Clarify context menu for midi notes.

- right click on a note selects it if unselected or selection empty.

- note_context_menu is shown as described in #6348

8 years agoAdd comment to MRV snap workaround.
nick_m [Sat, 31 Oct 2015 14:43:13 +0000 (01:43 +1100)]
Add comment to MRV snap workaround.

8 years agoFix snap modifiers not working on notes when grid is set to off.
nick_m [Fri, 30 Oct 2015 19:02:54 +0000 (06:02 +1100)]
Fix snap modifiers not working on notes when grid is set to off.

8 years agoHandle paste from non-toggled to boolean automation track.
nick_m [Fri, 30 Oct 2015 16:54:18 +0000 (03:54 +1100)]
Handle paste from non-toggled to boolean automation track.

- sort-of fixes #6431

8 years agosuspend timers while flushing the gtk-event queue.
Robin Gareus [Fri, 30 Oct 2015 14:54:54 +0000 (15:54 +0100)]
suspend timers while flushing the gtk-event queue.

This fixes an issues where Ardour never completes to flush the GUI event
queue due to rapid updates for meters and similar events.

ARDOUR_UI::load_session() never returned and the complete session
ran inside Gtkmm2ext::UI::flush_pending(), this later causes a crash
at exit.

as side effect, this also speeds up session load.

8 years agoRAII Timer Suspend wrapper
Robin Gareus [Fri, 30 Oct 2015 14:50:46 +0000 (15:50 +0100)]
RAII Timer Suspend wrapper

8 years agoadd API to suspend timers signal emission.
Robin Gareus [Fri, 30 Oct 2015 14:50:12 +0000 (15:50 +0100)]
add API to suspend timers signal emission.

8 years ago"End" -> "end" in end point trim command name.
nick_m [Fri, 30 Oct 2015 12:43:09 +0000 (23:43 +1100)]
"End" -> "end" in end point trim command name.

8 years agoUse automation line's frame of reference for y position.
nick_m [Fri, 30 Oct 2015 10:14:16 +0000 (21:14 +1100)]
Use automation line's frame of reference for y position.

- removes the need for 'pixel hunting' wrt NAME_HIGHLIGHT_SIZE.
- new control points generated by clicking on a line are placed
  where the verbose canvas cursor says they are.

8 years agoDont do duplocate calls to MidiRegionView::trim_front_ending () in TrimDrag.
nick_m [Thu, 29 Oct 2015 17:01:44 +0000 (04:01 +1100)]
Dont do duplocate calls to MidiRegionView::trim_front_ending () in TrimDrag.

- fixes #6658
- also leaves undo history alone if point trim does nothing.

8 years agoFix reversed ratio in last commit.
nick_m [Thu, 29 Oct 2015 13:01:33 +0000 (00:01 +1100)]
Fix reversed ratio in last commit.

8 years agoStart line drag using canvas y coords.
nick_m [Thu, 29 Oct 2015 12:37:01 +0000 (23:37 +1100)]
Start line drag using canvas y coords.

- fixes #5759

8 years agorework dbf28e3 (hidden parameters)
Robin Gareus [Wed, 28 Oct 2015 20:25:01 +0000 (21:25 +0100)]
rework dbf28e3 (hidden parameters)

8 years agonote to self: at least test compilation before git push.
Robin Gareus [Wed, 28 Oct 2015 18:00:59 +0000 (19:00 +0100)]
note to self: at least test compilation before git push.

8 years agodon't display hidden automation-controls.
Robin Gareus [Wed, 28 Oct 2015 17:58:46 +0000 (18:58 +0100)]
don't display hidden automation-controls.

8 years agofix JACK/windows compilation
Robin Gareus [Wed, 28 Oct 2015 13:11:17 +0000 (14:11 +0100)]
fix JACK/windows compilation

8 years agofix embedding AU/carbon UIs
Robin Gareus [Wed, 28 Oct 2015 13:09:13 +0000 (14:09 +0100)]
fix embedding AU/carbon UIs

the UI shows top/left (not centered, no resize) more detail work to come.

8 years agoRevert "potential fix for some AU plugin UIs not displaying"
Robin Gareus [Wed, 28 Oct 2015 13:02:57 +0000 (14:02 +0100)]
Revert "potential fix for some AU plugin UIs not displaying"

This reverts commit e8fe35d96ed13f3df0e2f03e2f347e908064a31d.

8 years agonotify LV2 GUIs about port-changes when loading presets
Robin Gareus [Wed, 28 Oct 2015 03:06:14 +0000 (04:06 +0100)]
notify LV2 GUIs about port-changes when loading presets

8 years agouse weak-jack's jack_port_rename wrapper
Robin Gareus [Wed, 28 Oct 2015 00:19:44 +0000 (01:19 +0100)]
use weak-jack's jack_port_rename wrapper

This avoids "[ERROR]: JACK: jack_port_set_name: deprecated".

if libjack does not have jack_port_rename(), weak_libjack.def provides
a fallback using jack_port_set_name().

8 years agopotential fix for some AU plugin UIs not displaying
Robin Gareus [Tue, 27 Oct 2015 22:11:45 +0000 (23:11 +0100)]
potential fix for some AU plugin UIs not displaying

looks like not all AU plugin GUIs redraw themselves if
[win setAutodisplay:1] is unnot.

A user reported that some Waves plugins and Shattered Glass 32bit AUs
are blank in 4.4 on 32bit OSX.

see also 5eefdf7 and earlier AU/API changes.

8 years agoanother log-scale automation fix
Robin Gareus [Tue, 27 Oct 2015 19:53:51 +0000 (20:53 +0100)]
another log-scale automation fix

8 years agoLineDrag fixes wrt initial drag position and display of y value.
nick_m [Tue, 27 Oct 2015 18:33:43 +0000 (05:33 +1100)]
LineDrag fixes wrt initial drag position and display of y value.

8 years agoAutomationLine::drag_motion () returns any clamped fractions correctly.
nick_m [Tue, 27 Oct 2015 16:14:10 +0000 (03:14 +1100)]
AutomationLine::drag_motion () returns any clamped fractions correctly.

8 years agoFix incorrectly placed control points (y-axis). fixes #6647.
nick_m [Tue, 27 Oct 2015 15:46:03 +0000 (02:46 +1100)]
Fix incorrectly placed control points (y-axis). fixes #6647.

- also use the return from AutomationLine::drag_motion () in
  anticipation of it correctly reporting its clamping to
  AutomationRangeDrag.

8 years agolinux-package: add gcc5 suffix to the file-name
Robin Gareus [Tue, 27 Oct 2015 10:34:12 +0000 (11:34 +0100)]
linux-package: add gcc5 suffix to the file-name

8 years agofun with valgrind
Robin Gareus [Tue, 27 Oct 2015 10:15:34 +0000 (11:15 +0100)]
fun with valgrind

8 years agoand another LV2-1.0.0 compat ifdef
Robin Gareus [Mon, 26 Oct 2015 12:32:51 +0000 (13:32 +0100)]
and another LV2-1.0.0 compat ifdef

8 years agoamend 311adde (LV2-1.0.0 compat)
Robin Gareus [Mon, 26 Oct 2015 12:24:23 +0000 (13:24 +0100)]
amend 311adde (LV2-1.0.0 compat)

8 years agoproperly translatable plural forms
Robin Gareus [Sun, 25 Oct 2015 16:46:39 +0000 (17:46 +0100)]
properly translatable plural forms

8 years agoChanged MCP trim detection to match method used in GUI.
Len Ovens [Sun, 25 Oct 2015 15:22:02 +0000 (08:22 -0700)]
Changed MCP trim detection to match method used in GUI.

8 years agoMarkers use the selection change stack.
nick_m [Sat, 24 Oct 2015 18:26:44 +0000 (05:26 +1100)]
Markers use the selection change stack.

8 years agoAmend last commit.
nick_m [Sat, 24 Oct 2015 17:12:38 +0000 (04:12 +1100)]
Amend last commit.

8 years agoSet a larger minimum size for recent session scrollers.
nick_m [Sat, 24 Oct 2015 17:07:19 +0000 (04:07 +1100)]
Set a larger minimum size for recent session scrollers.

8 years agoback to mjpeg (revert 2cb511e and 3f157f9) for now
Robin Gareus [Fri, 23 Oct 2015 21:34:21 +0000 (23:34 +0200)]
back to mjpeg (revert 2cb511e and 3f157f9) for now

There is anecdotal evidence that using mpeg4 as codec leads to issues
(xjadeo indexes and gets stuck at 99%, likely in libavcodec).

The main motivation for using mpeg4 is/was windows/VFAT 2GB file limit
and improved video quality.  This will have to be revisited.

8 years agoDelete SystemExec in the main process thread.
Robin Gareus [Fri, 23 Oct 2015 21:28:25 +0000 (23:28 +0200)]
Delete SystemExec in the main process thread.

8 years agofix crash on SystemExec::Terminate
Robin Gareus [Fri, 23 Oct 2015 21:27:15 +0000 (23:27 +0200)]
fix crash on SystemExec::Terminate

if Terminated() connects in the same thread and deletes the class itself
the closure in interposer_thread() can fail.

8 years agoRelative snap for markers.
nick_m [Fri, 23 Oct 2015 17:59:57 +0000 (04:59 +1100)]
Relative snap for markers.

- also removes many uninitialised variable warnings in
  editor_drag.cc found by cppcheck.

8 years agoadd ifdefs for LV2-1.0.0 compat
Robin Gareus [Fri, 23 Oct 2015 16:58:17 +0000 (18:58 +0200)]
add ifdefs for LV2-1.0.0 compat

8 years agoResizeNoteDrag selection click behaves as NoteDrag's does.
nick_m [Fri, 23 Oct 2015 14:19:00 +0000 (01:19 +1100)]
ResizeNoteDrag selection click behaves as NoteDrag's does.

8 years agoClear point selection when uniquely selecting a note.
nick_m [Fri, 23 Oct 2015 13:07:03 +0000 (00:07 +1100)]
Clear point selection when uniquely selecting a note.

- Also fix selection undo when creating notes w/control
  in MouseContent mode.

8 years agoMake mackie control view mode save bank for all modes.
Len Ovens [Thu, 22 Oct 2015 22:30:34 +0000 (15:30 -0700)]
Make mackie control  view mode save bank for all modes.
Also moved duplicated code to one function.

8 years agomime-type definition is version independent.
Robin Gareus [Thu, 22 Oct 2015 19:05:20 +0000 (21:05 +0200)]
mime-type definition is version independent.

File glob "*.ardour" -> application/x-ardour is defined in ardour.xml

8 years agoUse lwrcase_dirname for desktop file names and substitutions.
nick_m [Thu, 22 Oct 2015 17:03:16 +0000 (04:03 +1100)]
Use lwrcase_dirname for desktop file names and substitutions.

8 years agoset executable and icon name in desktop-file
Robin Gareus [Thu, 22 Oct 2015 16:07:55 +0000 (18:07 +0200)]
set executable and icon name in desktop-file

Also opt for version-agnostic mime-type (file-format version
is independent of program-version and of file-extension)

8 years agoRemove GhostRegion::CatchDeletion signal to reduce session close times
Tim Mayberry [Thu, 22 Oct 2015 11:56:02 +0000 (21:56 +1000)]
Remove GhostRegion::CatchDeletion signal to reduce session close times

Currently when a GhostRegion is deleted by its "parent" RegionView it emits the
static GhostRegion::CatchDeletion signal which is connected to the
RegionView::remove_ghost method of every RegionView instance.

With a static GhostRegion::CatchDeletion signal a particular test session
causes 31 Million calls of RegionView::remove_ghost on Session deletion and the
session takes 70 seconds to close with a debug build.

The lifetime of a ghost region is tied to both the TimeAxisView(TAV) and
RegionView(RV) in that when a RegionView is deleted all GhostRegion instances
associated with the RegionView should be deleted or when a TimeAxisView is
deleted all ghost regions that are contained in the view should be deleted.

This means that there needs to be notification between GhostRegion and both
classes. Instead of using a signal for this as we know there are only two
listeners and GhostRegion already holds a reference to the TimeAxisView, also
take a reference to the parent RegionView in the GhostRegion constructor and
use it to notify the RegionView when GhostRegion destructor is called so it can
drop any references it holds.

Using a direct function call in the GhostRegion destructor to notify the
TimeAxisView and RegionView "parents" brings the unload/close time down for the
test session from 70 seconds to 4.5 seconds.

The GhostRegion also references canvas items that are added to the TimeAxisView
canvas group or at least a canvas group that it manages. So when the
TimeAxisView is destroyed and the canvas group that is the parent of those
items is destroyed, the GhostRegion's canvas items will also be
deleted/destroyed by the parent canvas item/group. This means the GhostRegions
must be destroyed when the TimeAxisView they are contained in is destroyed or
there will be dangling references to canvas items that have already been
deleted and trying to delete them again will be bad.

8 years agoEnable i18n for info/error messages in MidiPatchManager
Tim Mayberry [Mon, 19 Oct 2015 10:51:01 +0000 (20:51 +1000)]
Enable i18n for info/error messages in MidiPatchManager

8 years agoOnly parse additional Session midnam files on Session load
Tim Mayberry [Mon, 19 Oct 2015 10:23:33 +0000 (20:23 +1000)]
Only parse additional Session midnam files on Session load

When loading a Session add the Session patchfiles directory to the
MidiPatchManager search path and only process/parse the files for that
directory rather than refreshing/reparsing all the files. Similarly for unload,
just unload the devices that are from the Session specific midnam files instead
of removing the path and refreshing/reparsing all the files.

This will not remove the "system" midnam files as they are always added first
and duplicates from the session patchfiles directory are ignored.

8 years agoStore the file path when constructing MidiNameDocument
Tim Mayberry [Mon, 19 Oct 2015 10:18:16 +0000 (20:18 +1000)]
Store the file path when constructing MidiNameDocument

This is so we can compare and see if we have already parsed the file

8 years agoDecouple Session from MidiPatchManager and reduce parsing of midnam xml files
Tim Mayberry [Mon, 19 Oct 2015 04:52:48 +0000 (14:52 +1000)]
Decouple Session from MidiPatchManager and reduce parsing of midnam xml files

The MidiPatchManager only requires a reference to the session to get the path
to the Session midnam directory so change it so that the path is passed to
MidiPatchManager::add_search_path on Session construction and removed on
Session Destruction. This will also make it easier to test and reduce compile
times etc.

For the common case where the Session doesn't have a Session specific midnam
patch files directory(for instance a new session) it won't cause a refresh and
reparsing of all the midnam files. This saves about 2 seconds to load a Session
on my machine(fast machine with SSD), or about half the time spent in the
Session constructor for a new session.

There is still going to be that initial cost of parsing the midnam files when
the first session is created after starting Ardour. Options to remove that
would be to parse the files asynchronously and or use a faster xml
parser(eventually), neither of which seem worth doing at this stage.

This change will cause a performance regression for the uncommon case where a
Session with Session specific midnam files is unloaded and then another Session
with Session specific midnam files is loaded as it will cause the common midnam
files in midi_patch_path to be parsed twice(unload and load).

8 years agoAdd PBD::Searchpath::contains method to check if a Searchpath contains a path
Tim Mayberry [Mon, 19 Oct 2015 04:46:50 +0000 (14:46 +1000)]
Add PBD::Searchpath::contains method to check if a Searchpath contains a path