#include <sys/time.h>
#include <sys/resource.h>
+#include <aul_app_lifecycle.h>
+
#include "proc-main.h"
#include "proc-monitor.h"
#include "resourced.h"
g_hash_table_remove_all(window_table);
}
-static int dbus_update_window_stack(pid_t *pid, const char *app_state)
+static int dbus_update_window_stack(pid_t pid, const char *app_state)
{
static GHashTable *window_table = NULL;
struct proc_app_window_info window;
int z = 0;
int ret;
- if (!pid || !app_state) {
+ if (!app_state) {
_E("It is impossible to parse pid or app status");
return RESOURCED_ERROR_INVALID_PARAMETER;
}
++z;
window.z = z;
- is_same_pid = (*pid == window.pid);
+ is_same_pid = (pid == window.pid);
if (!is_valid_window(name, is_same_pid ? app_state : NULL, &window))
goto error_to_parse_window_stack;
apptype = PROC_TYPE_GUI;
resourced_proc_status_change(status, pid, appid, pkgid, apptype);
- dbus_update_window_stack(&pid, statstr);
}
EXPORT_TEST void proc_dbus_aul_group(GVariant *params)
}
}
+static void aul_app_lifecycle_state_changed_monitor_cb(const char *appid, pid_t pid,
+ aul_app_lifecycle_state_e state, bool has_focus, void *user_data) {
+ char app_state[4];
+
+ switch (state) {
+ case AUL_APP_LIFECYCLE_STATE_RESUMED:
+ strncpy(app_state, "fg", sizeof(app_state) - 1);
+ dbus_update_window_stack(pid, app_state);
+ break;
+ case AUL_APP_LIFECYCLE_STATE_PAUSED:
+ strncpy(app_state, "bg", sizeof(app_state) -1);
+ dbus_update_window_stack(pid, app_state);
+ break;
+ default:
+ return;
+ }
+}
+
static const char dbus_methods_xml[] =
"<node>"
" <interface name='"RESOURCED_INTERFACE_PROCESS"'>"
static int proc_dbus_init(void *data)
{
+ int ret_register_fail;
resourced_ret_c ret;
/* start watchdog check timer for preveting ANR during booting */
ret = d_bus_register_methods(RESOURCED_PATH_PROCESS, dbus_methods_xml,
dbus_methods, ARRAY_SIZE(dbus_methods));
+
+ ret_register_fail = aul_app_lifecycle_register_state_changed_cb(
+ aul_app_lifecycle_state_changed_monitor_cb, NULL);
+ if (ret_register_fail)
+ _W("Failed to register call back function to monitor app lifecycle");
+
out:
return ret;
}
{
if (app_watchdog_check_timer)
g_source_destroy(app_watchdog_check_timer);
+
+ aul_app_lifecycle_deregister_state_changed_cb();
+
return RESOURCED_ERROR_NONE;
}