* improve performance on CanvasProgramChange
authorHans Baier <hansfbaier@googlemail.com>
Wed, 14 Jan 2009 09:36:40 +0000 (09:36 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Wed, 14 Jan 2009 09:36:40 +0000 (09:36 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@4404 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/canvas-program-change.cc
gtk2_ardour/canvas-program-change.h

index 24f13f26056f6b0041b49bbfc374cf846f77500f..35e4671c3175027b0ede29cec0be3ad29f611d80 100644 (file)
@@ -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;
                }
index 39c11dc090f1b463ec7990add83ba2f98203f626..1db5708296ea57ad849a4d2c8cb683870317ff6c 100644 (file)
@@ -61,6 +61,7 @@ private:
        uint8_t       _channel;
        uint8_t       _program;
        Gtk::Menu     _popup;
+       bool          _popup_initialized;
 };
 
 } // namespace Canvas