summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2009-01-14 09:36:40 +0000
committerHans Baier <hansfbaier@googlemail.com>2009-01-14 09:36:40 +0000
commit9ec23634ec634de49a49a628f049e15356e56153 (patch)
treec77678871b1cc158d7a54566a33bc38430f49d51 /gtk2_ardour
parent176813b0ab9e25068a3d2493df1baa32f6392e56 (diff)
* improve performance on CanvasProgramChange
git-svn-id: svn://localhost/ardour2/branches/3.0@4404 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/canvas-program-change.cc7
-rw-r--r--gtk2_ardour/canvas-program-change.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/gtk2_ardour/canvas-program-change.cc b/gtk2_ardour/canvas-program-change.cc
index 24f13f2605..35e4671c31 100644
--- a/gtk2_ardour/canvas-program-change.cc
+++ b/gtk2_ardour/canvas-program-change.cc
@@ -36,9 +36,9 @@ CanvasProgramChange::CanvasProgramChange(
, _event_time(event_time)
, _channel(channel)
, _program(program)
+ , _popup_initialized(false)
{
set_text(text);
- initialize_popup_menus();
}
CanvasProgramChange::~CanvasProgramChange()
@@ -100,6 +100,11 @@ CanvasProgramChange::on_event(GdkEvent* ev)
switch (ev->type) {
case GDK_BUTTON_PRESS:
if (ev->button.button == 3) {
+ // lazy init
+ if (!_popup_initialized) {
+ initialize_popup_menus();
+ _popup_initialized = true;
+ }
_popup.popup(ev->button.button, ev->button.time);
return true;
}
diff --git a/gtk2_ardour/canvas-program-change.h b/gtk2_ardour/canvas-program-change.h
index 39c11dc090..1db5708296 100644
--- a/gtk2_ardour/canvas-program-change.h
+++ b/gtk2_ardour/canvas-program-change.h
@@ -61,6 +61,7 @@ private:
uint8_t _channel;
uint8_t _program;
Gtk::Menu _popup;
+ bool _popup_initialized;
};
} // namespace Canvas