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)
committerLennart Poettering <lennart@poettering.net>
Wed, 17 Jun 2015 13:41:25 +0000 (15:41 +0200)
commit602a41c22ac2df33b4b5e5083719c1cfaf58acf9
treed1877e76a8cd999f96e7ed014de1ad71b8f733c9
parent203e81db24ccb9b4dcb0b1bad0ba554116267d20
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