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 syscommon_deviced_display_state 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 = display_lock_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 (g_display_fglock_list[state] != NULL);
}
+int display_lock_get_lock_count(enum syscommon_deviced_display_state state)
+{
+ int nlock = 0;
+
+ nlock += g_list_length(g_display_fglock_list[state]);
+ nlock += g_list_length(g_display_bglock_list[state]);
+
+ return nlock;
+}
+
enum syscommon_deviced_display_state power_lock_type_to_pmlock(power_lock_e power_lock_type)
{
switch(power_lock_type) {
nlock += g_list_length(g_display_fglock_list[state]);
nlock += g_list_length(g_display_bglock_list[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)", power_lock_type, nlock));
+
if (nlock > 1)
return;