1*4882a593SmuzhiyunFrom 9809b77e3fb1fb7fc74dad0aa6f5bd3482255271 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Tue, 30 Aug 2022 16:32:54 +0800 4*4882a593SmuzhiyunSubject: [PATCH 17/17] Revert "Client: Don't send fake 5*4882a593Smuzhiyun SurfaceCreated/Destroyed events" 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunThis reverts commit cd21404f99b486ff62225699e1a4bdc0d5b3d5c1. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunOthers, e.g. Quick scenegraph, still need surfaceAboutToBeDestroyed 10*4882a593Smuzhiyunevent to cleanup renderer resources. 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 13*4882a593Smuzhiyun--- 14*4882a593Smuzhiyun src/client/qwaylandwindow.cpp | 10 ++++++++-- 15*4882a593Smuzhiyun src/client/qwaylandwindow_p.h | 2 +- 16*4882a593Smuzhiyun 2 files changed, 9 insertions(+), 3 deletions(-) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyundiff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp 19*4882a593Smuzhiyunindex 81d4aef..fdb3d17 100644 20*4882a593Smuzhiyun--- a/src/client/qwaylandwindow.cpp 21*4882a593Smuzhiyun+++ b/src/client/qwaylandwindow.cpp 22*4882a593Smuzhiyun@@ -97,7 +97,7 @@ QWaylandWindow::~QWaylandWindow() 23*4882a593Smuzhiyun delete mWindowDecoration; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun if (mSurface) 26*4882a593Smuzhiyun- reset(); 27*4882a593Smuzhiyun+ reset(false); 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun const QWindow *parent = window(); 30*4882a593Smuzhiyun const auto tlw = QGuiApplication::topLevelWindows(); 31*4882a593Smuzhiyun@@ -153,6 +153,8 @@ void QWaylandWindow::initWindow() 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun if (!mSurface) { 34*4882a593Smuzhiyun initializeWlSurface(); 35*4882a593Smuzhiyun+ QPlatformSurfaceEvent e(QPlatformSurfaceEvent::SurfaceCreated); 36*4882a593Smuzhiyun+ QGuiApplication::sendEvent(window(), &e); 37*4882a593Smuzhiyun } 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun if (shouldCreateSubSurface()) { 40*4882a593Smuzhiyun@@ -286,8 +288,12 @@ bool QWaylandWindow::shouldCreateSubSurface() const 41*4882a593Smuzhiyun return QPlatformWindow::parent() != nullptr; 42*4882a593Smuzhiyun } 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun-void QWaylandWindow::reset() 45*4882a593Smuzhiyun+void QWaylandWindow::reset(bool sendDestroyEvent) 46*4882a593Smuzhiyun { 47*4882a593Smuzhiyun+ if (mSurface && sendDestroyEvent) { 48*4882a593Smuzhiyun+ QPlatformSurfaceEvent e(QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed); 49*4882a593Smuzhiyun+ QGuiApplication::sendEvent(window(), &e); 50*4882a593Smuzhiyun+ } 51*4882a593Smuzhiyun mWaitingToApplyConfigure = false; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun delete mShellSurface; 54*4882a593Smuzhiyundiff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h 55*4882a593Smuzhiyunindex afd318c..63901a0 100644 56*4882a593Smuzhiyun--- a/src/client/qwaylandwindow_p.h 57*4882a593Smuzhiyun+++ b/src/client/qwaylandwindow_p.h 58*4882a593Smuzhiyun@@ -273,7 +273,7 @@ private: 59*4882a593Smuzhiyun void initializeWlSurface(); 60*4882a593Smuzhiyun bool shouldCreateShellSurface() const; 61*4882a593Smuzhiyun bool shouldCreateSubSurface() const; 62*4882a593Smuzhiyun- void reset(); 63*4882a593Smuzhiyun+ void reset(bool sendDestroyEvent = true); 64*4882a593Smuzhiyun void sendExposeEvent(const QRect &rect); 65*4882a593Smuzhiyun static void closePopups(QWaylandWindow *parent); 66*4882a593Smuzhiyun QPlatformScreen *calculateScreenFromSurfaceEvents() const; 67*4882a593Smuzhiyun-- 68*4882a593Smuzhiyun2.20.1 69*4882a593Smuzhiyun 70