From dacb59f6b20d5775bc2e7bb725637a14d6718c80 Mon Sep 17 00:00:00 2001 From: Hans-Werner Hilse Date: Thu, 27 Nov 2014 15:33:48 +0000 Subject: [PATCH] move debug function handover, set viewport for Kobo Mini in order to have debugging facilities in framebuffer:init(), we hand over the debug function as soon as we can. Also, set a viewport for Kobo Mini. Hopefully, it fits most people - I can only test on my unit. --- frontend/device/android/device.lua | 2 +- frontend/device/emulator/device.lua | 17 +++++++++++++++-- frontend/device/generic/device.lua | 3 ++- frontend/device/kindle/device.lua | 18 +++++++++--------- frontend/device/kobo/device.lua | 7 ++++++- 5 files changed, 33 insertions(+), 14 deletions(-) diff --git a/frontend/device/android/device.lua b/frontend/device/android/device.lua index 0a52fc11b..843fddc7c 100644 --- a/frontend/device/android/device.lua +++ b/frontend/device/android/device.lua @@ -13,7 +13,7 @@ local Device = Generic:new{ } function Device:init() - self.screen = require("ffi/framebuffer_android"):new{device = self} + self.screen = require("ffi/framebuffer_android"):new{device = self, debug = DEBUG} self.powerd = require("device/android/powerd"):new{device = self} self.input = require("device/input"):new{ device = self, diff --git a/frontend/device/emulator/device.lua b/frontend/device/emulator/device.lua index 394dcca96..a6bb97829 100644 --- a/frontend/device/emulator/device.lua +++ b/frontend/device/emulator/device.lua @@ -1,5 +1,6 @@ local Generic = require("device/generic/device") local util = require("ffi/util") +local DEBUG = require("dbg") local function yes() return true end @@ -19,21 +20,33 @@ function Device:init() if viewport then self.viewport = require("ui/geometry"):new(loadstring("return " .. viewport)()) end + local portrait = os.getenv("EMULATE_READER_FORCE_PORTRAIT") + if portrait then + self.isAlwaysPortrait = yes + end if util.haveSDL2() then - self.screen = require("ffi/framebuffer_SDL2_0"):new{device = self} + self.screen = require("ffi/framebuffer_SDL2_0"):new{device = self, debug = DEBUG} self.input = require("device/input"):new{ device = self, event_map = require("device/emulator/event_map_sdl2"), } else - self.screen = require("ffi/framebuffer_SDL1_2"):new{device = self} + self.screen = require("ffi/framebuffer_SDL1_2"):new{device = self, debug = DEBUG} self.input = require("device/input"):new{ device = self, event_map = require("device/emulator/event_map_sdl"), } end + if portrait then + self.input:registerEventAdjustHook(self.input.adjustTouchSwitchXY) + self.input:registerEventAdjustHook( + self.input.adjustTouchMirrorX, + self.screen:getScreenWidth() + ) + end + Generic.init(self) end diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 913ea5142..3a78029de 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -29,6 +29,8 @@ local Device = { -- some devices have part of their screen covered by the bezel viewport = nil, + -- enforce portrait orientation on display, no matter how configured at startup + isAlwaysPortrait = no, } function Device:new(o) @@ -42,7 +44,6 @@ function Device:init() if not self.screen then error("screen/framebuffer must be implemented") end - self.screen.debug = DEBUG DEBUG("initializing for device", self.model) DEBUG("framebuffer resolution:", self.screen:getSize()) diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index 6285620be..c5138fd5c 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -69,7 +69,7 @@ local KindleVoyage = Kindle:new{ } function Kindle2:init() - self.screen = require("ffi/framebuffer_einkfb"):new{device = self} + self.screen = require("ffi/framebuffer_einkfb"):new{device = self, debug = DEBUG} self.input = require("device/input"):new{ device = self, event_map = require("device/kindle/event_map_keyboard"), @@ -79,7 +79,7 @@ function Kindle2:init() end function KindleDXG:init() - self.screen = require("ffi/framebuffer_einkfb"):new{device = self} + self.screen = require("ffi/framebuffer_einkfb"):new{device = self, debug = DEBUG} self.input = require("device/input"):new{ device = self, event_map = require("device/kindle/event_map_keyboard"), @@ -90,7 +90,7 @@ function KindleDXG:init() end function Kindle3:init() - self.screen = require("ffi/framebuffer_einkfb"):new{device = self} + self.screen = require("ffi/framebuffer_einkfb"):new{device = self, debug = DEBUG} self.input = require("device/input"):new{ device = self, event_map = require("device/kindle/event_map_keyboard"), @@ -101,7 +101,7 @@ function Kindle3:init() end function Kindle4:init() - self.screen = require("ffi/framebuffer_einkfb"):new{device = self} + self.screen = require("ffi/framebuffer_einkfb"):new{device = self, debug = DEBUG} self.input = require("device/input"):new{ device = self, event_map = require("device/kindle/event_map_kindle4"), @@ -114,7 +114,7 @@ end local ABS_MT_POSITION_X = 53 local ABS_MT_POSITION_Y = 54 function KindleTouch:init() - self.screen = require("ffi/framebuffer_mxcfb"):new{device = self} + self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} self.powerd = require("device/kindle/powerd"):new{ device = self, batt_capacity_file = "/sys/devices/system/yoshi_battery/yoshi_battery0/battery_capacity", @@ -138,7 +138,7 @@ function KindleTouch:init() end function KindlePaperWhite:init() - self.screen = require("ffi/framebuffer_mxcfb"):new{device = self} + self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} self.powerd = require("device/kindle/powerd"):new{ device = self, fl_intensity_file = "/sys/devices/system/fl_tps6116x/fl_tps6116x0/fl_intensity", @@ -153,7 +153,7 @@ function KindlePaperWhite:init() end function KindlePaperWhite2:init() - self.screen = require("ffi/framebuffer_mxcfb"):new{device = self} + self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} self.powerd = require("device/kindle/powerd"):new{ device = self, fl_intensity_file = "/sys/class/backlight/max77696-bl/brightness", @@ -168,7 +168,7 @@ function KindlePaperWhite2:init() end function KindleBasic:init() - self.screen = require("ffi/framebuffer_mxcfb"):new{device = self} + self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} self.powerd = require("device/kindle/powerd"):new{ device = self, batt_capacity_file = "/sys/devices/system/wario_battery/wario_battery0/battery_capacity", @@ -183,7 +183,7 @@ function KindleBasic:init() end function KindleVoyage:init() - self.screen = require("ffi/framebuffer_mxcfb"):new{device = self} + self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} self.powerd = require("device/kindle/powerd"):new{ device = self, fl_intensity_file = "/sys/class/backlight/max77696-bl/brightness", diff --git a/frontend/device/kobo/device.lua b/frontend/device/kobo/device.lua index 18f7d2204..fcf596893 100644 --- a/frontend/device/kobo/device.lua +++ b/frontend/device/kobo/device.lua @@ -1,6 +1,7 @@ local Generic = require("device/generic/device") local lfs = require("libs/libkoreader-lfs") local Geom = require("ui/geometry") +local DEBUG = require("dbg") local function yes() return true end @@ -13,6 +14,8 @@ local Kobo = Generic:new{ touch_switch_xy = true, -- most Kobos have also mirrored X coordinates touch_mirrored_x = true, + -- enforce protrait mode on Kobos: + isAlwaysPortrait = yes, } -- TODO: hasKeys for some devices? @@ -27,6 +30,8 @@ local KoboTrilogy = Kobo:new{ local KoboPixie = Kobo:new{ model = "Kobo_pixie", display_dpi = 200, + -- bezel: + viewport = Geom:new{x=0, y=2, w=596, h=794}, } -- Kobo Aura H2O: @@ -64,7 +69,7 @@ local KoboPhoenix = Kobo:new{ } function Kobo:init() - self.screen = require("ffi/framebuffer_mxcfb"):new{device = self} + self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} self.powerd = require("device/kobo/powerd"):new{device = self} self.input = require("device/input"):new{ device = self,