- Fix haning in KDE by applying upstream fix. Will be included

in next release.
- added patches:
  * kde4-4.2.3.3-timer-mutex.patch

OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=139
This commit is contained in:
Tomáš Chvátal 2014-04-15 08:33:27 +00:00 committed by Git OBS Bridge
parent 5f625ca24c
commit 0f2ade2d09
3 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,46 @@
From 7dba6e0a71d090f06a6a1a39e87572674593b48a Mon Sep 17 00:00:00 2001
From: Jan-Marek Glogowski <glogow@fbihome.de>
Date: Mon, 10 Mar 2014 14:44:05 +0000
Subject: fdo#73115: Always run timeouts as events
Right-click popup menus run click events throught the LO main loop.
In case of KDE4 the LO main loop is run by a timer in the main thread,
with Qt::DirectConnection execution.
If the timeout actually starts a nested event loop for a new dialog,
the timer is blocked, the nested mainloop detects it was started
from the timeout and drops the blocked timout from polling, which
blocks any further LibreOffice event loop processing.
This changes the timers to Qt::QueuedConnection, so they always
generate an event and are processed by the Qt event loop.
Change-Id: Ie626b22be3d8f9b8934bcc5e9e0e67a365549cfc
(cherry picked from commit aeda478a02523cec146f6af69710f0391061db56)
Reviewed-on: https://gerrit.libreoffice.org/8514
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
---
diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx
index b4be6d6..4a9b70b 100644
--- a/vcl/unx/kde4/KDEXLib.cxx
+++ b/vcl/unx/kde4/KDEXLib.cxx
@@ -67,9 +67,13 @@ KDEXLib::KDEXLib() :
eventLoopType( LibreOfficeEventLoop ),
m_bYieldFrozen( false )
{
- // the timers created here means they belong to the main thread
- connect( &timeoutTimer, SIGNAL( timeout()), this, SLOT( timeoutActivated()));
- connect( &userEventTimer, SIGNAL( timeout()), this, SLOT( userEventActivated()));
+ // the timers created here means they belong to the main thread.
+ // As the timeoutTimer runs the LO event queue, which may block on a dialog,
+ // the timer has to use a Qt::QueuedConnection, otherwise the nested event
+ // loop will detect the blocking timer and drop it from the polling
+ // freezing LO X11 processing.
+ connect( &timeoutTimer, SIGNAL( timeout()), this, SLOT( timeoutActivated()), Qt::QueuedConnection );
+ connect( &userEventTimer, SIGNAL( timeout()), this, SLOT( userEventActivated()), Qt::QueuedConnection );
// QTimer::start() can be called only in its (here main) thread, so this will
// forward between threads if needed
--
cgit v0.9.0.2-2-gbebe

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Tue Apr 15 08:32:38 UTC 2014 - tchvatal@suse.com
- Fix haning in KDE by applying upstream fix. Will be included
in next release.
- added patches:
* kde4-4.2.3.3-timer-mutex.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Apr 14 20:00:00 UTC 2014 - tbehrens@suse.com Mon Apr 14 20:00:00 UTC 2014 - tbehrens@suse.com

View File

@ -89,6 +89,8 @@ Patch13: jvmfwk-disable-gcj.diff
Patch16: wizards-create-temlates-with-python-2.6.diff Patch16: wizards-create-temlates-with-python-2.6.diff
# Fix fdo#74697 add Bluez 5 support for impress remote. # Fix fdo#74697 add Bluez 5 support for impress remote.
Patch17: bluez5-support-for-impress-remote.diff Patch17: bluez5-support-for-impress-remote.diff
# PATCH-FIX-UPSTREAM: fix kde hanging in 4.2.3.3
Patch18: kde4-4.2.3.3-timer-mutex.patch
# try to save space by using hardlinks # try to save space by using hardlinks
Patch990: install-with-hardlinks.diff Patch990: install-with-hardlinks.diff
BuildRequires: ImageMagick BuildRequires: ImageMagick
@ -840,6 +842,7 @@ Provides additional %{langname} translations and resources for %{project}. \
%patch13 -p1 %patch13 -p1
%patch16 -p1 %patch16 -p1
%patch17 -p1 %patch17 -p1
%patch18 -p1
%patch990 -p1 %patch990 -p1
# 256x256 icons # 256x256 icons
tar -xjf %{SOURCE20} tar -xjf %{SOURCE20}