chiark / gitweb /
logind: rework display counting when detecting whether the system is docked
authorLennart Poettering <lennart@poettering.net>
Tue, 16 Jun 2015 22:24:05 +0000 (00:24 +0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 09:03:02 +0000 (10:03 +0100)
commit198eb9458184a7b82a85df1d03a3dd52f24f5f26
treeb03fb9a74e7a3666234cef40ab97026ee7d8f76f
parentb0c8498704d91b644ee3203177b0f602ab13826e
logind: rework display counting when detecting whether the system is docked

Previously, we'd just count connected displays, and if there was 2 or
more we assumed a "docked" state.

With this change we now:

- Only count external displays, ignore internal ones (which we detect by
  checking the connector name against a whitelist of known external plug
  types)

- We ignore connectors which are explicitly disabled

- We then compare the count with >= 1 rather than >= 2 as before

This new logic has the benefit that systems that disconnect the internal
display when the lid is closed are better supported. Also, explicitly
disabled ports do not confuse the algorithm anymore.

This new algorithm has been suggested here:

http://lists.freedesktop.org/archives/intel-gfx/2015-June/068821.html

This also makes two functions static, that are not used outside of their
.c files.
src/login/logind-button.c
src/login/logind-core.c
src/login/logind-dbus.c
src/login/logind.h