return g_variant_new("(i)", ret);
}
+static GVariant *dbus_pmlockgetlockcount(GDBusConnection *conn,
+ const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
+ GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data)
+{
+ power_lock_e power_lock_type;
+ int pmlock_count = 0;
+ enum state_t pmlock_type;
+ pid_t pid;
+
+ g_variant_get(param, "(i)", &power_lock_type);
+
+ if (power_lock_type < POWER_LOCK_CPU || power_lock_type > POWER_LOCK_DISPLAY_DIM)
+ _W("Invalid parameter power lock type=(%d)", power_lock_type);
+
+ pmlock_type = power_lock_type_to_pmlock(power_lock_type);
+
+ pmlock_count = pmlock_get_lock_count(pmlock_type);
+
+ pid = gdbus_connection_get_sender_pid(conn, sender);
+ _D("Pmlock get lock count pid=%d power lock count=%d", pid, pmlock_count);
+
+ return g_variant_new("(i)", pmlock_count);
+}
+
static GVariant *dbus_pmlockgetlockstate(GDBusConnection *conn,
const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data)
{ "GetWhiteBalance", "i", "i", dbus_getwhitebalance},
{ "GetRotationAngle", "i", "iii", dbus_getrotationangle},
{ "SetRotationAngle", "iii", "i", dbus_setrotationangle},
+ { "PmlockGetLockCount", "i", "i", dbus_pmlockgetlockcount},
{ "PmlockGetLockState", "i", "i", dbus_pmlockgetlockstate},
/* Add methods here */
};
return false;
}
+int pmlock_get_lock_count(enum state_t state)
+{
+ return SYS_G_LIST_LENGTH(cond_head[state]);
+}
+
bool pmlock_get_lock_state(enum state_t state)
{
return (bool)SYS_G_LIST_LENGTH(cond_head[state]);
}
num_of_pmlock = g_list_length(cond_head[state]);
+
+ /* broadcast on every change of lock count */
+ gdbus_signal_emit(NULL,
+ DEVICED_PATH_DISPLAY,
+ DEVICED_INTERFACE_DISPLAY,
+ DEVICED_SIGNAL_POWER_LOCK_COUNT_CHANGED,
+ g_variant_new("(ii)", state, num_of_pmlock));
+
if (num_of_pmlock > 1)
return;