Merge "Qcamera2: Sort camera info to avoid app open wrong camera"
diff --git a/QCamera2/stack/mm-camera-interface/src/mm_camera_interface.c b/QCamera2/stack/mm-camera-interface/src/mm_camera_interface.c
index 0eef837..f65bc3f 100644
--- a/QCamera2/stack/mm-camera-interface/src/mm_camera_interface.c
+++ b/QCamera2/stack/mm-camera-interface/src/mm_camera_interface.c
@@ -1407,6 +1407,39 @@
}
/*===========================================================================
+ * FUNCTION : sort_camera_info
+ *
+ * DESCRIPTION: sort camera info to keep back cameras idx is smaller than front cameras idx
+ *
+ * PARAMETERS : number of cameras
+ *
+ * RETURN :
+ *==========================================================================*/
+void sort_camera_info(int num_cam)
+{
+ int idx = 0, i;
+ struct camera_info temp_info[MM_CAMERA_MAX_NUM_SENSORS];
+ memset(temp_info, 0, sizeof(temp_info));
+
+ /* firstly save the back cameras info*/
+ for (i = 0; i < num_cam; i++) {
+ if (g_cam_ctrl.info[i].facing == CAMERA_FACING_BACK) {
+ temp_info[idx++] = g_cam_ctrl.info[i];
+ }
+ }
+
+ /* then save the front cameras info*/
+ for (i = 0; i < num_cam; i++) {
+ if (g_cam_ctrl.info[i].facing == CAMERA_FACING_FRONT) {
+ temp_info[idx++] = g_cam_ctrl.info[i];
+ }
+ }
+
+ memcpy(g_cam_ctrl.info, temp_info, sizeof(temp_info));
+ return;
+}
+
+/*===========================================================================
* FUNCTION : get_num_of_cameras
*
* DESCRIPTION: get number of cameras
@@ -1573,6 +1606,7 @@
g_cam_ctrl.num_cam = num_cameras;
get_sensor_info();
+ sort_camera_info(g_cam_ctrl.num_cam);
/* unlock the mutex */
pthread_mutex_unlock(&g_intf_lock);
CDBG("%s: num_cameras=%d\n", __func__, (int)g_cam_ctrl.num_cam);