From 4997b4e56daa77c93e80c72646980ed7b402cc9c Mon Sep 17 00:00:00 2001 From: Alexander Weber Date: Tue, 25 Aug 2020 17:30:29 +0200 Subject: [PATCH] fix the printer Issues was caused by caching mechanism --- apps/os_print_app.lua | 17 +++++++++++------ apps/tetris_app.lua | 1 - block_devices.lua | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/apps/os_print_app.lua b/apps/os_print_app.lua index 826cba3..09facba 100644 --- a/apps/os_print_app.lua +++ b/apps/os_print_app.lua @@ -1,6 +1,6 @@ local printer_range = 10 -local function trigger_queue(mtos) +local function trigger_queue(app, mtos) -- Check print requirements if mtos.sysdata.selected_view ~= 'output' or mtos.sysdata.out_stack_save or @@ -17,6 +17,7 @@ local function trigger_queue(mtos) mtos.sysdata.print_progress = 0 mtos.sysdata.paper_count = mtos.sysdata.paper_count - 1 mtos.sysdata.dye_count = mtos.sysdata.dye_count - 0.1 + mtos.bdev.removable_disk = nil -- force reading local idata = mtos.bdev:get_removable_disk() local stack = ItemStack("laptop:printed_paper") local print_data = mtos.sysdata.print_queue[1] @@ -24,9 +25,10 @@ local function trigger_queue(mtos) table.remove(mtos.sysdata.print_queue, 1) idata:reload(stack) idata.label = print_data.title + mtos.bdev:sync() end - local timer = minetest.get_node_timer(mtos.pos) + local timer = app:get_timer() if not timer:is_started() then timer:start(1) end @@ -37,6 +39,7 @@ local function sync_stack_values(mtos) mtos.sysdata.paper_count = mtos.sysdata.paper_count or 0 mtos.sysdata.dye_count = mtos.sysdata.dye_count or 0 mtos.sysdata.print_progress = mtos.sysdata.print_progress or 0 + mtos.bdev.removable_disk = nil -- force reading local idata = mtos.bdev:get_removable_disk() -- store old stack values if mtos.sysdata.selected_view == 'paper' then @@ -68,7 +71,8 @@ laptop.register_app("printer_launcher", { mtos.sysdata.print_queue = mtos.sysdata.print_queue or {} mtos.sysdata.selected_view = mtos.sysdata.selected_view or 'output' sync_stack_values(mtos) - trigger_queue(mtos) + trigger_queue(launcher_app, mtos) + mtos.bdev:sync() -- inventory fields local formspec = "size[9,8]".. "list[current_player;main;0.3,3.85;8,1;]" .. @@ -76,7 +80,6 @@ laptop.register_app("printer_launcher", { "listring[nodemeta:"..mtos.pos.x..','..mtos.pos.y..','..mtos.pos.z..";main]" .. "listring[current_player;main]".. mtos.theme:get_label('0,0', mtos.hwdef.description, 'titlebar') - local idata = mtos.bdev:get_removable_disk() -- queue formspec = formspec .. mtos.theme:get_tableoptions().. @@ -164,12 +167,14 @@ laptop.register_app("printer_launcher", { mtos.sysdata.print_progress = 0 end idata:reload(idata.stack) - trigger_queue(mtos) + trigger_queue(app, mtos) + mtos.bdev:sync() end, on_timer = function(app, mtos) mtos.sysdata.print_progress = mtos.sysdata.print_progress + 1 - return trigger_queue(mtos) + mtos.bdev.removable_disk = nil -- force reading + return trigger_queue(app, mtos) end, }) diff --git a/apps/tetris_app.lua b/apps/tetris_app.lua index d3249e3..945c3dc 100644 --- a/apps/tetris_app.lua +++ b/apps/tetris_app.lua @@ -239,7 +239,6 @@ laptop.register_app("tetris", { formspec_func = function(app, mtos) local data = mtos.bdev:get_app_storage('ram', 'tetris') local tetris = get_tetris(app, data) - local timer = minetest.get_node_timer(mtos.pos) if not data.t then return mtos.theme:get_button('2,4;2,2', 'major', 'new', 'New Game', 'Start a new game') end diff --git a/block_devices.lua b/block_devices.lua index d6d6963..00b7ba5 100644 --- a/block_devices.lua +++ b/block_devices.lua @@ -172,7 +172,7 @@ function bdev:sync() if self.removable_disk.def and self.removable_disk.label ~= self.removable_disk.def.description then self.removable_disk.meta:set_string("description", self.removable_disk.label) end - if self.removable_disk.storage then + if self.removable_disk.storage and next(self.removable_disk.storage) then self.removable_disk.meta:set_string("os_storage", minetest.serialize(self.removable_disk.storage)) end end