bluetooth: Don't mark device valid before it has an adapter

At this point this doesn't make any other practical difference than
making the code more logical, but in the next patch I'll fire the
DEVICE_CONNECTION_CHANGED hook in set_device_info_valid(), and at that
point it's important that the device isn't marked valid too early,
because otherwise external code would see "valid" devices that however
don't have the adapter set.
This commit is contained in:
Tanu Kaskinen 2013-11-15 16:29:38 +02:00
parent f4f4c42fc6
commit 6633c1f9ff

View file

@ -634,7 +634,12 @@ static int parse_device_properties(pa_bluetooth_device *d, DBusMessageIter *i, b
return -1;
}
set_device_info_valid(d, 1);
if (!is_property_change && d->adapter)
set_device_info_valid(d, 1);
/* If d->adapter is NULL, device_info_valid will be left as 0, and updated
* after all interfaces have been parsed. */
return 0;
}
@ -813,14 +818,19 @@ static void parse_interfaces_and_properties(pa_bluetooth_discovery *y, DBusMessa
dbus_message_iter_next(&element_i);
}
PA_HASHMAP_FOREACH(d, y->devices, state)
PA_HASHMAP_FOREACH(d, y->devices, state) {
if (d->device_info_valid != 0)
continue;
if (!d->adapter && d->adapter_path) {
d->adapter = pa_hashmap_get(d->discovery->adapters, d->adapter_path);
if (!d->adapter) {
pa_log_error("Device %s is child of nonexistent adapter %s", d->path, d->adapter_path);
set_device_info_valid(d, -1);
}
} else
set_device_info_valid(d, 1);
}
}
return;
}