if (fdev && __atomic_sub_fetch(&fdev->refcount, 2, __ATOMIC_RELAXED) <= 1) {
if (fdev->itf) {
fdev->itf->disable(fdev->closure_itf, fdev);
- fdev->itf->unref(fdev->closure_itf);
+ if (fdev->itf->unref)
+ fdev->itf->unref(fdev->closure_itf);
}
if (fdev->refcount)
close(fdev->fd);
if (events != fdev->events) {
fdev->events = events;
if (is_active(fdev))
- fdev->itf->enable(fdev->closure_itf, fdev);
+ fdev->itf->update(fdev->closure_itf, fdev);
}
}