diff --git a/DanmakuFlameMaster/src/main/java/master/flame/danmaku/controller/CacheManagingDrawTask.java b/DanmakuFlameMaster/src/main/java/master/flame/danmaku/controller/CacheManagingDrawTask.java index d51b2314..10b07c78 100644 --- a/DanmakuFlameMaster/src/main/java/master/flame/danmaku/controller/CacheManagingDrawTask.java +++ b/DanmakuFlameMaster/src/main/java/master/flame/danmaku/controller/CacheManagingDrawTask.java @@ -519,8 +519,10 @@ public void handleMessage(Message msg) { cacheitem.requestFlags |= BaseDanmaku.FLAG_REQUEST_REMEASURE; } cacheitem.requestFlags |= BaseDanmaku.FLAG_REQUEST_INVALIDATE; - if (!pair.second && cacheitem.hasDrawingCache()) { - DanmakuUtils.buildDanmakuDrawingCache(cacheitem, mDisp, (DrawingCache) cacheitem.cache); + if (!pair.second && cacheitem.hasDrawingCache() && !cacheitem.cache.hasReferences()) { + DrawingCache cache = DanmakuUtils.buildDanmakuDrawingCache(cacheitem, mDisp, (DrawingCache) cacheitem.cache); + cacheitem.cache = cache; + push(cacheitem, 0, true); return; } if (cacheitem.isLive) {