fix(wayland): delete ScrollRemainder in EiScreen

This commit is contained in:
KoljaFrahm 2026-08-29 15:39:42 +02:00 committed by Nick Bolton
parent 58a6736667
commit 44d7b8d091

View file

@ -141,26 +141,23 @@ void EiScreen::initEi()
void EiScreen::cleanupEi() void EiScreen::cleanupEi()
{ {
for (auto device : m_eiDevices) {
delete static_cast<ScrollRemainder *>(ei_device_get_user_data(device));
ei_device_set_user_data(device, nullptr);
}
if (m_eiPointer) { if (m_eiPointer) {
free(ei_device_get_user_data(m_eiPointer));
ei_device_set_user_data(m_eiPointer, nullptr);
m_eiPointer = ei_device_unref(m_eiPointer); m_eiPointer = ei_device_unref(m_eiPointer);
} }
if (m_eiKeyboard) { if (m_eiKeyboard) {
free(ei_device_get_user_data(m_eiKeyboard));
ei_device_set_user_data(m_eiKeyboard, nullptr);
m_eiKeyboard = ei_device_unref(m_eiKeyboard); m_eiKeyboard = ei_device_unref(m_eiKeyboard);
} }
if (m_eiAbs) { if (m_eiAbs) {
free(ei_device_get_user_data(m_eiAbs));
ei_device_set_user_data(m_eiAbs, nullptr);
m_eiAbs = ei_device_unref(m_eiAbs); m_eiAbs = ei_device_unref(m_eiAbs);
} }
m_eiSeat = ei_seat_unref(m_eiSeat); m_eiSeat = ei_seat_unref(m_eiSeat);
for (auto it = m_eiDevices.begin(); it != m_eiDevices.end(); it++) { for (auto device : m_eiDevices) {
free(ei_device_get_user_data(*it)); ei_device_unref(device);
ei_device_set_user_data(*it, nullptr);
ei_device_unref(*it);
} }
m_eiDevices.clear(); m_eiDevices.clear();
m_ei = ei_unref(m_ei); m_ei = ei_unref(m_ei);
@ -636,11 +633,15 @@ void EiScreen::removeDevice(struct ei_device *device)
cancelIdleEmulationTimer(); cancelIdleEmulationTimer();
} }
for (auto it = m_eiDevices.begin(); it != m_eiDevices.end(); it++) { delete static_cast<ScrollRemainder *>(ei_device_get_user_data(device));
ei_device_set_user_data(device, nullptr);
for (auto it = m_eiDevices.begin(); it != m_eiDevices.end();) {
if (*it == device) { if (*it == device) {
m_eiDevices.erase(it); it = m_eiDevices.erase(it);
ei_device_unref(device); ei_device_unref(device);
break; } else {
++it;
} }
} }