Merge "power: Add mutex to camera hints"
diff --git a/power-8996.c b/power-8996.c
index 67d46cc..6358d1e 100644
--- a/power-8996.c
+++ b/power-8996.c
@@ -47,7 +47,9 @@
#include "performance.h"
#include "power-common.h"
+pthread_mutex_t camera_hint_mutex = PTHREAD_MUTEX_INITIALIZER;
static int display_hint_sent;
+static int camera_hint_ref_count;
static int process_video_encode_hint(void *metadata)
{
@@ -99,15 +101,26 @@
0x41420000, 0x5A, 0x41400100, 0x4, 0x41410100, 0x5F, 0x41414100, 0x22C, 0x41420100, 0x5A,
0x41810000, 0x9C4, 0x41814000, 0x32, 0x4180C000, 0x0, 0x41820000, 0xA};
- perform_hint_action(video_encode_metadata.hint_id,
- resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
+ pthread_mutex_lock(&camera_hint_mutex);
+ camera_hint_ref_count++;
+ if (camera_hint_ref_count == 1) {
+ perform_hint_action(video_encode_metadata.hint_id,
+ resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
+ }
+ pthread_mutex_unlock(&camera_hint_mutex);
ALOGI("Video Encode hint start");
return HINT_HANDLED;
}
} else if (video_encode_metadata.state == 0) {
if ((strncmp(governor, INTERACTIVE_GOVERNOR, strlen(INTERACTIVE_GOVERNOR)) == 0) &&
(strlen(governor) == strlen(INTERACTIVE_GOVERNOR))) {
- undo_hint_action(video_encode_metadata.hint_id);
+ pthread_mutex_lock(&camera_hint_mutex);
+ camera_hint_ref_count--;
+ if (!camera_hint_ref_count) {
+ undo_hint_action(video_encode_metadata.hint_id);
+ }
+ pthread_mutex_unlock(&camera_hint_mutex);
+
ALOGI("Video Encode hint stop");
return HINT_HANDLED;
}