mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:38:11 +00:00
Make PS2MouseDevice behave more like a proper character device.
Get rid of the goofy MouseClient interface and have the GUI event loop just read mouse data from the character device. The previous approach was awful as it was sending us into random GUI code in the mouse interrupt handler.
This commit is contained in:
parent
52e019f9aa
commit
fd4e86460b
5 changed files with 31 additions and 36 deletions
|
@ -44,8 +44,7 @@ void PS2MouseDevice::handle_irq()
|
|||
(m_data[0] & 2) ? "Right" : ""
|
||||
);
|
||||
#endif
|
||||
if (m_client)
|
||||
m_client->did_receive_mouse_data(m_data[1], -m_data[2], m_data[0] & 1, m_data[0] & 2);
|
||||
m_buffer.write((const byte*)m_data, 3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -119,22 +118,15 @@ byte PS2MouseDevice::mouse_read()
|
|||
|
||||
bool PS2MouseDevice::has_data_available_for_reading() const
|
||||
{
|
||||
ASSERT_NOT_REACHED();
|
||||
return false;
|
||||
return !m_buffer.is_empty();
|
||||
}
|
||||
|
||||
ssize_t PS2MouseDevice::read(byte* buffer, size_t buffer_size)
|
||||
ssize_t PS2MouseDevice::read(byte* buffer, size_t size)
|
||||
{
|
||||
return m_buffer.read(buffer, size);
|
||||
}
|
||||
|
||||
ssize_t PS2MouseDevice::write(const byte*, size_t)
|
||||
{
|
||||
ASSERT_NOT_REACHED();
|
||||
return 0;
|
||||
}
|
||||
|
||||
ssize_t PS2MouseDevice::write(const byte *buffer, size_t buffer_size)
|
||||
{
|
||||
ASSERT_NOT_REACHED();
|
||||
return 0;
|
||||
}
|
||||
|
||||
MouseClient::~MouseClient()
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue