[PATCH xf86-video-amdgpu 4/4] Consume all available udev events at once

Alex Deucher alexdeucher at gmail.com
Wed Oct 26 14:59:33 UTC 2016


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


More information about the amd-gfx mailing list