diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-11-25 22:15:19 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-11-25 22:15:19 +0000 |
commit | 35b218b527ecc60c16767690ca4a1d86481a8e3e (patch) | |
tree | 109d12f92ccd8ac6c08f00be8038fb966d5dfea1 | |
parent | cadaf74a80f93f0402339cf40f5f24031b60581c (diff) |
make Gtkmm2ext::Popup::touch() thread-safe (again; it used to be in the 0.99 era)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4258 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | libs/gtkmm2ext/popup.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/popup.cc b/libs/gtkmm2ext/popup.cc index 0b150eefe1..2d586d0317 100644 --- a/libs/gtkmm2ext/popup.cc +++ b/libs/gtkmm2ext/popup.cc @@ -22,6 +22,7 @@ #include <gtkmm2ext/popup.h> #include <gtkmm2ext/utils.h> +#include <gtkmm2ext/gtk_ui.h> using namespace std; using namespace Gtk; @@ -83,9 +84,17 @@ PopUp::remove () } } +#define ENSURE_GUI_THREAD(slot) \ + if (!Gtkmm2ext::UI::instance()->caller_is_ui_thread()) {\ + Gtkmm2ext::UI::instance()->call_slot ((slot));\ + return;\ + } + void PopUp::touch () { + ENSURE_GUI_THREAD (mem_fun (*this, &PopUp::touch)); + if (is_visible ()) { remove (); } else { |