| Index: device/generic_sensor/platform_sensor_linux.cc
|
| diff --git a/device/generic_sensor/platform_sensor_linux.cc b/device/generic_sensor/platform_sensor_linux.cc
|
| index 55aa1398d1499c7bd61bfc4ec10b1199b5087c85..3a6bcab600df61b1c71b3658f1f8291c23066799 100644
|
| --- a/device/generic_sensor/platform_sensor_linux.cc
|
| +++ b/device/generic_sensor/platform_sensor_linux.cc
|
| @@ -29,12 +29,16 @@ PlatformSensorLinux::PlatformSensorLinux(
|
| default_configuration_(
|
| PlatformSensorConfiguration(sensor_device->device_frequency)),
|
| reporting_mode_(sensor_device->reporting_mode),
|
| + polling_thread_task_runner_(std::move(polling_thread_task_runner)),
|
| weak_factory_(this) {
|
| - sensor_reader_ =
|
| - SensorReader::Create(sensor_device, this, polling_thread_task_runner);
|
| + sensor_reader_ = SensorReader::Create(
|
| + sensor_device, weak_factory_.GetWeakPtr(), task_runner_);
|
| }
|
|
|
| -PlatformSensorLinux::~PlatformSensorLinux() = default;
|
| +PlatformSensorLinux::~PlatformSensorLinux() {
|
| + DCHECK(task_runner_->BelongsToCurrentThread());
|
| + polling_thread_task_runner_->DeleteSoon(FROM_HERE, sensor_reader_.release());
|
| +}
|
|
|
| mojom::ReportingMode PlatformSensorLinux::GetReportingMode() {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| @@ -62,15 +66,18 @@ void PlatformSensorLinux::NotifyPlatformSensorError() {
|
| bool PlatformSensorLinux::StartSensor(
|
| const PlatformSensorConfiguration& configuration) {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| - if (!sensor_reader_)
|
| - return false;
|
| - return sensor_reader_->StartFetchingData(configuration);
|
| + polling_thread_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&SensorReader::StartFetchingData,
|
| + base::Unretained(sensor_reader_.get()), configuration));
|
| + return true;
|
| }
|
|
|
| void PlatformSensorLinux::StopSensor() {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| - DCHECK(sensor_reader_);
|
| - sensor_reader_->StopFetchingData();
|
| + polling_thread_task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&SensorReader::StopFetchingData,
|
| + base::Unretained(sensor_reader_.get())));
|
| }
|
|
|
| bool PlatformSensorLinux::CheckSensorConfiguration(
|
|
|