Paste P578

Masterwork From Distant Lands
ActivePublic

Authored by davidedmundson on Apr 9 2020, 10:11 AM.
diff --cc src/client/qwaylandwindow.cpp
index 9fa2f15f,dc4e3547..00000000
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@@ -244,17 -251,19 +244,21 @@@ void QWaylandWindow::reset(bool sendDes
mShellSurface = nullptr;
delete mSubSurfaceWindow;
mSubSurfaceWindow = nullptr;
- if (isInitialized()) {
+
+ invalidateSurface();
+ if (mSurface) {
emit wlSurfaceDestroyed();
QWriteLocker lock(&mSurfaceLock);
- destroy();
+ mSurface.reset();
}
- mScreens.clear();
- if (mFrameCallback) {
- wl_callback_destroy(mFrameCallback);
- mFrameCallback = nullptr;
- QWriteLocker(&mFrameCallbackLock) {
++ {
++ QWriteLocker frameLock(&mFrameCallbackLock);
+ if (mFrameCallback) {
+ wl_callback_destroy(mFrameCallback);
+ mFrameCallback = nullptr;
+ }
+ mWaitingForFrameCallback = false;
}
int timerId = mFrameCallbackTimerId.fetchAndStoreOrdered(-1);
@@@ -1149,18 -1143,21 +1153,21 @@@ void QWaylandWindow::handleUpdate(
qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread();
// TODO: Should sync subsurfaces avoid requesting frame callbacks?
QReadLocker lock(&mSurfaceLock);
- if (!isInitialized())
+ if (!mSurface)
return;
- if (mFrameCallback) {
- wl_callback_destroy(mFrameCallback);
- mFrameCallback = nullptr;
- }
+ {
+ QWriteLocker frameLock(&mFrameCallbackLock);
+ if (mFrameCallback) {
+ wl_callback_destroy(mFrameCallback);
+ mFrameCallback = nullptr;
+ }
- mFrameCallback = mSurface->frame();
- wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this);
- mWaitingForFrameCallback = true;
- mWaitingForUpdate = false;
- mFrameCallback = frame();
++ mFrameCallback = mSurface->frame();
+ wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this);
+ mWaitingForFrameCallback = true;
+ mWaitingForUpdate = false;
+ }
// Stop current frame timer if any, can't use killTimer directly, see comment above.
int fcbId = mFrameCallbackTimerId.fetchAndStoreOrdered(-1);
davidedmundson edited the content of this paste. (Show Details)Apr 9 2020, 10:11 AM
davidedmundson changed the title of this paste from untitled to Masterwork From Distant Lands.