ソースを参照

Kernel: Defer handling of key press events in VirtualConsole

Trying to pass these onto the Terminal while handling an IRQ is a recipe
for disaster. Use Processor::deferred_call_queue to create an ad-hoc
"second half" of the interrupt handler.

Fixes #4889
Andrew Kaster 4 年 前
コミット
a5e557472c
1 ファイル変更3 行追加1 行削除
  1. 3 1
      Kernel/TTY/VirtualConsole.cpp

+ 3 - 1
Kernel/TTY/VirtualConsole.cpp

@@ -238,7 +238,9 @@ void VirtualConsole::on_key_pressed(KeyboardDevice::Event event)
         return;
     }
 
-    m_terminal.handle_key_press(event.key, event.code_point, event.flags);
+    Processor::deferred_call_queue([this, event]() {
+        m_terminal.handle_key_press(event.key, event.code_point, event.flags);
+    });
 }
 
 ssize_t VirtualConsole::on_tty_write(const UserOrKernelBuffer& data, ssize_t size)