From fd3eb4515639e000b899544827b5fd4ff9473937 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 7 Jan 2019 11:28:35 +0100 Subject: gui/init: call XInitThreads(3) The Qt function for enable X11 threads is obsolete given it fully uses Xcb. We're using some Xlib calls in qxt-mini in places. Call it manually rather than risking arbitrary crashes. --- gui/CMakeLists.txt | 4 ++++ gui/init.cpp | 11 +++++++++++ 2 files changed, 15 insertions(+) (limited to 'gui') diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index cb5e2bdc..e22017ea 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -15,3 +15,7 @@ elseif(LINUX) otr_pkgconfig(${self} libprocps) endif() +if(NOT APPLE AND NOT WIN32) + target_compile_definitions(${self} PRIVATE -DOTR_X11_THREADS) + otr_pkgconfig(${self} x11) +endif() diff --git a/gui/init.cpp b/gui/init.cpp index 9cb32e2c..04334782 100644 --- a/gui/init.cpp +++ b/gui/init.cpp @@ -71,6 +71,14 @@ static void set_fp_mask() #endif } +#ifdef OTR_X11_THREADS +#include +static void enable_x11_threads() +{ + (void)XInitThreads(); +} +#endif + static void set_qt_style() { #if defined _WIN32 || defined __APPLE__ @@ -237,6 +245,9 @@ static int run_window(std::unique_ptr main_window) int otr_main(int argc, char** argv, std::function const& make_main_window) { set_fp_mask(); +#ifdef OTR_X11_THREADS + enable_x11_threads(); +#endif #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); -- cgit v1.2.3