diff options
| author | Tianhao Wang <shrik3@mailbox.org> | 2024-04-17 21:08:02 +0200 |
|---|---|---|
| committer | Tianhao Wang <shrik3@mailbox.org> | 2024-06-11 15:16:33 +0200 |
| commit | 9a7b6f6c61aad48e654c915077a5954957477a7a (patch) | |
| tree | de5c2aeafd7922fbe0c373de8b61c175ed3b3255 /src | |
| parent | 615776d3012f9223de9b2cfaac63e8919d0e604b (diff) | |
mask keyboard interrupt while polling key
Diffstat (limited to 'src')
| -rw-r--r-- | src/machine/keyctrl.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/machine/keyctrl.rs b/src/machine/keyctrl.rs index 349f4ff..dc3402d 100644 --- a/src/machine/keyctrl.rs +++ b/src/machine/keyctrl.rs @@ -186,6 +186,10 @@ impl KeyboardController { // this should be called by the interrupt handler prologue pub fn fetch_key(&mut self) { + // mask keyboard interrupts when polling. + let was_masked = Self::is_int_masked(); + if !was_masked {Self::disable_keyboard_int();} + // I'd like to see if this panics.... let sr = self.read_status().unwrap(); // ignore mouse events @@ -193,6 +197,7 @@ impl KeyboardController { return; } self.update_state(self.dport.inb()); + if !was_masked {Self::enable_keyboard_int();} } // this should be called by the "epilogue" |
