diff --git a/packages/manifest b/packages/manifest index ba09562..db753cc 100644 --- a/packages/manifest +++ b/packages/manifest @@ -363,7 +363,7 @@ ["yaowbgl"] = { ["manifestVersion"] = "1.0", ["package"] = "yaowbgl", - ["version"] = "1.1.0", + ["version"] = "1.1.1", ["name"] = "Yet A Other Widget Based Graphical Library", ["repo"] = "tree/master/yaowbgl", ["description"] = "New version of libgui, but using libclass2 and cleaner code and interface.", diff --git a/packages/yaowbgl.tar b/packages/yaowbgl.tar index cdc4a51..2886db2 100644 Binary files a/packages/yaowbgl.tar and b/packages/yaowbgl.tar differ diff --git a/programs.cfg b/programs.cfg index 1b76012..644d9ca 100644 --- a/programs.cfg +++ b/programs.cfg @@ -374,7 +374,7 @@ dependencies = { ["libclass2"] = "/" } - version = "1.1.0", + version = "1.1.1", name = "Yet A Other Widget Based Graphical Library", description = "New version of libgui, but using libclass2 and cleaner code and interface."; authors = "AR2000AR", diff --git a/yaowbgl/lib/yaowbgl/widget/Frame.lua b/yaowbgl/lib/yaowbgl/widget/Frame.lua index 58437de..6ccac54 100644 --- a/yaowbgl/lib/yaowbgl/widget/Frame.lua +++ b/yaowbgl/lib/yaowbgl/widget/Frame.lua @@ -2,6 +2,24 @@ local gpu = require("component").gpu local Widget = require("yaowbgl.widget.Widget") local event = require("event") +--============================================================================= +--test bitblt bug +local bitBltFix = false +local testBuffer1 = gpu.allocateBuffer(2, 2) +local testBuffer2 = gpu.allocateBuffer(2, 2) +gpu.setActiveBuffer(testBuffer1) +gpu.set(1, 2, 'X') +gpu.bitblt(testBuffer2, 1, 2, 1, 1, testBuffer1, 1, 2) +gpu.setActiveBuffer(testBuffer2) +if (gpu.get(1, 2) == 'X') then + bitBltFix = false +else + bitBltFix = true +end +gpu.setActiveBuffer(0) +gpu.freeBuffer(testBuffer1) +gpu.freeBuffer(testBuffer2) + --============================================================================= ---@class Frame:Widget @@ -112,7 +130,11 @@ function Frame:draw() if (newBuffer and newBuffer ~= defaultBuffer) then --copy the old buffer in the new buffer for transparancy effect - gpu.bitblt(newBuffer, self:absX(), self:absY(), self:width(), self:height(), defaultBuffer, self:absY(), self:absX()) + if (bitBltFix) then + gpu.bitblt(newBuffer, self:absX(), self:absY(), self:width(), self:height(), defaultBuffer, self:absY(), self:absX()) + else + gpu.bitblt(newBuffer, self:absX(), self:absY(), self:width(), self:height(), defaultBuffer, self:absX(), self:absY()) + end end --clean background @@ -141,7 +163,11 @@ function Frame:draw() end --restore buffer if (newBuffer and newBuffer ~= defaultBuffer) then - gpu.bitblt(defaultBuffer, self:absX(), self:absY(), self:width(), self:height(), newBuffer, self:absY(), self:absX()) + if (bitBltFix) then + gpu.bitblt(defaultBuffer, self:absX(), self:absY(), self:width(), self:height(), newBuffer, self:absY(), self:absX()) + else + gpu.bitblt(defaultBuffer, self:absX(), self:absY(), self:width(), self:height(), newBuffer, self:absX(), self:absY()) + end gpu.setActiveBuffer(defaultBuffer) gpu.freeBuffer(newBuffer) end