summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2018-12-04 14:42:31 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-12-05 09:52:19 +0100
commit5b017b8ebede87c53ce94dc46be1c252c45705e6 (patch)
tree56258e53bfe634ee72a19faaa2059d2222928fd4 /vcl
parent16100d8db2398050f9ec10ee55178b2888141818 (diff)
tdf#121399 Join cmd reading thread in gtk3_kde5
Stop reading commands from the pipe on kde5 side once the "Quit" command has been sent, in order to have the thread that is reading commands from stdin finish properly. Join the thread in the 'FilePickerIpc' destructor, rather than just deleting it while it may still be running, which resulted in 'terminate()' being called. Change-Id: Ia184987e7994cc1de0208ff2757a3cf06c8b7194 Reviewed-on: https://gerrit.libreoffice.org/63835 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> (cherry picked from commit 93815c2b04f1905e43c695caf5cc2c594bb897ce) Reviewed-on: https://gerrit.libreoffice.org/64587 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/gtk3_kde5/kde5_filepicker_ipc.cxx12
1 files changed, 11 insertions, 1 deletions
diff --git a/vcl/unx/gtk3_kde5/kde5_filepicker_ipc.cxx b/vcl/unx/gtk3_kde5/kde5_filepicker_ipc.cxx
index 550e1d8bb2d4..a2ea6b7bbefd 100644
--- a/vcl/unx/gtk3_kde5/kde5_filepicker_ipc.cxx
+++ b/vcl/unx/gtk3_kde5/kde5_filepicker_ipc.cxx
@@ -192,6 +192,12 @@ static void readCommands(FilePickerIpc* ipc)
readCommandArgs(command, args);
emit ipc->commandReceived(messageId, command, args);
+
+ // stop processing once 'Quit' command has been sent
+ if (command == Commands::Quit)
+ {
+ return;
+ }
}
}
@@ -211,7 +217,11 @@ FilePickerIpc::FilePickerIpc(KDE5FilePicker* filePicker, QObject* parent)
m_ipcReaderThread = std::unique_ptr<std::thread>{ new std::thread(readCommands, this) };
}
-FilePickerIpc::~FilePickerIpc() = default;
+FilePickerIpc::~FilePickerIpc()
+{
+ // join thread that reads commands
+ m_ipcReaderThread->join();
+};
bool FilePickerIpc::handleCommand(uint64_t messageId, Commands command, QList<QVariant> args)
{