summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-11-25 22:15:19 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-11-25 22:15:19 +0000
commit35b218b527ecc60c16767690ca4a1d86481a8e3e (patch)
tree109d12f92ccd8ac6c08f00be8038fb966d5dfea1
parentcadaf74a80f93f0402339cf40f5f24031b60581c (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.cc9
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 {