mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-13 00:58:29 +02:00
evdev: Delete rumble effects on the correct file descriptor.
Was using m_id insted of m_fd. Also re-arrange the code so rumble effects always get deleted instead of just on stop commands.
This commit is contained in:
@ -216,6 +216,12 @@ void evdevDevice::ForceFeedback::SetState(ControlState state)
|
||||
// libevdev doesn't have nice helpers for forcefeedback
|
||||
// we will use the file descriptors directly.
|
||||
|
||||
if (m_id != -1) // delete the previous effect (which also stops it)
|
||||
{
|
||||
ioctl(m_fd, EVIOCRMFF, m_id);
|
||||
m_id = -1;
|
||||
}
|
||||
|
||||
if (state > 0) // Upload and start an effect.
|
||||
{
|
||||
ff_effect effect;
|
||||
@ -260,9 +266,14 @@ void evdevDevice::ForceFeedback::SetState(ControlState state)
|
||||
|
||||
write(m_fd, (const void*) &play, sizeof(play));
|
||||
}
|
||||
else if (m_id != -1) // delete the effect (which also stops it)
|
||||
}
|
||||
|
||||
evdevDevice::ForceFeedback::~ForceFeedback()
|
||||
{
|
||||
// delete the uploaded effect, so we don't leak it.
|
||||
if (m_id != -1)
|
||||
{
|
||||
ioctl(m_id, EVIOCRMFF, m_id);
|
||||
ioctl(m_fd, EVIOCRMFF, m_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user