diff --git a/lib/chroot.lua b/lib/chroot.lua index 6635642..c1e0061 100644 --- a/lib/chroot.lua +++ b/lib/chroot.lua @@ -12,16 +12,20 @@ if love.getVersion() >= 12 then end else local ffi = require 'ffi' + local liblove = ffi.os == 'Windows' + and ffi.load 'love' + or ffi.C -- thanks to slime73, Love2D developer :) + ffi.cdef [[ int PHYSFS_mount(const char *, const char *, int); int PHYSFS_unmount(const char *);]] -- FIXME: Bug may appear in Linux. Recompile Love2D or use official PPA. function ll._mntdir(dir) - return ffi.C.PHYSFS_mount(dir, '/', 0) ~= 0 + return liblove.PHYSFS_mount(dir, '/', 0) ~= 0 end function ll._umntdir(dir) - ffi.C.PHYSFS_unmount(dir) + liblove.PHYSFS_unmount(dir) end end diff --git a/ll-min.lua b/ll-min.lua index f98be56..86e6389 100644 --- a/ll-min.lua +++ b/ll-min.lua @@ -14,13 +14,16 @@ function llHome() end if love.getVersion() >= 12 then - local stfn - function love.graphics.stencil(fn) stfn = fn end + function love.graphics.stencil(fn) + love.graphics.setColorMask(false) + love.graphics.setStencilMode('replace', 'always', 1) + fn() + love.graphics.setColorMask(true) + end function love.graphics.setStencilTest(cmp, val) - if not cmp - then love.graphics.setStencilMode() - else love.graphics.setStencilMode('replace', cmp, val, 1, 1) - stfn() + if cmp + then love.graphics.setStencilMode('keep', cmp, val) + else love.graphics.setStencilMode() end end end