summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-10-28Fix incorrectly placed control points (y-axis). fixes #6647.nick_m
- also use the return from AutomationLine::drag_motion () in anticipation of it correctly reporting its clamping to AutomationRangeDrag.
2015-10-27linux-package: add gcc5 suffix to the file-nameRobin Gareus
2015-10-27fun with valgrindRobin Gareus
2015-10-26and another LV2-1.0.0 compat ifdefRobin Gareus
2015-10-26amend 311adde (LV2-1.0.0 compat)Robin Gareus
2015-10-25properly translatable plural formsRobin Gareus
2015-10-25Changed MCP trim detection to match method used in GUI.Len Ovens
2015-10-25Markers use the selection change stack.nick_m
2015-10-25Amend last commit.nick_m
2015-10-25Set a larger minimum size for recent session scrollers.nick_m
2015-10-23back to mjpeg (revert 2cb511e and 3f157f9) for nowRobin Gareus
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-23Delete SystemExec in the main process thread.Robin Gareus
2015-10-23fix crash on SystemExec::TerminateRobin Gareus
if Terminated() connects in the same thread and deletes the class itself the closure in interposer_thread() can fail.
2015-10-24Relative snap for markers.nick_m
- also removes many uninitialised variable warnings in editor_drag.cc found by cppcheck.
2015-10-23add ifdefs for LV2-1.0.0 compatRobin Gareus
2015-10-24ResizeNoteDrag selection click behaves as NoteDrag's does.nick_m
2015-10-24Clear point selection when uniquely selecting a note.nick_m
- Also fix selection undo when creating notes w/control in MouseContent mode.
2015-10-22Make mackie control view mode save bank for all modes.Len Ovens
Also moved duplicated code to one function.
2015-10-22mime-type definition is version independent.Robin Gareus
File glob "*.ardour" -> application/x-ardour is defined in ardour.xml
2015-10-23Use lwrcase_dirname for desktop file names and substitutions.nick_m
2015-10-22set executable and icon name in desktop-fileRobin Gareus
Also opt for version-agnostic mime-type (file-format version is independent of program-version and of file-extension)
2015-10-22Remove GhostRegion::CatchDeletion signal to reduce session close timesTim Mayberry
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-22Enable i18n for info/error messages in MidiPatchManagerTim Mayberry
2015-10-22Only parse additional Session midnam files on Session loadTim Mayberry
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-22Store the file path when constructing MidiNameDocumentTim Mayberry
This is so we can compare and see if we have already parsed the file
2015-10-22Decouple Session from MidiPatchManager and reduce parsing of midnam xml filesTim Mayberry
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-22Add PBD::Searchpath::contains method to check if a Searchpath contains a pathTim Mayberry
2015-10-22Expose protected PBD::Searchpath APITim Mayberry
I prefer to use these as they are more explicit than using the overloaded operators.
2015-10-22Don't parse midnam patch files contained in Session twiceTim Mayberry
MidiPatchManager::refresh already adds the patch files contained in the session folder
2015-10-22Refactor common code in MidiPatchManager class into new methodTim Mayberry
2015-10-22Don't call MidiPatchManager::refresh when creating MidiPatchManager instanceTim Mayberry
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-22Fix a small buffer issue which could sometimes prevent sessions from being ↵John Emmas
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-23Build freedesktop files if requested.nick_m
2015-10-23Amend last commit.nick_m
2015-10-23Center some windows known to be presented by ardour.nick_m
2015-10-22fix edge-case: (move playhead w/o session)Robin Gareus
2015-10-22remove invalid assertion - #6634Robin Gareus
There is a highly unlikely case where the render thread can have zero requests in the queue, but it is not supposed to be terminated. 1) WaveView::queue_get_image(); wake up thread, *but* the thread does not start yet 2) WaveView::cancel_my_render_request(); and now the thread starts. 1,2 are initiated by user actions from the GUI thread and are normally orders of magnitude slower than scheduler-thread wakeup.
2015-10-22Add some newly introduced sources to our MSVC project (libardour)John Emmas
2015-10-21Merge branch 'chaot4-fix_overwrite_file'Paul Davis
2015-10-21Also use overwrite_file_dialog at all the other places.André Nusser
2015-10-21Confirmation on overwrite for track and session templates. -fixes #6587André Nusser
2015-10-21Add overwrite option to save_template. (default = false)André Nusser
Before it could not overwrite.
2015-10-21fix automation update at transport stop when in automation Play modePaul Davis
2015-10-21fix mute automation in Play automation statePaul Davis
2015-10-21Add AutomationControl::set_value_unchecked() and ↵Paul Davis
AutomationControl::writable() and use them. Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they do not attempt to overwrite data sent to them while automation playback is underway.
2015-10-21add commentary and clean up blank linesPaul Davis
2015-10-22More desktop file renaming.nick_m
2015-10-22Remove old ardour3 desktop files.nick_m
2015-10-22Add ardour4 desktop and mime type files.nick_m
- looks like the install target for these has been removed, but the existence of these may be of help to packagers.
2015-10-22User interaction preferences tooltips clarify button names.nick_m