- Fix pop logic

- Retrieve data onlye when triggered
- Show message when thread is dead
- Push timer to thread
This commit is contained in:
ParticleG
2024-11-03 01:05:39 +08:00
parent bf36bfb02b
commit bd395b2775
2 changed files with 19 additions and 12 deletions

View File

@@ -70,7 +70,12 @@ local getCHN=love.thread.getChannel('CLIP_get')
local setCHN=love.thread.getChannel('CLIP_set') local setCHN=love.thread.getChannel('CLIP_set')
local trigCHN=love.thread.getChannel('CLIP_trig') local trigCHN=love.thread.getChannel('CLIP_trig')
love.thread.newThread('Zframework/clipboard_thread.lua'):start() local clipboard_thread=love.thread.newThread('Zframework/clipboard_thread.lua')
local isStarted,errorMessage=clipboard_thread:start()
if not isStarted then
MES.new("error",errorMessage,26)
end
local freshInterval=1 local freshInterval=1
local timer=0 local timer=0
@@ -83,8 +88,12 @@ return {
_update=function(dt) _update=function(dt)
timer=timer+dt timer=timer+dt
if timer>freshInterval then if timer>freshInterval then
if isStarted and not clipboard_thread:isRunning() then
MES.new("warn",clipboard_thread:getError(),26)
isStarted=false
end
trigCHN:push(timer)
timer=0 timer=0
trigCHN:push(0)
end end
end, end,
} }

View File

@@ -3,14 +3,14 @@ local setCHN=love.thread.getChannel('CLIP_set')
local trigCHN=love.thread.getChannel('CLIP_trig') local trigCHN=love.thread.getChannel('CLIP_trig')
JS=require'Zframework.js' JS=require'Zframework.js'
love.timer=require'love.timer' local sleep=require'love.timer'.sleep
local retrieving=false local retrieving=false
while true do while true do
if trigCHN:getCount()>0 then if trigCHN:getCount()>0 then
trigCHN:pop() local dt = trigCHN:pop()
if setCHN:getCount()>0 then if setCHN:getCount()>0 then
repeat setCHN:pop() until setCHN:getCount()==1 while setCHN:getCount()>1 do setCHN:pop() end
-- Set Clipboard -- Set Clipboard
JS.callJS(JS.stringFunc( JS.callJS(JS.stringFunc(
[[ [[
@@ -32,19 +32,17 @@ while true do
.catch((e)=>{}); .catch((e)=>{});
]], ]],
function(data) function(data)
while getCHN:getCount()>0 do print('getCHN count:', getCHN:getCount()); getCHN:pop() end while getCHN:getCount()>0 do getCHN:pop() end
print('Clipboard:', data)
getCHN:push(data) getCHN:push(data)
print('Pushed clipboard data')
retrieving=false retrieving=false
end, end,
function(id,error) print(id, error) end, function() retrieving=false end,
2, 1,
'getClipboardText' 'getClipboardText'
) )
retrieving=true retrieving=true
end end
JS.retrieveData(.0626) JS.retrieveData(dt)
end end
love.timer.sleep(.0626) sleep(.001)
end end