summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2014-03-10 15:05:22 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-03-22 15:09:25 +0000
commitf13a93eef2b860ce14d036e6657a6ed8dbfe3651 (patch)
tree0e7f914ae45da5fc537b806ba71bc6ff9a15dc44 /configure.ac
parent7f16f6b83cb0f4db3fd301304d55c599ff0a2edd (diff)
KDE4: add Qt4 glib ExcludeSocket runtime check
Add a runtime check and configure warning to disable KDE4 native file pickers, if the Qt4 glib dispatcher doesn't honor the QEventLoop::ExcludeSocketNotifiers flag. This way polling the QClipboard using the event loop won't crash LibreOffice with recursive paint events, See https://bugreports.qt-project.org/browse/QTBUG-37380 (cherry picked from commit cc8d566d74a2e0b969b92d9cf22cc95a3bf31a98) Change-Id: I48795deef82eaf6f95a4e518baea66c52f0b7400 Reviewed-on: https://gerrit.libreoffice.org/8708 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac51
1 files changed, 44 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index 50f116224fda..f36cbaf747e2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11126,7 +11126,7 @@ if test "$test_kde4" = "yes" -a "$ENABLE_KDE4" = "TRUE"; then
fi
qt_test_include="Qt/qobject.h"
- qt_test_library="libQtCore.so"
+ qt_test_library="libQtNetwork.so"
kde_test_include="kwindowsystem.h"
kde_test_library="libsolid.so"
@@ -11213,8 +11213,9 @@ the root of your Qt installation by exporting QT4DIR before running "configure".
AC_MSG_ERROR([KDE4 libraries not found. Please specify the root of your KDE4 installation by exporting KDE4DIR before running "configure".])
fi
- KDE4_CFLAGS="`pkg-config --cflags QtCore` `pkg-config --cflags QtGui` -I$kde_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT"
- KDE4_LIBS="-L$kde_libdir -L$qt_lib_dir -lkio -lkfile -lkdeui -lkdecore -lQtCore -lQtGui"
+ PKG_CHECK_MODULES([QT4],[QtNetwork QtGui])
+ KDE4_CFLAGS="-I$kde_incdir $QT4_CFLAGS -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT"
+ KDE4_LIBS="-L$kde_libdir -lkio -lkfile -lkdeui -lkdecore -L$qt_lib_dir $QT4_LIBS"
KDE4_CFLAGS=$(printf '%s' "$KDE4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
AC_LANG_PUSH([C++])
@@ -11236,11 +11237,47 @@ int main(int argc, char **argv) {
# Sets also KDE_GLIB_CFLAGS/KDE_GLIB_LIBS if successful.
PKG_CHECK_MODULES(KDE_GLIB,[glib-2.0 >= 2.4],
[
- KDE_HAVE_GLIB=1
- AC_DEFINE(KDE_HAVE_GLIB,1)
- KDE_GLIB_CFLAGS=$(printf '%s' "$KDE_GLIB_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
+ KDE_HAVE_GLIB=1
+ AC_DEFINE(KDE_HAVE_GLIB,1)
+ KDE_GLIB_CFLAGS=$(printf '%s' "$KDE_GLIB_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
+
+ AC_LANG_PUSH([C++])
+ save_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS $KDE4_CFLAGS"
+ save_LIBS=$LIBS
+ LIBS="$LIBS $KDE4_LIBS"
+ AC_MSG_CHECKING([whether Qt has fixed ExcludeSocketNotifiers])
+
+ # Prepare meta object data
+ TSTBASE="tst_exclude_socket_notifiers"
+ TSTMOC="${SRC_ROOT}/vcl/unx/kde4/${TSTBASE}"
+ ln -fs "${TSTMOC}.hxx"
+ $MOC4 "${TSTBASE}.hxx" -o "${TSTBASE}.moc"
+
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include "tst_exclude_socket_notifiers.moc"
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+ exit(tst_processEventsExcludeSocket());
+ return 0;
+}
+ ]])],[
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([native KDE4 file pickers will be disabled at runtime - fix your Qt4 library!])
+ ])
+
+ # Remove meta object data
+ rm -f "${TSTBASE}."*
+
+ LIBS=$save_LIBS
+ CXXFLAGS=$save_CXXFLAGS
+ AC_LANG_POP([C++])
],
- AC_MSG_WARN([[No Glib found, KDE4 support will not integrate with Qt's Glib event loop support]]))
+ AC_MSG_WARN([[No Glib found, KDE4 support will not use native file pickers!]]))
fi
AC_SUBST(KDE4_CFLAGS)
AC_SUBST(KDE4_LIBS)