File correctly-init-xthreads-in-qt.diff of Package libreoffice

Author: Luboš Luňák <l.lunak@suse.cz>
Date:   Thu Oct 20 16:41:50 2011 +0200

    let Qt call XInitThreads(), so that it knows it's been called (fdo#40298)
    
    Otherwise QPixmap complains when used outside of the main Qt thread
    and resets itself to null pixmap, eventually leading to crashes.

--- vcl/unx/kde4/main.cxx.old	2011-10-21 17:50:26.000000000 +0200
+++ vcl/unx/kde4/main.cxx	2011-10-21 17:52:07.000000000 +0200
@@ -54,7 +54,18 @@ extern "C" {
            established, so protect X against itself
         */
         if( ! ( pNoXInitThreads && *pNoXInitThreads ) )
+        {
+#if QT_VERSION >= 0x040800
+            // let Qt call XInitThreads(), so that also Qt knows it's been used
+            // (otherwise QPixmap may warn about threads not being initialized)
+            QApplication::setAttribute( Qt::AA_X11InitThreads );
+#else
             XInitThreads();
+            // just in case somebody builds with old version and then upgrades Qt,
+            // otherwise this is a no-op
+            QApplication::setAttribute( static_cast< Qt::ApplicationAttribute >( 10 ));
+#endif
+        }
         
 #if QT_VERSION < 0x050000
         // Qt 4.x support needs >= 4.1.0
openSUSE Build Service is sponsored by