summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandeventthread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/qwaylandeventthread.cpp')
-rw-r--r--src/client/qwaylandeventthread.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/client/qwaylandeventthread.cpp b/src/client/qwaylandeventthread.cpp
index b7266765e..22efd6a2a 100644
--- a/src/client/qwaylandeventthread.cpp
+++ b/src/client/qwaylandeventthread.cpp
@@ -73,7 +73,7 @@ void QWaylandEventThread::displayConnect()
// ### be careful what you do, this function may also be called from other
// threads to clean up & exit.
-void QWaylandEventThread::checkErrorAndExit()
+void QWaylandEventThread::checkError() const
{
int ecode = wl_display_get_error(m_display);
if ((ecode == EPIPE || ecode == ECONNRESET)) {
@@ -82,13 +82,16 @@ void QWaylandEventThread::checkErrorAndExit()
} else {
qErrnoWarning(ecode, "The Wayland connection experienced a fatal error");
}
- ::exit(1);
}
void QWaylandEventThread::readWaylandEvents()
{
- if (wl_display_dispatch(m_display) < 0)
- checkErrorAndExit();
+ if (wl_display_dispatch(m_display) < 0) {
+ checkError();
+ m_readNotifier->setEnabled(false);
+ emit fatalError();
+ return;
+ }
emit newEventsRead();
}