On Wed, Oct 26, 2016 at 3:24 AM, Michel Dänzer <michel at daenzer.net> wrote: > From: Michel Dänzer <michel.daenzer at amd.com> > > We get multiple udev events for actions like docking a laptop into its > station or plugging a monitor to the station. By consuming as many > events as we can, we reduce the number of output re-evalutions. > > It depends on the timing how many events can be consumed at once. > > (Inspired by xserver commit 363f4273dd4aec3e26cc57ecb6c20f27e6c813d8) > (Ported from radeon commit 22b5ce9548393ba2ff73ee234ecd82eeaf0ef6c4) > > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> Series is: Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > src/drmmode_display.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/src/drmmode_display.c b/src/drmmode_display.c > index 9dfef40..b03a8a7 100644 > --- a/src/drmmode_display.c > +++ b/src/drmmode_display.c > @@ -2479,12 +2479,15 @@ static void 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; > + } > > - amdgpu_mode_hotplug(scrn, drmmode); > - udev_device_unref(dev); > + if (received) > + amdgpu_mode_hotplug(scrn, drmmode); > } > #endif > > -- > 2.10.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx