@@ -49,8 +49,7 @@ final class ViewGraph: GraphHost {
49
49
private weak var _preferenceBridge : PreferenceBridge ?
50
50
var preferenceBridge : PreferenceBridge ? {
51
51
get { _preferenceBridge }
52
- // FIXME: TO BE CONFIRMED
53
- set { setPreferenceBridge ( to: newValue, isInvalidating: newValue == nil ) }
52
+ set { setPreferenceBridge ( to: newValue, isInvalidating: false ) }
54
53
}
55
54
#if canImport(Darwin) // FIXME: See #39
56
55
var bridgedPreferences : [ ( AnyPreferenceKey . Type , OGAttribute ) ] = [ ]
@@ -88,6 +87,10 @@ final class ViewGraph: GraphHost {
88
87
#endif
89
88
}
90
89
90
+ deinit {
91
+ removePreferenceOutlets ( isInvalidating: true )
92
+ }
93
+
91
94
@inline ( __always)
92
95
func updateOutputs( at time: Time ) {
93
96
beginNextUpdate ( at: time)
@@ -168,10 +171,6 @@ final class ViewGraph: GraphHost {
168
171
setPreferenceBridge ( to: nil , isInvalidating: true )
169
172
}
170
173
171
- private func setPreferenceBridge( to bridge: PreferenceBridge ? , isInvalidating: Bool ) {
172
- // TODO
173
- }
174
-
175
174
private func makePreferenceOutlets( outputs: _ViewOutputs ) {
176
175
// TODO
177
176
}
@@ -269,6 +268,24 @@ final class ViewGraph: GraphHost {
269
268
}
270
269
}
271
270
271
+ extension ViewGraph {
272
+ fileprivate func setPreferenceBridge( to bridge: PreferenceBridge ? , isInvalidating: Bool ) {
273
+ // TODO
274
+ }
275
+ }
276
+
277
+ extension PreferenceBridge {
278
+ func invalidate( ) {
279
+ requestedPreferences = PreferenceKeys ( )
280
+ bridgedViewInputs = PropertyList ( )
281
+ for child in children {
282
+ let viewGraph = child. takeRetainedValue ( )
283
+ viewGraph. setPreferenceBridge ( to: nil , isInvalidating: true )
284
+ child. release ( )
285
+ }
286
+ }
287
+ }
288
+
272
289
extension ViewGraph {
273
290
struct NextUpdate {
274
291
var time : Time
0 commit comments