feat(原生桌面): 优化并发缓存与取消释放
build.yaml / build (push) Successful in 47s

This commit is contained in:
xiaoqidun committed 2026-10-19 19:07:34 +08:00
1 parent 83d936e9f8
commit 010ab9f314
1 file changed
+7
+7
View File
@@ -214,8 +214,14 @@ func (e *NativeEngine) Call(ctx context.Context, name string, args []any, emit f
defer func() { defer func() {
worker.Renderer.OutputContext = context.Background() worker.Renderer.OutputContext = context.Background()
e.renderMu.Lock() e.renderMu.Lock()
if result != nil && result["ok"] == true && ctx.Err() == nil {
e.currentSession.svgFonts = maps.Clone(worker.svgFonts) e.currentSession.svgFonts = maps.Clone(worker.svgFonts)
clear(worker.pageCache)
clear(worker.textCache)
worker.textOrder = nil
clear(worker.svgFonts)
e.renderIdle = append(e.renderIdle, worker) e.renderIdle = append(e.renderIdle, worker)
}
e.renderCount-- e.renderCount--
if e.renderCount == 0 { if e.renderCount == 0 {
close(e.renderDone) close(e.renderDone)
@@ -391,6 +397,7 @@ func (e *NativeEngine) renderSession(ctx context.Context) (*Session, error) {
defer e.renderMu.Unlock() defer e.renderMu.Unlock()
if count := len(e.renderIdle); count > 0 { if count := len(e.renderIdle); count > 0 {
worker := e.renderIdle[count-1] worker := e.renderIdle[count-1]
e.renderIdle[count-1] = nil
e.renderIdle = e.renderIdle[:count-1] e.renderIdle = e.renderIdle[:count-1]
worker.Renderer.OutputContext = ctx worker.Renderer.OutputContext = ctx
return worker, nil return worker, nil