diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2014-03-10 14:54:58 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-03-22 15:11:23 +0000 |
commit | 6df01ea56717803f1ccf66bbbbb7a2815aa09fb5 (patch) | |
tree | 3004f0a4529e836d55afca4e649fe9fc923e23ca /vcl | |
parent | f13a93eef2b860ce14d036e6657a6ed8dbfe3651 (diff) |
Revert "fdo#67011: Run Display::Yield through KDEXLib::Yield."
This reverts commit 95f60222e75486336b6569afa8f34d60b51c94ad.
(cherry picked from commit 69e7f4491ec78384c46653d3cd8870c97cc9218a)
Change-Id: I180172424092eb64e8a7bc02072e1d477641cc8d
Reviewed-on: https://gerrit.libreoffice.org/8709
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/kde4/KDESalDisplay.cxx | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/vcl/unx/kde4/KDESalDisplay.cxx b/vcl/unx/kde4/KDESalDisplay.cxx index ee330e735625..21440fc4d7d4 100644 --- a/vcl/unx/kde4/KDESalDisplay.cxx +++ b/vcl/unx/kde4/KDESalDisplay.cxx @@ -25,8 +25,6 @@ #include <assert.h> #include <unx/saldata.hxx> -#include <qthread.h> - SalKDEDisplay* SalKDEDisplay::selfptr = NULL; SalKDEDisplay::SalKDEDisplay( Display* pDisp ) @@ -50,26 +48,18 @@ SalKDEDisplay::~SalKDEDisplay() void SalKDEDisplay::Yield() { - // We yield the display throught the main Qt thread. - // Actually this Yield may call the Display::Yield, which results in an - // unlimited cycle. - static bool break_cyclic_yield_recursion = false; - bool is_qt_gui_thread = ( qApp->thread() == QThread::currentThread() ); - - if( DispatchInternalEvent() || break_cyclic_yield_recursion ) + if( DispatchInternalEvent() ) return; - if( is_qt_gui_thread ) - break_cyclic_yield_recursion = true; - DBG_ASSERT( static_cast<SalYieldMutex*>(GetSalData()->m_pInstance->GetYieldMutex())->GetThreadId() == osl::Thread::getCurrentIdentifier(), "will crash soon since solar mutex not locked in SalKDEDisplay::Yield" ); - static_cast<KDEXLib*>(GetXLib())->Yield( true, false ); - - if( is_qt_gui_thread ) - break_cyclic_yield_recursion = false; + XEvent event; + XNextEvent( pDisp_, &event ); + if( checkDirectInputEvent( &event )) + return; + qApp->x11ProcessEvent( &event ); } // HACK: When using Qt event loop, input methods (japanese, etc.) will get broken because |