blob: 8497f7e229e8cf23de04b8efb19ff1279bddf90b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
changeset: 576316:5310862f0f2a
tag: tip
parent: 576314:6159d3fc46c6
user: stransky <stransky@redhat.com>
date: Thu Apr 01 20:02:47 2021 +0200
files: widget/gtk/WindowSurfaceWayland.cpp widget/gtk/nsWaylandDisplay.cpp
description:
Bug 1702606 [Wayland] Don't call mWaylandDisplay::WaitForSyncEnd() from Compositor/Render thread, r?rmader
Differential Revision: https://phabricator.services.mozilla.com/D110590
diff --git a/widget/gtk/WindowSurfaceWayland.cpp b/widget/gtk/WindowSurfaceWayland.cpp
--- a/widget/gtk/WindowSurfaceWayland.cpp
+++ b/widget/gtk/WindowSurfaceWayland.cpp
@@ -737,10 +737,6 @@ already_AddRefed<gfx::DrawTarget> Window
return nullptr;
}
- // Wait until all pending events are processed. There may be queued
- // wl_buffer release event which releases our wl_buffer for further rendering.
- mWaylandDisplay->WaitForSyncEnd();
-
// Lock the surface *after* WaitForSyncEnd() call as is can fire
// FlushPendingCommits().
MutexAutoLock lock(mSurfaceLock);
diff --git a/widget/gtk/nsWaylandDisplay.cpp b/widget/gtk/nsWaylandDisplay.cpp
--- a/widget/gtk/nsWaylandDisplay.cpp
+++ b/widget/gtk/nsWaylandDisplay.cpp
@@ -239,6 +239,10 @@ void nsWaylandDisplay::QueueSyncBegin()
}
void nsWaylandDisplay::WaitForSyncEnd() {
+ MOZ_RELEASE_ASSERT(
+ NS_IsMainThread(),
+ "nsWaylandDisplay::WaitForSyncEnd() can be called in main thread only!");
+
// We're done here
if (!mSyncCallback) {
return;
|