diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/drmmode_display.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index a5a34fdb..9cf48467 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -2656,12 +2656,15 @@ drmmode_handle_uevents(int fd, void *closure) drmmode_ptr drmmode = closure; ScrnInfoPtr scrn = drmmode->scrn; struct udev_device *dev; - dev = udev_monitor_receive_device(drmmode->uevent_monitor); - if (!dev) - return; + Bool received = FALSE; + + while ((dev = udev_monitor_receive_device(drmmode->uevent_monitor))) { + udev_device_unref(dev); + received = TRUE; + } - radeon_mode_hotplug(scrn, drmmode); - udev_device_unref(dev); + if (received) + radeon_mode_hotplug(scrn, drmmode); } #endif |