dynamic_sensor: Don't hold mgr lock when operating sensor.

Bug: 205041452
Test: Verified that multiple subscriptions can be made with sensor_test
 to a dynamic sensor without hanging.
Change-Id: Ie7671df8294bee04a0ebe1940242c2a83105f897
diff --git a/modules/sensors/dynamic_sensor/DynamicSensorManager.h b/modules/sensors/dynamic_sensor/DynamicSensorManager.h
index 634c523..264582e 100644
--- a/modules/sensors/dynamic_sensor/DynamicSensorManager.h
+++ b/modules/sensors/dynamic_sensor/DynamicSensorManager.h
@@ -95,15 +95,18 @@
     // TF:  int foo(sp<BaseSensorObject> obj);
     template <typename TF>
     int operateSensor(int handle, TF f) const {
-        std::lock_guard<std::mutex> lk(mLock);
-        const auto i = mMap.find(handle);
-        if (i == mMap.end()) {
-            return BAD_VALUE;
-        }
-        sp<BaseSensorObject> s = i->second.promote();
-        if (s == nullptr) {
-            // sensor object is already gone
-            return BAD_VALUE;
+        sp<BaseSensorObject> s;
+        {
+            std::lock_guard<std::mutex> lk(mLock);
+            const auto i = mMap.find(handle);
+            if (i == mMap.end()) {
+                return BAD_VALUE;
+            }
+            s = i->second.promote();
+            if (s == nullptr) {
+                // sensor object is already gone
+                return BAD_VALUE;
+            }
         }
         return f(s);
     }