• Lau Ching Jun's avatar
    Fixed race condition in PollingDeviceDiscovery. (#145506) · c759c22e
    Lau Ching Jun authored
    There are two issues in the previous implementation:
    1. `_populateDevices` will return the devices from `deviceNotifier` if it had been initialized, assuming that once it's initialized, it has been properly populated. That assumption is not true because calling getters like `onAdded` would initialize `deviceNotifier` without populating it.
    2. `deviceNotifier` instance might be replaced in some cases, causing `onAdded` subscribers to lose any future updates.
    
    To fix (1), this commit added the `isPopulated` field in `deviceNotifier` as a more accurate flag to determine if we need to populate it.
    
    To fix (2), this commit made `deviceNotifier` a final member in `PolingDeviceDiscovery`.
    c759c22e
Name
Last commit
Last update
..
android Loading commit data...
base Loading commit data...
build_system Loading commit data...
commands Loading commit data...
custom_devices Loading commit data...
dart Loading commit data...
debug_adapters Loading commit data...
drive Loading commit data...
fuchsia Loading commit data...
intellij Loading commit data...
ios Loading commit data...
isolated Loading commit data...
linux Loading commit data...
localizations Loading commit data...
macos Loading commit data...
migrations Loading commit data...
proxied_devices Loading commit data...
reporting Loading commit data...
runner Loading commit data...
test Loading commit data...
tester Loading commit data...
vscode Loading commit data...
web Loading commit data...
windows Loading commit data...
application_package.dart Loading commit data...
artifacts.dart Loading commit data...
asset.dart Loading commit data...
build_info.dart Loading commit data...
bundle.dart Loading commit data...
bundle_builder.dart Loading commit data...
cache.dart Loading commit data...
cmake.dart Loading commit data...
cmake_project.dart Loading commit data...
compile.dart Loading commit data...
context_runner.dart Loading commit data...
convert.dart Loading commit data...
daemon.dart Loading commit data...
dart_pub_json_formatter.dart Loading commit data...
desktop_device.dart Loading commit data...
devfs.dart Loading commit data...
device.dart Loading commit data...
device_port_forwarder.dart Loading commit data...
devtools_launcher.dart Loading commit data...
doctor.dart Loading commit data...
doctor_validator.dart Loading commit data...
emulator.dart Loading commit data...
features.dart Loading commit data...
flutter_application_package.dart Loading commit data...
flutter_cache.dart Loading commit data...
flutter_device_manager.dart Loading commit data...
flutter_features.dart Loading commit data...
flutter_manifest.dart Loading commit data...
flutter_plugins.dart Loading commit data...
flutter_project_metadata.dart Loading commit data...
globals.dart Loading commit data...
http_host_validator.dart Loading commit data...
license_collector.dart Loading commit data...
mdns_discovery.dart Loading commit data...
native_assets.dart Loading commit data...
persistent_tool_state.dart Loading commit data...
platform_plugins.dart Loading commit data...
plugins.dart Loading commit data...
pre_run_validator.dart Loading commit data...
preview_device.dart Loading commit data...
project.dart Loading commit data...
project_validator.dart Loading commit data...
project_validator_result.dart Loading commit data...
protocol_discovery.dart Loading commit data...
proxy_validator.dart Loading commit data...
resident_devtools_handler.dart Loading commit data...
resident_runner.dart Loading commit data...
run_cold.dart Loading commit data...
run_hot.dart Loading commit data...
sksl_writer.dart Loading commit data...
template.dart Loading commit data...
tracing.dart Loading commit data...
update_packages_pins.dart Loading commit data...
version.dart Loading commit data...
vmservice.dart Loading commit data...
web_template.dart Loading commit data...
xcode_project.dart Loading commit data...