/** * shell_window_tracker_get_running_apps: * @monitor: An app monitor instance * @context: Activity identifier * * Returns the set of applications which currently have at least one open * window in the given context. The returned list will be sorted * by shell_app_compare(). * * Returns: (element-type ShellApp) (transfer full): Active applications */ GSList * shell_window_tracker_get_running_apps (ShellWindowTracker *monitor, const char *context) { gpointer key, value; GSList *ret; GHashTableIter iter; g_hash_table_iter_init (&iter, monitor->running_apps); ret = NULL; while (g_hash_table_iter_next (&iter, &key, &value)) { ShellApp *app = value; if (strcmp (context, _shell_window_tracker_get_app_context (monitor, app)) != 0) continue; ret = g_slist_prepend (ret, g_object_ref (app)); } ret = g_slist_sort (ret, (GCompareFunc)shell_app_compare); return ret; }
static UsageData * get_usage_for_app (ShellAppUsage *self, ShellApp *app) { const char *context; context = _shell_window_tracker_get_app_context (shell_window_tracker_get_default (), app); return get_app_usage_for_context_and_id (self, context, shell_app_get_id (app)); }