refactor: clean up

This commit is contained in:
dscyrescotti
2024-06-09 12:32:36 +07:00
parent 20e653c200
commit c3a14bd608
3 changed files with 15 additions and 2 deletions

View File

@@ -29,7 +29,7 @@ final class GraphicContext: @unchecked Sendable {
var erasers: [URL: EraserStroke] = [:]
let concurrentQueue = DispatchQueue(label: "com.dispatchBarrier", attributes: .concurrent)
let barrierQueue = DispatchQueue(label: "com.memola.app.graphic-context", attributes: .concurrent)
init() {
setViewPortVertices()

View File

@@ -84,7 +84,7 @@ final class PenStroke: Stroke, @unchecked Sendable {
eraserStrokes = Set(object.erasers.compactMap { [graphicContext] eraser -> EraserStroke? in
guard let eraser = eraser as? EraserObject else { return nil }
let url = eraser.objectID.uriRepresentation()
return graphicContext.concurrentQueue.sync(flags: .barrier) {
return graphicContext.barrierQueue.sync(flags: .barrier) {
if graphicContext.erasers[url] == nil {
let _stroke = EraserStroke(object: eraser)
_stroke.loadQuads(from: eraser)

View File

@@ -100,5 +100,18 @@ class GraphicRenderPass: RenderPass {
}
graphicContext.previousStroke = nil
}
let eraserStrokes = graphicContext.eraserStrokes
for eraserStroke in eraserStrokes {
if eraserStroke.finishesSaving {
graphicContext.eraserStrokes.remove(eraserStroke)
continue
}
descriptor.colorAttachments[0].loadAction = clearsTexture ? .clear : .load
clearsTexture = false
eraserRenderPass.stroke = eraserStroke
eraserRenderPass.descriptor = descriptor
eraserRenderPass.draw(on: canvas, with: renderer)
}
}
}