power: Simplify display_hint_sent
Check for whether the display hint has been sent at the start
of the set_interactive() function in the common powerHAL.
This gets rid of the need to replicate the same variable in
every target-specific powerHAL that implements the
set_interactive_override() function.
Change-Id: If7dd11fcb578211f4f83847f9257232c4138ce53
diff --git a/power-660.c b/power-660.c
index 627d15b..028cfcf 100644
--- a/power-660.c
+++ b/power-660.c
@@ -51,7 +51,6 @@
#define MIN_VAL(X, Y) ((X > Y) ? (Y) : (X))
-static int display_hint_sent;
static int video_encode_hint_sent;
static void process_video_encode_hint(void* metadata);
@@ -134,17 +133,13 @@
memcpy(resource_values, res, MIN_VAL(sizeof(resource_values), sizeof(res)));
num_resources = sizeof(res) / sizeof(res[0]);
}
- if (!display_hint_sent) {
- perform_hint_action(DISPLAY_STATE_HINT_ID, resource_values, num_resources);
- display_hint_sent = 1;
- }
+ perform_hint_action(DISPLAY_STATE_HINT_ID, resource_values, num_resources);
}
} else {
/* Display on. */
if (is_interactive_governor(governor)) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
- display_hint_sent = 0;
}
}
return HINT_HANDLED;
diff --git a/power-8937.c b/power-8937.c
index f02cfb2..d6d7f21 100644
--- a/power-8937.c
+++ b/power-8937.c
@@ -51,7 +51,6 @@
#define MIN_VAL(X, Y) ((X > Y) ? (Y) : (X))
-static int display_hint_sent;
static int video_encode_hint_sent;
static void process_video_encode_hint(void* metadata);
@@ -108,18 +107,14 @@
INT_OP_CLUSTER1_TIMER_RATE, BIG_LITTLE_TR_MS_50,
INT_OP_NOTIFY_ON_MIGRATE, 0x00};
- if (!display_hint_sent) {
- perform_hint_action(DISPLAY_STATE_HINT_ID, resource_values,
- sizeof(resource_values) / sizeof(resource_values[0]));
- display_hint_sent = 1;
- }
+ perform_hint_action(DISPLAY_STATE_HINT_ID, resource_values,
+ sizeof(resource_values) / sizeof(resource_values[0]));
} /* Perf time rate set for CORE0,CORE4 8952 target*/
} else {
/* Display on. */
if (is_interactive_governor(governor)) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
- display_hint_sent = 0;
}
}
diff --git a/power-8953.c b/power-8953.c
index f7f785a..40f4e2e 100644
--- a/power-8953.c
+++ b/power-8953.c
@@ -51,7 +51,6 @@
#define MIN_VAL(X, Y) ((X > Y) ? (Y) : (X))
-static int display_hint_sent;
static int video_encode_hint_sent;
static void process_video_encode_hint(void* metadata);
@@ -110,18 +109,14 @@
0x41424000,
0x28,
};
- if (!display_hint_sent) {
- perform_hint_action(DISPLAY_STATE_HINT_ID, resource_values,
- sizeof(resource_values) / sizeof(resource_values[0]));
- display_hint_sent = 1;
- }
+ perform_hint_action(DISPLAY_STATE_HINT_ID, resource_values,
+ sizeof(resource_values) / sizeof(resource_values[0]));
} /* Perf time rate set for CORE0,CORE4 8952 target*/
} else {
/* Display on. */
if (is_interactive_governor(governor)) {
undo_hint_action(DISPLAY_STATE_HINT_ID);
- display_hint_sent = 0;
}
}
diff --git a/power-common.c b/power-common.c
index 8d7df69..0a4fe04 100644
--- a/power-common.c
+++ b/power-common.c
@@ -128,6 +128,8 @@
#endif
void set_interactive(int on) {
+ static int display_hint_sent;
+
if (!on) {
/* Send Display OFF hint to perf HAL */
perf_hint_enable(VENDOR_HINT_DISPLAY_OFF, 0);
@@ -136,6 +138,14 @@
perf_hint_enable(VENDOR_HINT_DISPLAY_ON, 0);
}
+ /**
+ * Ignore consecutive display-off hints
+ * Consecutive display-on hints are already handled
+ */
+ if (display_hint_sent && !on) return;
+
+ display_hint_sent = !on;
+
#ifdef SET_INTERACTIVE_EXT
power_set_interactive_ext(on);
#endif