From 1545850be3ff42d1c1dd00c2473a595327520242 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 16 Jan 2023 15:15:02 +0200 Subject: [PATCH] Kernel: Input callbacks use the new BAN::Function --- kernel/include/kernel/Input.h | 7 ++++--- kernel/kernel/Input.cpp | 18 +++++++++--------- kernel/kernel/Shell.cpp | 4 ++-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/kernel/include/kernel/Input.h b/kernel/include/kernel/Input.h index 71a737f3..38e66786 100644 --- a/kernel/include/kernel/Input.h +++ b/kernel/include/kernel/Input.h @@ -1,5 +1,6 @@ #pragma once +#include #include namespace Input @@ -57,9 +58,9 @@ namespace Input void update(); bool is_key_down(Key); - void register_key_event_callback(void (*callback)(KeyEvent)); - void register_mouse_button_event_callback(void (*callback)(MouseButtonEvent)); - void register_mouse_move_event_callback(void (*callback)(MouseMoveEvent)); + void register_key_event_callback(const BAN::Function&); + void register_mouse_button_event_callback(const BAN::Function&); + void register_mouse_move_event_callback(const BAN::Function&); const char* key_event_to_utf8(KeyEvent); diff --git a/kernel/kernel/Input.cpp b/kernel/kernel/Input.cpp index aa83ac1c..c3c4a6f1 100644 --- a/kernel/kernel/Input.cpp +++ b/kernel/kernel/Input.cpp @@ -106,9 +106,9 @@ namespace Input static uint8_t s_led_states = 0b000; static uint8_t s_modifiers = 0x00; - static void (*s_key_event_callback)(KeyEvent) = nullptr; - static void (*s_mouse_button_event_callback)(MouseButtonEvent) = nullptr; - static void (*s_mouse_move_event_callback)(MouseMoveEvent) = nullptr; + static BAN::Function s_key_event_callback; + static BAN::Function s_mouse_button_event_callback; + static BAN::Function s_mouse_move_event_callback; static const char* s_key_to_utf8_lower[] { @@ -385,21 +385,21 @@ namespace Input while (!s_key_event_queue.Empty()) { - if (s_key_event_callback) + if (s_key_event_callback.HasFunction()) s_key_event_callback(s_key_event_queue.Front()); s_key_event_queue.Pop(); } while (!s_mouse_button_event_queue.Empty()) { - if (s_mouse_button_event_callback) + if (s_mouse_button_event_callback.HasFunction()) s_mouse_button_event_callback(s_mouse_button_event_queue.Front()); s_mouse_button_event_queue.Pop(); } while (!s_mouse_move_event_queue.Empty()) { - if (s_mouse_move_event_callback) + if (s_mouse_move_event_callback.HasFunction()) s_mouse_move_event_callback(s_mouse_move_event_queue.Front()); s_mouse_move_event_queue.Pop(); } @@ -663,17 +663,17 @@ namespace Input return true; } - void register_key_event_callback(void (*callback)(KeyEvent)) + void register_key_event_callback(const BAN::Function& callback) { s_key_event_callback = callback; } - void register_mouse_button_event_callback(void (*callback)(MouseButtonEvent)) + void register_mouse_button_event_callback(const BAN::Function& callback) { s_mouse_button_event_callback = callback; } - void register_mouse_move_event_callback(void (*callback)(MouseMoveEvent)) + void register_mouse_move_event_callback(const BAN::Function& callback) { s_mouse_move_event_callback = callback; } diff --git a/kernel/kernel/Shell.cpp b/kernel/kernel/Shell.cpp index 3826f6ea..7511d132 100644 --- a/kernel/kernel/Shell.cpp +++ b/kernel/kernel/Shell.cpp @@ -48,9 +48,9 @@ namespace Kernel Shell::Shell() { - Input::register_key_event_callback([](Input::KeyEvent event) { Shell::Get().KeyEventCallback(event); }); - Input::register_mouse_move_event_callback([](Input::MouseMoveEvent event) { Shell::Get().MouseMoveEventCallback(event); }); SetPrompt("\\[\e[32m\\]user\\[\e[m\\]# "_sv); + Input::register_key_event_callback({ &Shell::KeyEventCallback, this }); + Input::register_mouse_move_event_callback({ &Shell::MouseMoveEventCallback, this }); MUST(m_buffer.PushBack(""_sv)); }