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