Skip to content

Commit 7d375a9

Browse files
committed
RenderBlackboard: turn into a global actor
1 parent 0c53f51 commit 7d375a9

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

Sources/Substrate/RenderGraph/RenderBlackboard.swift

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,51 @@
88

99
import Foundation
1010

11+
@globalActor
1112
public actor RenderBlackboard {
12-
static let blackboard = RenderBlackboard()
13-
private var mappings = [ObjectIdentifier : any Sendable]()
13+
public static let shared = RenderBlackboard()
14+
15+
@RenderBlackboard static var mappings = [ObjectIdentifier : any Sendable]()
1416

1517
public init() {
1618

1719
}
1820

19-
public func add<T: Sendable>(_ obj: T) {
21+
@RenderBlackboard
22+
public static func add<T: Sendable>(_ obj: T) {
2023
self.mappings[ObjectIdentifier(T.self)] = obj
2124
}
2225

23-
public func remove<T: Sendable>(_ obj: T) {
26+
@RenderBlackboard
27+
public static func remove<T: Sendable>(_ obj: T) {
2428
self.mappings[ObjectIdentifier(T.self)] = nil
2529
}
2630

27-
public func remove<T: Sendable>(type: T.Type) {
31+
@RenderBlackboard
32+
public static func remove<T: Sendable>(type: T.Type) {
2833
self.mappings[ObjectIdentifier(type)] = nil
2934
}
3035

31-
public func get<T: Sendable>(_ type: T.Type) -> T {
36+
@RenderBlackboard
37+
public static func get<T: Sendable>(_ type: T.Type) -> T {
3238
guard let item = self.mappings[ObjectIdentifier(type)] else {
3339
fatalError("No item in blackboard of type \(type).")
3440
}
3541
return item as! T
3642
}
3743

38-
public func tryGet<T: Sendable>(_ type: T.Type) -> T? {
44+
@RenderBlackboard
45+
public static func tryGet<T: Sendable>(_ type: T.Type) -> T? {
3946
return self.mappings[ObjectIdentifier(type)] as! T?
4047
}
4148

42-
public func has<T: Sendable>(_ type: T.Type) -> Bool {
49+
@RenderBlackboard
50+
public static func has<T: Sendable>(_ type: T.Type) -> Bool {
4351
return self.mappings[ObjectIdentifier(type)] != nil
4452
}
4553

46-
public func clear() {
54+
@RenderBlackboard
55+
public static func clear() {
4756
self.mappings.removeAll(keepingCapacity: true)
4857
}
4958
}

0 commit comments

Comments
 (0)