diff --git a/aniphallow.lua b/aniphallow.lua index 8c44f13..68fe805 100644 --- a/aniphallow.lua +++ b/aniphallow.lua @@ -1425,12 +1425,9 @@ openPreviewWindow = function() local sy = S.previewStaScrollY local sw = S.sourceImage.width * z local sh = S.sourceImage.height * z - if S.useBgColor then - gc.color = S.bgColor - gc:fillRect(Rectangle(sx, sy, sw, sh)) - else - drawCheckerboard(gc, sw, sh, z, sx, sy) - end + -- Use solid bg instead of checkerboard for performance + gc.color = S.useBgColor and S.bgColor or Color(50, 50, 50) + gc:fillRect(Rectangle(sx, sy, sw, sh)) gc:drawImage(S.sourceImage, Rectangle(0, 0, S.sourceImage.width, S.sourceImage.height), Rectangle(sx, sy, sw, sh)) @@ -1581,8 +1578,10 @@ openPreviewWindow = function() previewTimer = Timer{ interval = S.animSpeed / 1000.0, ontick = function() - pvAnimFrame.value = pvAnimFrame.value + 1 - pcall(function() previewDlg:repaint() end) + if S.previewMode ~= "static" then + pvAnimFrame.value = pvAnimFrame.value + 1 + pcall(function() previewDlg:repaint() end) + end end } previewTimer:start() @@ -1590,9 +1589,17 @@ openPreviewWindow = function() pvRefreshTimer = Timer{ interval = 0.5, ontick = function() + local prevImg = S.sourceImage refreshSource() refreshLockFile() - pcall(function() previewDlg:repaint() end) + -- In static mode, only repaint if source image changed + if S.previewMode == "static" then + if S.sourceImage ~= prevImg then + pcall(function() previewDlg:repaint() end) + end + else + pcall(function() previewDlg:repaint() end) + end -- Auto-detect file change local currentFile = app.sprite and app.sprite.filename or ""