Avoid crashing race condition.
Change-Id: I940bcbc509a689804a02f71af45f5efc19bccf9f Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
This commit is contained in:
parent
0bfe40dc8d
commit
c0847e9144
@ -54,6 +54,7 @@
|
|||||||
#include "qwaylandwindowmanagerintegration_p.h"
|
#include "qwaylandwindowmanagerintegration_p.h"
|
||||||
|
|
||||||
#include <QtCore/QFileInfo>
|
#include <QtCore/QFileInfo>
|
||||||
|
#include <QtCore/QPointer>
|
||||||
#include <QtGui/QWindow>
|
#include <QtGui/QWindow>
|
||||||
|
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
@ -245,9 +246,14 @@ void QWaylandWindow::setVisible(bool visible)
|
|||||||
// QWaylandShmBackingStore::beginPaint().
|
// QWaylandShmBackingStore::beginPaint().
|
||||||
} else {
|
} else {
|
||||||
QWindowSystemInterface::handleExposeEvent(window(), QRegion());
|
QWindowSystemInterface::handleExposeEvent(window(), QRegion());
|
||||||
|
// when flushing the event queue, it could contain a close event, in which
|
||||||
|
// case 'this' will be deleted. When that happens, we must abort right away.
|
||||||
|
QPointer<QWaylandWindow> deleteGuard(this);
|
||||||
QWindowSystemInterface::flushWindowSystemEvents();
|
QWindowSystemInterface::flushWindowSystemEvents();
|
||||||
attach(static_cast<QWaylandBuffer *>(0), 0, 0);
|
if (!deleteGuard.isNull()) {
|
||||||
commit();
|
attach(static_cast<QWaylandBuffer *>(0), 0, 0);
|
||||||
|
commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user