summaryrefslogtreecommitdiff
path: root/src/syncevo/SyncContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/syncevo/SyncContext.cpp')
-rw-r--r--src/syncevo/SyncContext.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/syncevo/SyncContext.cpp b/src/syncevo/SyncContext.cpp
index da8a066f..148f8c68 100644
--- a/src/syncevo/SyncContext.cpp
+++ b/src/syncevo/SyncContext.cpp
@@ -2901,6 +2901,13 @@ void SyncContext::initMain(const char *appname)
// redirect glib logging into our own logging
g_log_set_default_handler(Logger::glogFunc, NULL);
+
+ // Only the main thread may use the default GMainContext.
+ // Anything else is unsafe, see https://mail.gnome.org/archives/gtk-list/2013-April/msg00040.html
+ // util.cpp:Sleep() checks this and uses the default context
+ // when called by the main thread, otherwise falls back to
+ // select().
+ g_main_context_acquire(NULL);
#endif
if (atoi(getEnv("SYNCEVOLUTION_DEBUG", "0")) > 3) {
SySync_ConsolePrintf = Logger::sysyncPrintf;