diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2009-01-14 09:36:40 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2009-01-14 09:36:40 +0000 |
commit | 9ec23634ec634de49a49a628f049e15356e56153 (patch) | |
tree | c77678871b1cc158d7a54566a33bc38430f49d51 /gtk2_ardour | |
parent | 176813b0ab9e25068a3d2493df1baa32f6392e56 (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.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/canvas-program-change.h | 1 |
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 |