Skip to content

Commit 9db800f

Browse files
committed
App: Observe state before accessing body (race)
1 parent 6430adb commit 9db800f

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

Sources/SwiftCrossUI/_App.swift

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,32 +51,6 @@ class _App<AppRoot: App> {
5151
environment: self.environment
5252
)
5353

54-
let body = self.app.body
55-
let rootNode = AppRoot.Body.Node(
56-
from: body,
57-
backend: self.backend,
58-
environment: self.environment
59-
)
60-
61-
self.backend.setRootEnvironmentChangeHandler {
62-
self.environment = self.backend.computeRootEnvironment(
63-
defaultEnvironment: baseEnvironment
64-
)
65-
self.forceRefresh()
66-
}
67-
68-
// Update application-wide menu
69-
self.backend.setApplicationMenu(body.commands.resolve())
70-
71-
rootNode.update(
72-
nil,
73-
backend: self.backend,
74-
environment: self.backend.computeRootEnvironment(
75-
defaultEnvironment: baseEnvironment
76-
)
77-
)
78-
self.sceneGraphRoot = rootNode
79-
8054
let mirror = Mirror(reflecting: self.app)
8155
for property in mirror.children {
8256
if property.label == "state" && property.value is ObservableObject {
@@ -116,6 +90,32 @@ class _App<AppRoot: App> {
11690
}
11791
self.cancellables.append(cancellable)
11892
}
93+
94+
let body = self.app.body
95+
let rootNode = AppRoot.Body.Node(
96+
from: body,
97+
backend: self.backend,
98+
environment: self.environment
99+
)
100+
101+
self.backend.setRootEnvironmentChangeHandler {
102+
self.environment = self.backend.computeRootEnvironment(
103+
defaultEnvironment: baseEnvironment
104+
)
105+
self.forceRefresh()
106+
}
107+
108+
// Update application-wide menu
109+
self.backend.setApplicationMenu(body.commands.resolve())
110+
111+
rootNode.update(
112+
nil,
113+
backend: self.backend,
114+
environment: self.backend.computeRootEnvironment(
115+
defaultEnvironment: baseEnvironment
116+
)
117+
)
118+
self.sceneGraphRoot = rootNode
119119
}
120120
}
121121
}

0 commit comments

Comments
 (0)