From 067a124fd1feb96f63fc062601ec685c0a8209b3 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 8 Dec 2023 21:48:23 +0100 Subject: [PATCH] Suspend signal emission of Locations during Drag This significantly speeds up Location Drag/motion --- gtk2_ardour/editor_drag.cc | 3 ++- gtk2_ardour/editor_drag.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 008f89989f..32296512b7 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -4346,7 +4346,7 @@ MarkerDrag::~MarkerDrag () MarkerDrag::CopiedLocationMarkerInfo::CopiedLocationMarkerInfo (Location* l, ArdourMarker* m) { - location = new Location (*l); + location = new Location (*l, true); markers.push_back (m); move_both = false; } @@ -4431,6 +4431,7 @@ MarkerDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor) if (!l) { continue; } + lcs.push_back (l); if (l->is_mark ()) { _copied_locations.push_back (CopiedLocationMarkerInfo (l, *i)); diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 46f97a6810..d1f7deb55a 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -1176,6 +1176,8 @@ private: CopiedLocationMarkerInfo (ARDOUR::Location* l, ArdourMarker* m); }; + std::vector lcs; + typedef std::list CopiedLocationInfo; CopiedLocationInfo _copied_locations; ArdourCanvas::Points _points;