13
0
Go to file
Tim Mayberry 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
cfgtool remove tabs from python code 2015-07-05 14:50:13 +02:00
doc update Doxyfile 2015-10-01 21:57:27 +02:00
export Remove Soundcloud export format presets 2014-05-23 19:05:33 +01:00
gtk2_ardour Remove GhostRegion::CatchDeletion signal to reduce session close times 2015-10-22 11:51:03 -04:00
headless NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
icons Add our various '.in' files (to be processed by msvc32-fixup.pl) 2014-08-04 09:00:11 +01:00
libs Enable i18n for info/error messages in MidiPatchManager 2015-10-22 11:51:03 -04:00
mcp introduce separate-meters concept for Mackie. 2015-10-13 10:04:58 -04:00
midi_maps Add a midimap for WiiMote via midikb. 2015-07-10 16:52:43 -04:00
msvc_extra_headers For MSVC builds, implement 'rint()' and 'rintf()' to supplement the ones that were already implemented 2015-04-24 19:11:10 +01:00
MSVCardour3 MSVC - add support for newly introduced gtk2_ardour/tooltips.cc and tooltips.h 2015-09-18 10:29:31 +01:00
MSVCMixbus3 When building with MSVC make sure any backends / panners etc get copied to the correct target folder 2015-01-12 14:43:22 +00:00
MSVCvst_scan Add the new (UINTSDEFINED) preprocessor directive to all out MSVC projects (just to be on the safe side) 2015-06-09 13:18:42 +01:00
patches patches to fix notebook tab tearoff on DnD. 2015-07-20 16:56:15 -04:00
patchfiles New MIDNAM file from e.j.vd.hooven@gmail.com 2015-01-05 10:19:53 -05:00
templates finish unfinished work at basing all install paths on the program name 2014-04-28 21:11:08 -04:00
tools linux wrapper script: load session with spaces - #6395 2015-10-17 02:01:02 +02:00
vst globally remove all trailing whitespace from ardour code base. 2015-10-04 14:51:05 -04:00
.dir-locals.el
.gitignore remove cruft (old unused pre-git version files) 2015-01-09 06:11:57 +01:00
ardour-3.ttl
ardour.1 add -a option to ardour.1 manpage 2013-03-12 13:32:56 -04:00
ardour.1.es
ardour.1.fr
ardour.1.ru
COPYING update GPL (formatting and update FSF address) 2014-10-26 02:24:35 +01:00
foo.cc more pre-commit testing 2015-05-09 13:08:56 -04:00
instant.xml
instant.xml.sae
Makefile
msvc32-fixup.pl Following my last change we can now give 'MSVCArdour3.vsprops.in' its correct name 2015-01-12 14:47:44 +00:00
PACKAGER_README
README another trivial change to test hooks 2013-03-13 14:35:39 -04:00
system_config update system config 2015-07-21 01:12:39 +02:00
testfile.flac
testfile.ogg
TRANSLATORS
waf fix stash-mess for ./waf with a new identical version 2014-12-17 14:04:07 -05:00
wscript Build freedesktop files if requested. 2015-10-23 02:21:01 +11:00

Please see the Ardour web site at http://ardour.org/ for all documentation..

For information on building ardour: 
      
     http://ardour.org/development.html