OSDN Git Service

Ensure LE scan clients are removed when the related app dies
authorAndre Eisenbach <eisenbach@google.com>
Fri, 7 Oct 2016 00:39:31 +0000 (17:39 -0700)
committerAndre Eisenbach <eisenbach@google.com>
Fri, 7 Oct 2016 16:18:07 +0000 (09:18 -0700)
Use the passed in ScanClient in handleStopScan() to ensure that the
client appDied flag is in the correct state to ensure proper removal of
the client application reference.

Bug: 30681588
Test: manual
Change-Id: I0e0067a8e21ebd5f89870a7054b1f4092fe63ae1
(cherry picked from commit 5185d1989c93faa3ce4b4410ef49a0205f43b239)

src/com/android/bluetooth/gatt/ScanManager.java

index ef103df..6213597 100644 (file)
@@ -263,10 +263,6 @@ public class ScanManager {
             if (client == null) return;
 
             if (mRegularScanClients.contains(client)) {
-                // The ScanClient passed in just holds the clientIf. We retrieve the real client,
-                // which may have workSource set.
-                client = mScanNative.getRegularScanClient(client.clientIf);
-                if (client == null) return;
 
                 mScanNative.stopRegularScan(client);
 
@@ -280,7 +276,11 @@ public class ScanManager {
 
                 // Update BatteryStats with this workload.
                 try {
-                    mBatteryStats.noteBleScanStopped(client.workSource);
+                    // The ScanClient passed in just holds the clientIf. We retrieve the real client,
+                    // which may have workSource set.
+                    ScanClient workClient = mScanNative.getRegularScanClient(client.clientIf);
+                    if (workClient != null)
+                        mBatteryStats.noteBleScanStopped(workClient.workSource);
                 } catch (RemoteException e) {
                     /* ignore */
                 }