.padding = LOCK_CPU_PADDING_TIMEOUT,
};
+static int privilege = -1;
+
static char *get_state_str(display_state_e state)
{
switch (state) {
char str_timeout[32];
int ret;
+ if (privilege == 0)
+ return -EACCES;
+
if (flag & GOTO_STATE_NOW)
arr[1] = STR_GOTOSTATENOW;
else
snprintf(str_timeout, sizeof(str_timeout), "%d", timeout_ms);
arr[3] = str_timeout;
- arr[0] = "privilege check";
-
- ret = dbus_method_sync(DEVICED_BUS_NAME,
- DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
- METHOD_LOCK_STATE, "sssi", arr);
- if (ret == -EACCES || ret == -ECOMM || ret == -EPERM)
- return -EACCES;
+ if (privilege < 0) {
+ arr[0] = "privilege check";
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_LOCK_STATE, "sssi", arr);
+ if (ret == -EACCES || ret == -ECOMM || ret == -EPERM) {
+ privilege = 0;
+ return -EACCES;
+ } else
+ privilege = 1;
+ }
arr[0] = get_state_str(state);
if (!arr[0])
char *arr[2];
int ret;
+ if (privilege == 0)
+ return -EACCES;
+
if (flag == PM_SLEEP_MARGIN)
arr[1] = STR_SLEEP_MARGIN;
else if (flag == PM_RESET_TIMER)
else
return -EINVAL;
- arr[0] = "privilege check";
-
- ret = dbus_method_sync(DEVICED_BUS_NAME,
- DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
- METHOD_UNLOCK_STATE, "ss", arr);
- if (ret == -EACCES || ret == -ECOMM || ret == -EPERM)
- return -EACCES;
+ if (privilege < 0) {
+ arr[0] = "privilege check";
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_UNLOCK_STATE, "ss", arr);
+ if (ret == -EACCES || ret == -ECOMM || ret == -EPERM) {
+ privilege = 0;
+ return -EACCES;
+ } else
+ privilege = 1;
+ }
arr[0] = get_state_str(state);
if (!arr[0])