[systemd-devel] [PATCH] logind: Do not fail display count if a device has no parent

Lennart Poettering lennart at poettering.net
Tue Mar 11 09:46:15 PDT 2014


On Tue, 11.03.14 17:49, Mantas Mikulėnas (grawity at gmail.com) wrote:

Applied! Thanks!

> udev_device_get_parent() may return NULL when the device doesn't have a
> parent, as is the case with (for example) /sys/devices/virtual/drm/ttm.
> 
> Also, log an actual error message instead of "-12 displays connected".
> ---
>  src/login/logind-action.c | 4 +++-
>  src/login/logind-core.c   | 2 +-
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/src/login/logind-action.c b/src/login/logind-action.c
> index ae7b350..1928f43 100644
> --- a/src/login/logind-action.c
> +++ b/src/login/logind-action.c
> @@ -84,7 +84,9 @@ int manager_handle_action(
>                   * treat like this under the assumption that there is
>                   * no modern drm driver available. */
>                  n = manager_count_displays(m);
> -                if (n != 1) {
> +                if (n < 0)
> +                        log_warning("Display counting failed: %s", strerror(-n));
> +                else if (n != 1) {
>                          log_debug("Ignoring lid switch request, %i displays connected.", n);
>                          return 0;
>                  }
> diff --git a/src/login/logind-core.c b/src/login/logind-core.c
> index ca34d37..053d2ed 100644
> --- a/src/login/logind-core.c
> +++ b/src/login/logind-core.c
> @@ -520,7 +520,7 @@ int manager_count_displays(Manager *m) {
>  
>                  p = udev_device_get_parent(d);
>                  if (!p)
> -                        return -ENOMEM;
> +                        continue;
>  
>                  /* If the parent shares the same subsystem as the
>                   * device we are looking at then it is a connector,


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list