Loading minui/events.cpp +102 −107 Original line number Diff line number Diff line Loading @@ -15,16 +15,14 @@ */ #include <dirent.h> #include <errno.h> #include <fcntl.h> #include <linux/input.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/epoll.h> #include <sys/ioctl.h> #include <unistd.h> #include <linux/input.h> #include "minui/minui.h" #define MAX_DEVICES 16 Loading @@ -36,7 +34,6 @@ struct fd_info { int fd; ev_callback cb; void* data; }; static int g_epoll_fd; Loading @@ -53,7 +50,7 @@ static bool test_bit(size_t bit, unsigned long* array) { // NOLINT return (array[bit/BITS_PER_LONG] & (1UL << (bit % BITS_PER_LONG))) != 0; } int ev_init(ev_callback input_cb, void* data) { int ev_init(ev_callback input_cb) { bool epollctlfail = false; g_epoll_fd = epoll_create(MAX_DEVICES + MAX_MISC_FDS); Loading Loading @@ -95,8 +92,7 @@ int ev_init(ev_callback input_cb, void* data) { } ev_fdinfo[ev_count].fd = fd; ev_fdinfo[ev_count].cb = input_cb; ev_fdinfo[ev_count].data = data; ev_fdinfo[ev_count].cb = std::move(input_cb); ev_count++; ev_dev_count++; if (ev_dev_count == MAX_DEVICES) break; Loading @@ -118,19 +114,18 @@ int ev_get_epollfd(void) { return g_epoll_fd; } int ev_add_fd(int fd, ev_callback cb, void* data) { int ev_add_fd(int fd, ev_callback cb) { if (ev_misc_count == MAX_MISC_FDS || cb == NULL) { return -1; } epoll_event ev; ev.events = EPOLLIN | EPOLLWAKEUP; ev.data.ptr = (void *)&ev_fdinfo[ev_count]; ev.data.ptr = static_cast<void*>(&ev_fdinfo[ev_count]); int ret = epoll_ctl(g_epoll_fd, EPOLL_CTL_ADD, fd, &ev); if (!ret) { ev_fdinfo[ev_count].fd = fd; ev_fdinfo[ev_count].cb = cb; ev_fdinfo[ev_count].data = data; ev_fdinfo[ev_count].cb = std::move(cb); ev_count++; ev_misc_count++; } Loading @@ -157,10 +152,10 @@ int ev_wait(int timeout) { void ev_dispatch(void) { for (int n = 0; n < npolledevents; n++) { fd_info* fdi = reinterpret_cast<fd_info*>(polledevents[n].data.ptr); ev_callback cb = fdi->cb; fd_info* fdi = static_cast<fd_info*>(polledevents[n].data.ptr); const ev_callback& cb = fdi->cb; if (cb) { cb(fdi->fd, polledevents[n].events, fdi->data); cb(fdi->fd, polledevents[n].events); } } } Loading @@ -175,7 +170,7 @@ int ev_get_input(int fd, uint32_t epevents, input_event* ev) { return -1; } int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data) { int ev_sync_key_state(const ev_set_key_callback& set_key_cb) { // Use unsigned long to match ioctl's parameter type. unsigned long ev_bits[BITS_TO_LONGS(EV_MAX)]; // NOLINT unsigned long key_bits[BITS_TO_LONGS(KEY_MAX)]; // NOLINT Loading @@ -196,7 +191,7 @@ int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data) { for (int code = 0; code <= KEY_MAX; code++) { if (test_bit(code, key_bits)) { set_key_cb(code, 1, data); set_key_cb(code, 1); } } } Loading minui/include/minui/minui.h +5 −6 Original line number Diff line number Diff line Loading @@ -70,15 +70,14 @@ unsigned int gr_get_height(GRSurface* surface); struct input_event; // TODO: move these over to std::function. typedef int (*ev_callback)(int fd, uint32_t epevents, void* data); typedef int (*ev_set_key_callback)(int code, int value, void* data); using ev_callback = std::function<int(int fd, uint32_t epevents)>; using ev_set_key_callback = std::function<int(int code, int value)>; int ev_init(ev_callback input_cb, void* data); int ev_init(ev_callback input_cb); void ev_exit(); int ev_add_fd(int fd, ev_callback cb, void* data); int ev_add_fd(int fd, ev_callback cb); void ev_iterate_available_keys(const std::function<void(int)>& f); int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data); int ev_sync_key_state(const ev_set_key_callback& set_key_cb); // 'timeout' has the same semantics as poll(2). // 0 : don't block Loading minui/resources.cpp +6 −8 Original line number Diff line number Diff line Loading @@ -14,21 +14,19 @@ * limitations under the License. */ #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <linux/fb.h> #include <linux/kd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/ioctl.h> #include <sys/mman.h> #include <sys/types.h> #include <linux/fb.h> #include <linux/kd.h> #include <unistd.h> #include <vector> #include <png.h> #include "minui/minui.h" Loading ui.cpp +2 −6 Original line number Diff line number Diff line Loading @@ -34,11 +34,11 @@ #include <android-base/properties.h> #include <cutils/android_reboot.h> #include <minui/minui.h> #include "common.h" #include "roots.h" #include "device.h" #include "minui/minui.h" #define UI_WAIT_KEY_TIMEOUT_SEC 120 Loading Loading @@ -70,10 +70,6 @@ void RecoveryUI::OnKeyDetected(int key_code) { } } int RecoveryUI::InputCallback(int fd, uint32_t epevents, void* data) { return reinterpret_cast<RecoveryUI*>(data)->OnInputEvent(fd, epevents); } // Reads input events, handles special hot keys, and adds to the key queue. static void* InputThreadLoop(void*) { while (true) { Loading @@ -88,7 +84,7 @@ bool RecoveryUI::Init(const std::string& locale) { // Set up the locale info. SetLocale(locale); ev_init(InputCallback, this); ev_init(std::bind(&RecoveryUI::OnInputEvent, this, std::placeholders::_1, std::placeholders::_2)); ev_iterate_available_keys(std::bind(&RecoveryUI::OnKeyDetected, this, std::placeholders::_1)); Loading ui.h +0 −2 Original line number Diff line number Diff line Loading @@ -158,8 +158,6 @@ class RecoveryUI { pthread_t input_thread_; void OnKeyDetected(int key_code); static int InputCallback(int fd, uint32_t epevents, void* data); int OnInputEvent(int fd, uint32_t epevents); void ProcessKey(int key_code, int updown); Loading Loading
minui/events.cpp +102 −107 Original line number Diff line number Diff line Loading @@ -15,16 +15,14 @@ */ #include <dirent.h> #include <errno.h> #include <fcntl.h> #include <linux/input.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/epoll.h> #include <sys/ioctl.h> #include <unistd.h> #include <linux/input.h> #include "minui/minui.h" #define MAX_DEVICES 16 Loading @@ -36,7 +34,6 @@ struct fd_info { int fd; ev_callback cb; void* data; }; static int g_epoll_fd; Loading @@ -53,7 +50,7 @@ static bool test_bit(size_t bit, unsigned long* array) { // NOLINT return (array[bit/BITS_PER_LONG] & (1UL << (bit % BITS_PER_LONG))) != 0; } int ev_init(ev_callback input_cb, void* data) { int ev_init(ev_callback input_cb) { bool epollctlfail = false; g_epoll_fd = epoll_create(MAX_DEVICES + MAX_MISC_FDS); Loading Loading @@ -95,8 +92,7 @@ int ev_init(ev_callback input_cb, void* data) { } ev_fdinfo[ev_count].fd = fd; ev_fdinfo[ev_count].cb = input_cb; ev_fdinfo[ev_count].data = data; ev_fdinfo[ev_count].cb = std::move(input_cb); ev_count++; ev_dev_count++; if (ev_dev_count == MAX_DEVICES) break; Loading @@ -118,19 +114,18 @@ int ev_get_epollfd(void) { return g_epoll_fd; } int ev_add_fd(int fd, ev_callback cb, void* data) { int ev_add_fd(int fd, ev_callback cb) { if (ev_misc_count == MAX_MISC_FDS || cb == NULL) { return -1; } epoll_event ev; ev.events = EPOLLIN | EPOLLWAKEUP; ev.data.ptr = (void *)&ev_fdinfo[ev_count]; ev.data.ptr = static_cast<void*>(&ev_fdinfo[ev_count]); int ret = epoll_ctl(g_epoll_fd, EPOLL_CTL_ADD, fd, &ev); if (!ret) { ev_fdinfo[ev_count].fd = fd; ev_fdinfo[ev_count].cb = cb; ev_fdinfo[ev_count].data = data; ev_fdinfo[ev_count].cb = std::move(cb); ev_count++; ev_misc_count++; } Loading @@ -157,10 +152,10 @@ int ev_wait(int timeout) { void ev_dispatch(void) { for (int n = 0; n < npolledevents; n++) { fd_info* fdi = reinterpret_cast<fd_info*>(polledevents[n].data.ptr); ev_callback cb = fdi->cb; fd_info* fdi = static_cast<fd_info*>(polledevents[n].data.ptr); const ev_callback& cb = fdi->cb; if (cb) { cb(fdi->fd, polledevents[n].events, fdi->data); cb(fdi->fd, polledevents[n].events); } } } Loading @@ -175,7 +170,7 @@ int ev_get_input(int fd, uint32_t epevents, input_event* ev) { return -1; } int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data) { int ev_sync_key_state(const ev_set_key_callback& set_key_cb) { // Use unsigned long to match ioctl's parameter type. unsigned long ev_bits[BITS_TO_LONGS(EV_MAX)]; // NOLINT unsigned long key_bits[BITS_TO_LONGS(KEY_MAX)]; // NOLINT Loading @@ -196,7 +191,7 @@ int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data) { for (int code = 0; code <= KEY_MAX; code++) { if (test_bit(code, key_bits)) { set_key_cb(code, 1, data); set_key_cb(code, 1); } } } Loading
minui/include/minui/minui.h +5 −6 Original line number Diff line number Diff line Loading @@ -70,15 +70,14 @@ unsigned int gr_get_height(GRSurface* surface); struct input_event; // TODO: move these over to std::function. typedef int (*ev_callback)(int fd, uint32_t epevents, void* data); typedef int (*ev_set_key_callback)(int code, int value, void* data); using ev_callback = std::function<int(int fd, uint32_t epevents)>; using ev_set_key_callback = std::function<int(int code, int value)>; int ev_init(ev_callback input_cb, void* data); int ev_init(ev_callback input_cb); void ev_exit(); int ev_add_fd(int fd, ev_callback cb, void* data); int ev_add_fd(int fd, ev_callback cb); void ev_iterate_available_keys(const std::function<void(int)>& f); int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data); int ev_sync_key_state(const ev_set_key_callback& set_key_cb); // 'timeout' has the same semantics as poll(2). // 0 : don't block Loading
minui/resources.cpp +6 −8 Original line number Diff line number Diff line Loading @@ -14,21 +14,19 @@ * limitations under the License. */ #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <linux/fb.h> #include <linux/kd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/ioctl.h> #include <sys/mman.h> #include <sys/types.h> #include <linux/fb.h> #include <linux/kd.h> #include <unistd.h> #include <vector> #include <png.h> #include "minui/minui.h" Loading
ui.cpp +2 −6 Original line number Diff line number Diff line Loading @@ -34,11 +34,11 @@ #include <android-base/properties.h> #include <cutils/android_reboot.h> #include <minui/minui.h> #include "common.h" #include "roots.h" #include "device.h" #include "minui/minui.h" #define UI_WAIT_KEY_TIMEOUT_SEC 120 Loading Loading @@ -70,10 +70,6 @@ void RecoveryUI::OnKeyDetected(int key_code) { } } int RecoveryUI::InputCallback(int fd, uint32_t epevents, void* data) { return reinterpret_cast<RecoveryUI*>(data)->OnInputEvent(fd, epevents); } // Reads input events, handles special hot keys, and adds to the key queue. static void* InputThreadLoop(void*) { while (true) { Loading @@ -88,7 +84,7 @@ bool RecoveryUI::Init(const std::string& locale) { // Set up the locale info. SetLocale(locale); ev_init(InputCallback, this); ev_init(std::bind(&RecoveryUI::OnInputEvent, this, std::placeholders::_1, std::placeholders::_2)); ev_iterate_available_keys(std::bind(&RecoveryUI::OnKeyDetected, this, std::placeholders::_1)); Loading
ui.h +0 −2 Original line number Diff line number Diff line Loading @@ -158,8 +158,6 @@ class RecoveryUI { pthread_t input_thread_; void OnKeyDetected(int key_code); static int InputCallback(int fd, uint32_t epevents, void* data); int OnInputEvent(int fd, uint32_t epevents); void ProcessKey(int key_code, int updown); Loading