if (!event)
return NULL;
- if (event->manager)
+ if (event->manager) {
+ if (event->manager->last_event == event)
+ event->manager->last_event = event->event_prev;
LIST_REMOVE(event, event->manager->events, event);
+ }
if (event->worker)
event->worker->event = NULL;
.state = EVENT_QUEUED,
};
- LIST_APPEND(event, manager->events, event);
+ LIST_INSERT_AFTER(event, manager->events, manager->last_event, event);
+ manager->last_event = event;
event->manager = manager;
TAKE_PTR(event);
log_device_uevent(dev, "Device is queued");