summaryrefslogtreecommitdiff
path: root/fpicker/source
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2010-10-05 15:50:37 +0200
committerLuboš Luňák <l.lunak@suse.cz>2010-10-05 16:02:37 +0200
commite5b53281b9395b6ef3554e139094155ed20dd3b7 (patch)
treeb69ef7f7ade87211e904fc9afcf9db1547a64d20 /fpicker/source
parent6aa6b7c80cb570f38928e9b2771e784006370da8 (diff)
release solar mutex before entering Qt event loop
Diffstat (limited to 'fpicker/source')
-rw-r--r--fpicker/source/unx/kde4/KDE4FilePicker.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/fpicker/source/unx/kde4/KDE4FilePicker.cxx b/fpicker/source/unx/kde4/KDE4FilePicker.cxx
index 744e19f3ab..b106222cc7 100644
--- a/fpicker/source/unx/kde4/KDE4FilePicker.cxx
+++ b/fpicker/source/unx/kde4/KDE4FilePicker.cxx
@@ -186,7 +186,13 @@ sal_Int16 SAL_CALL KDE4FilePicker::execute()
_dialog->clearFilter();
_dialog->setFilter(_filter);
_dialog->filterWidget()->setEditable(false);
-
+
+ // We are now entering Qt code, so release the Solar Mutex, as the Qt code
+ // should not generally call back into core code (and if yes, it needs to claim
+ // the mutex again). Otherwise this would block core code (e.g. bnc#616047,
+ // KDE file dialog asks for clipboard contents, if it is owned by core code,
+ // it will try to lock the mutex and block there).
+ SolarMutexReleaser releaser;
//block and wait for user input
if (_dialog->exec() == KFileDialog::Accepted)
return ExecutableDialogResults::OK;