diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 5830c136..5b2236ee 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -93,6 +93,11 @@ QWaylandWindow::~QWaylandWindow()
if (mSurface)
reset(false);
+ if (mFrameCallback) {
+ wl_callback_destroy(mFrameCallback);
+ mFrameCallback = nullptr;
+ }
+
const QWindow *parent = window();
const auto tlw = QGuiApplication::topLevelWindows();
for (QWindow *w : tlw) {
@@ -250,11 +255,6 @@ void QWaylandWindow::reset(bool sendDestroyEvent)
mSurface.reset();
}
- if (mFrameCallback) {
- wl_callback_destroy(mFrameCallback);
- mFrameCallback = nullptr;
- }
-
int timerId = mFrameCallbackTimerId.fetchAndStoreOrdered(-1);
if (timerId != -1) {
killTimer(timerId);