[chore] Drop SDL 1.2 (#5324)

Depends on https://github.com/koreader/koreader-base/pull/963.

Also includes Initial import of <linux/rtc.h> related stuff https://github.com/koreader/koreader-base/pull/965
pull/5334/head
Frans de Jonge 5 years ago committed by GitHub
parent 2d95a09e93
commit 7019ff15bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1 +1 @@
Subproject commit 639de5fa009b5688f2e86920b68b1a863c9f3c7a Subproject commit 0ef40965bb83f37b2d94c9e7b85c23a97c3a1504

@ -1,6 +1,5 @@
local Event = require("ui/event") local Event = require("ui/event")
local Generic = require("device/generic/device") local Generic = require("device/generic/device")
local util = require("ffi/util")
local logger = require("logger") local logger = require("logger")
local function yes() return true end local function yes() return true end
@ -107,125 +106,117 @@ function Device:init()
self.isAlwaysPortrait = yes self.isAlwaysPortrait = yes
end end
if util.haveSDL2() then self.hasClipboard = yes
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}
local ok, re = pcall(self.screen.setWindowIcon, self.screen, "resources/koreader.png") local ok, re = pcall(self.screen.setWindowIcon, self.screen, "resources/koreader.png")
if not ok then logger.warn(re) end if not ok then logger.warn(re) end
local input = require("ffi/input") local input = require("ffi/input")
self.input = require("device/input"):new{ self.input = require("device/input"):new{
device = self, device = self,
event_map = require("device/sdl/event_map_sdl2"), event_map = require("device/sdl/event_map_sdl2"),
handleSdlEv = function(device_input, ev) handleSdlEv = function(device_input, ev)
local Geom = require("ui/geometry") local Geom = require("ui/geometry")
local TimeVal = require("ui/timeval") local TimeVal = require("ui/timeval")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
-- SDL events can remain cdata but are almost completely transparent -- SDL events can remain cdata but are almost completely transparent
local SDL_MOUSEWHEEL = 1027 local SDL_MOUSEWHEEL = 1027
local SDL_MULTIGESTURE = 2050 local SDL_MULTIGESTURE = 2050
local SDL_DROPFILE = 4096 local SDL_DROPFILE = 4096
local SDL_WINDOWEVENT_RESIZED = 5 local SDL_WINDOWEVENT_RESIZED = 5
if ev.code == SDL_MOUSEWHEEL then if ev.code == SDL_MOUSEWHEEL then
local scrolled_x = ev.value.x local scrolled_x = ev.value.x
local scrolled_y = ev.value.y local scrolled_y = ev.value.y
local up = 1 local up = 1
local down = -1 local down = -1
local pos = Geom:new{ local pos = Geom:new{
x = 0, x = 0,
y = 0, y = 0,
w = 0, h = 0, w = 0, h = 0,
} }
local timev = TimeVal:new(ev.time) local timev = TimeVal:new(ev.time)
local fake_ges = { local fake_ges = {
ges = "pan", ges = "pan",
distance = 200, distance = 200,
distance_delayed = 200, distance_delayed = 200,
relative = { relative = {
x = 50*scrolled_x, x = 50*scrolled_x,
y = 100*scrolled_y, y = 100*scrolled_y,
}, },
relative_delayed = { relative_delayed = {
x = 50*scrolled_x, x = 50*scrolled_x,
y = 100*scrolled_y, y = 100*scrolled_y,
}, },
pos = pos, pos = pos,
time = timev, time = timev,
mousewheel_direction = scrolled_y, mousewheel_direction = scrolled_y,
} }
local fake_ges_release = { local fake_ges_release = {
ges = "pan_release", ges = "pan_release",
distance = fake_ges.distance, distance = fake_ges.distance,
distance_delayed = fake_ges.distance_delayed, distance_delayed = fake_ges.distance_delayed,
relative = fake_ges.relative, relative = fake_ges.relative,
relative_delayed = fake_ges.relative_delayed, relative_delayed = fake_ges.relative_delayed,
pos = pos, pos = pos,
time = timev, time = timev,
} }
local fake_pan_ev = Event:new("Pan", nil, fake_ges) local fake_pan_ev = Event:new("Pan", nil, fake_ges)
local fake_release_ev = Event:new("Gesture", fake_ges_release) local fake_release_ev = Event:new("Gesture", fake_ges_release)
if scrolled_y == down then if scrolled_y == down then
fake_ges.direction = "north" fake_ges.direction = "north"
UIManager:broadcastEvent(fake_pan_ev) UIManager:broadcastEvent(fake_pan_ev)
UIManager:broadcastEvent(fake_release_ev) UIManager:broadcastEvent(fake_release_ev)
elseif scrolled_y == up then elseif scrolled_y == up then
fake_ges.direction = "south" fake_ges.direction = "south"
UIManager:broadcastEvent(fake_pan_ev) UIManager:broadcastEvent(fake_pan_ev)
UIManager:broadcastEvent(fake_release_ev) UIManager:broadcastEvent(fake_release_ev)
end end
elseif ev.code == SDL_MULTIGESTURE then elseif ev.code == SDL_MULTIGESTURE then
-- no-op for now -- no-op for now
do end -- luacheck: ignore 541 do end -- luacheck: ignore 541
elseif ev.code == SDL_DROPFILE then elseif ev.code == SDL_DROPFILE then
local dropped_file_path = ev.value local dropped_file_path = ev.value
if dropped_file_path and dropped_file_path ~= "" then if dropped_file_path and dropped_file_path ~= "" then
local ReaderUI = require("apps/reader/readerui") local ReaderUI = require("apps/reader/readerui")
ReaderUI:doShowReader(dropped_file_path) ReaderUI:doShowReader(dropped_file_path)
end end
elseif ev.code == SDL_WINDOWEVENT_RESIZED then elseif ev.code == SDL_WINDOWEVENT_RESIZED then
device_input.device.screen.screen_size.w = ev.value.data1 device_input.device.screen.screen_size.w = ev.value.data1
device_input.device.screen.screen_size.h = ev.value.data2 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) device_input.device.screen.resize(device_input.device.screen, ev.value.data1, ev.value.data2)
local new_size = device_input.device.screen:getSize() local new_size = device_input.device.screen:getSize()
logger.dbg("Resizing screen to", new_size) logger.dbg("Resizing screen to", new_size)
-- try to catch as many flies as we can -- try to catch as many flies as we can
-- this means we can't just return one ScreenResize or SetDimensons event -- this means we can't just return one ScreenResize or SetDimensons event
UIManager:broadcastEvent(Event:new("SetDimensions", new_size)) UIManager:broadcastEvent(Event:new("SetDimensions", new_size))
UIManager:broadcastEvent(Event:new("ScreenResize", new_size)) UIManager:broadcastEvent(Event:new("ScreenResize", new_size))
--- @todo Toggle this elsewhere based on ScreenResize? --- @todo Toggle this elsewhere based on ScreenResize?
-- this triggers paged media like PDF and DjVu to redraw -- this triggers paged media like PDF and DjVu to redraw
-- CreDocument doesn't need it -- CreDocument doesn't need it
UIManager:broadcastEvent(Event:new("RedrawCurrentPage")) UIManager:broadcastEvent(Event:new("RedrawCurrentPage"))
end end
end, end,
hasClipboardText = function() hasClipboardText = function()
return input.hasClipboardText() return input.hasClipboardText()
end, end,
getClipboardText = function() getClipboardText = function()
return input.getClipboardText() return input.getClipboardText()
end, end,
setClipboardText = function(text) setClipboardText = function(text)
return input.setClipboardText(text) return input.setClipboardText(text)
end, end,
file_chooser = input.file_chooser, file_chooser = input.file_chooser,
} }
else
self.screen = require("ffi/framebuffer_SDL1_2"):new{device = self, debug = logger.dbg}
self.input = require("device/input"):new{
device = self,
event_map = require("device/sdl/event_map_sdl"),
}
end
self.keyboard_layout = require("device/sdl/keyboard_layout") self.keyboard_layout = require("device/sdl/keyboard_layout")

@ -1,31 +0,0 @@
return {
[10] = "1", [11] = "2", [12] = "3", [13] = "4", [14] = "5", [15] = "6", [16] = "7", [17] = "8", [18] = "9", [19] = "0",
[24] = "Q", [25] = "W", [26] = "E", [27] = "R", [28] = "T", [29] = "Y", [30] = "U", [31] = "I", [32] = "O", [33] = "P",
[38] = "A", [39] = "S", [40] = "D", [41] = "F", [42] = "G", [43] = "H", [44] = "J", [45] = "K", [46] = "L",
[52] = "Z", [53] = "X", [54] = "C", [55] = "V", [56] = "B", [57] = "N", [58] = "M",
[22] = "Backspace", -- Backspace
[36] = "Press", -- Enter
[50] = "Shift", -- left shift
[60] = ".",
[61] = "/",
[62] = "Sym", -- right shift key
[64] = "Alt", -- left alt
[65] = " ", -- Spacebar
[67] = "Menu", -- F[1]
[68] = "Power", -- F[2]
[72] = "LPgBack", -- F[6]
[73] = "LPgFwd", -- F[7]
[95] = "VPlus", -- F[11]
[96] = "VMinus", -- F[12]
[105] = "AA", -- right alt key
[110] = "Home", -- Home
[111] = "Up", -- arrow up
[112] = "RPgBack", -- normal PageUp
[113] = "Left", -- arrow left
[114] = "Right", -- arrow right
[115] = "End", -- End (above arrows)
[116] = "Down", -- arrow down
[117] = "RPgFwd", -- normal PageDown
[119] = "Del", -- Delete
}
Loading…
Cancel
Save