13
0
Commit Graph

18239 Commits

Author SHA1 Message Date
nick_m
5e7c7e52bd 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.
2015-10-30 21:14:16 +11:00
nick_m
6d98ccf901 Dont do duplocate calls to MidiRegionView::trim_front_ending () in TrimDrag.
- fixes #6658
	- also leaves undo history alone if point trim does nothing.
2015-10-30 04:01:44 +11:00
nick_m
73328172d6 Fix reversed ratio in last commit. 2015-10-30 00:01:33 +11:00
nick_m
36dd7f8d9d Start line drag using canvas y coords.
- fixes #5759
2015-10-29 23:37:01 +11:00
be69dd279b rework dbf28e3 (hidden parameters) 2015-10-28 21:25:01 +01:00
ebbe96aa08 note to self: at least test compilation before git push. 2015-10-28 19:00:59 +01:00
dbf28e320c don't display hidden automation-controls. 2015-10-28 18:58:46 +01:00
661ffe7576 fix JACK/windows compilation 2015-10-28 14:11:17 +01:00
0992272858 fix embedding AU/carbon UIs
the UI shows top/left (not centered, no resize) more detail work to come.
2015-10-28 14:10:49 +01:00
8d1edb13d3 Revert "potential fix for some AU plugin UIs not displaying"
This reverts commit e8fe35d96e.
2015-10-28 14:02:57 +01:00
5dd5bf0f70 notify LV2 GUIs about port-changes when loading presets 2015-10-28 04:06:14 +01:00
997f47360d 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().
2015-10-28 01:21:24 +01:00
e8fe35d96e 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.
2015-10-27 23:12:53 +01:00
42424eeb6c another log-scale automation fix 2015-10-27 20:54:09 +01:00
nick_m
61729f8e68 LineDrag fixes wrt initial drag position and display of y value. 2015-10-28 05:33:43 +11:00
nick_m
bf9e752b4d AutomationLine::drag_motion () returns any clamped fractions correctly. 2015-10-28 03:14:10 +11:00
nick_m
fc8b03eef5 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.
2015-10-28 02:46:03 +11:00
653e80ee21 linux-package: add gcc5 suffix to the file-name 2015-10-27 11:34:12 +01:00
1de4ed937c fun with valgrind 2015-10-27 11:15:34 +01:00
3e3a5e1cff and another LV2-1.0.0 compat ifdef 2015-10-26 13:32:51 +01:00
677531addb amend 311adde (LV2-1.0.0 compat) 2015-10-26 13:24:23 +01:00
8ab69cba58 properly translatable plural forms 2015-10-25 17:46:39 +01:00
7c24957d30 Changed MCP trim detection to match method used in GUI. 2015-10-25 08:22:02 -07:00
nick_m
e78a44d4e5 Markers use the selection change stack. 2015-10-25 05:26:44 +11:00
nick_m
d48564aee5 Amend last commit. 2015-10-25 04:12:38 +11:00
nick_m
663dd1cf2c Set a larger minimum size for recent session scrollers. 2015-10-25 04:07:19 +11:00
a50af45a14 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.
2015-10-23 23:34:21 +02:00
076ca20321 Delete SystemExec in the main process thread. 2015-10-23 23:29:04 +02:00
eb6b4f4b15 fix crash on SystemExec::Terminate
if Terminated() connects in the same thread and deletes the class itself
the closure in interposer_thread() can fail.
2015-10-23 23:29:04 +02:00
nick_m
90aec831cb Relative snap for markers.
- also removes many uninitialised variable warnings in
	  editor_drag.cc found by cppcheck.
2015-10-24 04:59:57 +11:00
311adde023 add ifdefs for LV2-1.0.0 compat 2015-10-23 18:58:55 +02:00
nick_m
c9864b71a0 ResizeNoteDrag selection click behaves as NoteDrag's does. 2015-10-24 01:19:00 +11:00
nick_m
96524d863b Clear point selection when uniquely selecting a note.
- Also fix selection undo when creating notes w/control
	  in MouseContent mode.
2015-10-24 00:07:03 +11:00
96c6da0804 Make mackie control view mode save bank for all modes.
Also moved duplicated code to one function.
2015-10-22 15:30:34 -07:00
f4100dc529 mime-type definition is version independent.
File glob "*.ardour" -> application/x-ardour is defined in ardour.xml
2015-10-22 21:05:20 +02:00
nick_m
4f5ca7ecb5 Use lwrcase_dirname for desktop file names and substitutions. 2015-10-23 04:03:16 +11:00
a02ffb9eed 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)
2015-10-22 18:09:16 +02:00
b074ff0dd5 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.
2015-10-22 11:51:03 -04:00
55e8f6ac30 Enable i18n for info/error messages in MidiPatchManager 2015-10-22 11:51:03 -04:00
e93ba53309 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.
2015-10-22 11:51:03 -04:00
efc26a0490 Store the file path when constructing MidiNameDocument
This is so we can compare and see if we have already parsed the file
2015-10-22 11:51:03 -04:00
689862cafb 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).
2015-10-22 11:51:03 -04:00
3bd928591b Add PBD::Searchpath::contains method to check if a Searchpath contains a path 2015-10-22 11:51:03 -04:00
c07ea1bc73 Expose protected PBD::Searchpath API
I prefer to use these as they are more explicit than using the overloaded
operators.
2015-10-22 11:51:03 -04:00
76d43487da Don't parse midnam patch files contained in Session twice
MidiPatchManager::refresh already adds the patch files contained in the session
folder
2015-10-22 11:51:03 -04:00
ee9f369e38 Refactor common code in MidiPatchManager class into new method 2015-10-22 11:51:02 -04:00
9fd75e33fe Don't call MidiPatchManager::refresh when creating MidiPatchManager instance
Currently when loading a session for the first time MidiPatchManager::instance
creates the MidiPatchManager singleton which calls MPM::refresh and all the
midnam files are parsed etc. MPM::set_session is then immediately called and
all the MPM state that has just been set when parsing all the midnam files is
cleared and the parsing of all the files is performed again but this time with
any session specific midnam patch files.

MPM::instance and MPM::set_session consume about 55% of the time spent in the
Session ctor according to kcachegrind and removing the double call to refresh
brings Session construction time for a particular test session down from 7.5s
to 5.5s
2015-10-22 11:51:02 -04:00
3c4f899a4f Fix a small buffer issue which could sometimes prevent sessions from being able to load
In the function 'LV2Plugin::add_state()' the snprintf() call can easily print 19 or even 20 bytes - so a 16-byte buffer wasn't large enough.
2015-10-22 16:37:00 +01:00
nick_m
0956708aa9 Build freedesktop files if requested. 2015-10-23 02:21:01 +11:00
nick_m
72556cdd7a Amend last commit. 2015-10-23 02:14:03 +11:00