Add a void* user data parameter to DvrTrackingSensorsStart.

So that the client can pass a user data pointer to the callback.

Bug: 78173127
Test: Run dvr_tracking-test on device.
Change-Id: Id3e977069a5b9a9f2ad8316c61aee227ebdd6e34
(cherry picked from commit c3fc600b9ead16a39e589ce8e6f635204922b0a6)
diff --git a/libs/vr/libdvr/dvr_tracking.cpp b/libs/vr/libdvr/dvr_tracking.cpp
index 31ebc51..77a9438 100644
--- a/libs/vr/libdvr/dvr_tracking.cpp
+++ b/libs/vr/libdvr/dvr_tracking.cpp
@@ -38,8 +38,8 @@
   ALOGE("dvrTrackingSensorsDestroy is not implemented.");
 }
 
-int dvrTrackingSensorsStart(DvrTrackingSensors*,
-                            DvrTrackingSensorEventCallback) {
+int dvrTrackingSensorsStart(DvrTrackingSensors*, DvrTrackingSensorEventCallback,
+                            void*) {
   ALOGE("dvrTrackingStart is not implemented.");
   return -ENOSYS;
 }
diff --git a/libs/vr/libdvr/include/dvr/dvr_api.h b/libs/vr/libdvr/include/dvr/dvr_api.h
index 2d5c725..1e532a6 100644
--- a/libs/vr/libdvr/include/dvr/dvr_api.h
+++ b/libs/vr/libdvr/include/dvr/dvr_api.h
@@ -379,7 +379,8 @@
                                            const char* mode);
 typedef void (*DvrTrackingSensorsDestroyPtr)(DvrTrackingSensors* sensors);
 typedef int (*DvrTrackingSensorsStartPtr)(
-    DvrTrackingSensors* sensors, DvrTrackingSensorEventCallback callback);
+    DvrTrackingSensors* sensors, DvrTrackingSensorEventCallback callback,
+    void* context);
 typedef int (*DvrTrackingSensorsStopPtr)(DvrTrackingSensors* sensors);
 
 // The buffer metadata that an Android Surface (a.k.a. ANativeWindow)
diff --git a/libs/vr/libdvr/include/dvr/dvr_tracking.h b/libs/vr/libdvr/include/dvr/dvr_tracking.h
index 103b14c..ca97345 100644
--- a/libs/vr/libdvr/include/dvr/dvr_tracking.h
+++ b/libs/vr/libdvr/include/dvr/dvr_tracking.h
@@ -30,7 +30,8 @@
 
 // The callback for DvrTrackingSensors session that will deliver the events.
 // This callback is passed to dvrTrackingSensorsStart.
-typedef void (*DvrTrackingSensorEventCallback)(DvrTrackingSensorEvent* event);
+typedef void (*DvrTrackingSensorEventCallback)(void* context,
+                                               DvrTrackingSensorEvent* event);
 
 // Creates a DvrTrackingCamera session.
 //
@@ -106,11 +107,13 @@
 // events as they arrive.
 //
 // @param client A tracking client created by dvrTrackingSensorsCreate.
+// @param context A client supplied pointer that will be passed to the callback.
 // @param callback A callback that will receive the sensor events on an
 // arbitrary thread.
 // @return Zero on success, or negative error code.
 int dvrTrackingSensorsStart(DvrTrackingSensors* sensors,
-                            DvrTrackingSensorEventCallback callback);
+                            DvrTrackingSensorEventCallback callback,
+                            void* context);
 
 // Stop the tracking.
 //
diff --git a/libs/vr/libdvr/tests/dvr_tracking-test.cpp b/libs/vr/libdvr/tests/dvr_tracking-test.cpp
index 1ebbc1f..6a52801 100644
--- a/libs/vr/libdvr/tests/dvr_tracking-test.cpp
+++ b/libs/vr/libdvr/tests/dvr_tracking-test.cpp
@@ -53,7 +53,7 @@
   ASSERT_TRUE(api_.TrackingSensorsStop != nullptr);
 
   EXPECT_EQ(api_.TrackingSensorsCreate(nullptr, nullptr), -ENOSYS);
-  EXPECT_EQ(api_.TrackingSensorsStart(nullptr, nullptr), -ENOSYS);
+  EXPECT_EQ(api_.TrackingSensorsStart(nullptr, nullptr, nullptr), -ENOSYS);
   EXPECT_EQ(api_.TrackingSensorsStop(nullptr), -ENOSYS);
 }