mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
Get rid of the weird interaction between device implementations, `ffi.util` (`isSDL`, `noSDL`) and the device input code: each device knows if it's using SDL or not, so rely on that to load the right underlying input implementation.
56 lines
1.5 KiB
Lua
56 lines
1.5 KiB
Lua
local isAndroid, _ = pcall(require, "android")
|
|
local lfs = require("libs/libkoreader-lfs")
|
|
local util = require("ffi/util")
|
|
|
|
local function probeDevice()
|
|
if isAndroid then
|
|
return require("device/android/device")
|
|
end
|
|
|
|
local kindle_test_stat = lfs.attributes("/proc/usid")
|
|
if kindle_test_stat then
|
|
return require("device/kindle/device")
|
|
end
|
|
|
|
local kobo_test_stat = lfs.attributes("/bin/kobo_config.sh")
|
|
if kobo_test_stat then
|
|
return require("device/kobo/device")
|
|
end
|
|
|
|
local pbook_test_stat = lfs.attributes("/ebrmain")
|
|
if pbook_test_stat then
|
|
return require("device/pocketbook/device")
|
|
end
|
|
|
|
local remarkable_test_stat = lfs.attributes("/usr/bin/xochitl")
|
|
if remarkable_test_stat then
|
|
return require("device/remarkable/device")
|
|
end
|
|
|
|
local sony_prstux_test_stat = lfs.attributes("/etc/PRSTUX")
|
|
if sony_prstux_test_stat then
|
|
return require("device/sony-prstux/device")
|
|
end
|
|
|
|
local cervantes_test_stat = lfs.attributes("/usr/bin/ntxinfo")
|
|
if cervantes_test_stat then
|
|
return require("device/cervantes/device")
|
|
end
|
|
|
|
-- add new ports here:
|
|
--
|
|
-- if --[[ implement a proper test instead --]] false then
|
|
-- return require("device/newport/device")
|
|
-- end
|
|
|
|
if util.loadSDL2() then
|
|
return require("device/sdl/device")
|
|
end
|
|
|
|
error("Could not find hardware abstraction for this platform. If you are trying to run the emulator, please ensure SDL is installed.")
|
|
end
|
|
|
|
local dev = probeDevice()
|
|
dev:init()
|
|
return dev
|