aboutsummaryrefslogtreecommitdiff
path: root/src/service.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/service.c')
-rw-r--r--src/service.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/service.c b/src/service.c
index 679dc5e..76a0db9 100644
--- a/src/service.c
+++ b/src/service.c
@@ -243,7 +243,25 @@ device_compare_func (gconstpointer ga, gconstpointer gb)
}
}
- if (!ret) /* neither device is charging nor discharging... */
+ /* neither device is charging nor discharging... */
+
+ /* unless there's no other option,
+ don't choose a device with an unknown state.
+ https://bugs.launchpad.net/ubuntu/+source/indicator-power/+bug/1470080 */
+ state = UP_DEVICE_STATE_UNKNOWN;
+ if (!ret && ((a_state == state) || (b_state == state)))
+ {
+ if (a_state != state) /* b is unknown */
+ {
+ ret = -1;
+ }
+ else if (b_state != state) /* a is unknown */
+ {
+ ret = 1;
+ }
+ }
+
+ if (!ret)
{
const int weight_a = get_device_kind_weight (a);
const int weight_b = get_device_kind_weight (b);