From 7da6dd28a5ebaace409f73d6a0b8aa425b0a95b4 Mon Sep 17 00:00:00 2001 From: Hans-Werner Hilse Date: Mon, 24 Nov 2014 21:09:28 +0000 Subject: [PATCH] handle Android app events in frontend/device code Events have been passed to the frontend/device (or /input) code before. Some of them have been handled in the FFI/input code, however. That seems to be highly critical with regard to timing, though, so we just let it enqueue the event for our code to process later. That way, a mutex that locks the input event queue can be freed faster. --- frontend/device/android/device.lua | 6 ++++++ frontend/device/input.lua | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/device/android/device.lua b/frontend/device/android/device.lua index caf88be99..0a52fc11b 100644 --- a/frontend/device/android/device.lua +++ b/frontend/device/android/device.lua @@ -1,6 +1,7 @@ local Generic = require("device/generic/device") local isAndroid, android = pcall(require, "android") local ffi = require("ffi") +local DEBUG = require("dbg") local function yes() return true end @@ -18,8 +19,13 @@ function Device:init() device = self, event_map = require("device/android/event_map"), handleMiscEv = function(self, ev) + DEBUG("Android application event", ev.code) if ev.code == ffi.C.APP_CMD_SAVE_STATE then return "SaveState" + elseif ev.code == ffi.C.APP_CMD_GAINED_FOCUS then + self.device.screen:refreshFull() + elseif ev.code == ffi.C.APP_CMD_WINDOW_REDRAW_NEEDED then + self.device.screen:refreshFull() end end, } diff --git a/frontend/device/input.lua b/frontend/device/input.lua index 35c35d36a..aaae4c135 100644 --- a/frontend/device/input.lua +++ b/frontend/device/input.lua @@ -120,8 +120,6 @@ function Input:init() screen = self.device.screen, input = self, } - -- allow access to device object in FFI API - input.device = self.device -- set up fake event map self.event_map[10000] = "IntoSS" -- go into screen saver