diff --git a/base b/base index 9e4ae531c..a96cb1c55 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 9e4ae531c28ff35f43828056e88c18a3e80ff6ea +Subproject commit a96cb1c555c42d77ce88d9e97e89c87cd164d923 diff --git a/frontend/device/sdl/device.lua b/frontend/device/sdl/device.lua index 99b12e522..25b469ce9 100644 --- a/frontend/device/sdl/device.lua +++ b/frontend/device/sdl/device.lua @@ -90,6 +90,7 @@ local Device = Generic:new{ external_dict_when_back_callback = nil end end, + window = G_reader_settings:readSetting("sdl_window") or {}, } local AppImage = Device:new{ @@ -144,7 +145,14 @@ function Device:init() end self.hasClipboard = yes - self.screen = require("ffi/framebuffer_SDL2_0"):new{device = self, debug = logger.dbg} + self.screen = require("ffi/framebuffer_SDL2_0"):new{ + device = self, + debug = logger.dbg, + w = self.window.width, + h = self.window.height, + x = self.window.left, + y = self.window.top, + } self.powerd = require("device/sdl/powerd"):new{device = self} local ok, re = pcall(self.screen.setWindowIcon, self.screen, "resources/koreader.png") @@ -163,6 +171,7 @@ function Device:init() local SDL_MOUSEWHEEL = 1027 local SDL_MULTIGESTURE = 2050 local SDL_DROPFILE = 4096 + local SDL_WINDOWEVENT_MOVED = 4 local SDL_WINDOWEVENT_RESIZED = 5 if ev.code == SDL_MOUSEWHEEL then @@ -229,6 +238,8 @@ function Device:init() device_input.device.screen.screen_size.w = ev.value.data1 device_input.device.screen.screen_size.h = ev.value.data2 device_input.device.screen.resize(device_input.device.screen, ev.value.data1, ev.value.data2) + self.window.width = ev.value.data1 + self.window.height = ev.value.data2 local new_size = device_input.device.screen:getSize() logger.dbg("Resizing screen to", new_size) @@ -242,6 +253,9 @@ function Device:init() -- this triggers paged media like PDF and DjVu to redraw -- CreDocument doesn't need it UIManager:broadcastEvent(Event:new("RedrawCurrentPage")) + elseif ev.code == SDL_WINDOWEVENT_MOVED then + self.window.left = ev.value.data1 + self.window.top = ev.value.data2 end end, hasClipboardText = function() @@ -295,6 +309,12 @@ function Device:setDateTime(year, month, day, hour, min, sec) end end +function Device:exit() + G_reader_settings:saveSetting("sdl_window", self.window) + G_reader_settings:flush() + Generic.exit(self) +end + function Emulator:simulateSuspend() local InfoMessage = require("ui/widget/infomessage") local UIManager = require("ui/uimanager")