static void on_app_state_changed (ShellAppSystem *app_system, ShellApp *app, gpointer user_data) { ShellAppUsage *self = SHELL_APP_USAGE (user_data); UsageData *usage; gboolean running; if (shell_app_is_window_backed (app)) return; usage = get_usage_for_app (self, app); running = shell_app_get_state (app) == SHELL_APP_STATE_RUNNING; if (running) usage->last_seen = get_time (); }
void _shell_window_tracker_notify_app_state_changed (ShellWindowTracker *self, ShellApp *app) { ShellAppState state = shell_app_get_state (app); switch (state) { case SHELL_APP_STATE_RUNNING: /* key is owned by the app */ g_hash_table_insert (self->running_apps, (char*)shell_app_get_id (app), app); break; case SHELL_APP_STATE_STARTING: break; case SHELL_APP_STATE_STOPPED: g_hash_table_remove (self->running_apps, shell_app_get_id (app)); break; } g_signal_emit (self, signals[APP_STATE_CHANGED], 0, app); }
void _shell_app_system_notify_app_state_changed (ShellAppSystem *self, ShellApp *app) { ShellAppState state = shell_app_get_state (app); switch (state) { case SHELL_APP_STATE_RUNNING: g_hash_table_insert (self->priv->running_apps, g_object_ref (app), NULL); break; case SHELL_APP_STATE_STARTING: break; case SHELL_APP_STATE_STOPPED: g_hash_table_remove (self->priv->running_apps, app); break; default: g_warn_if_reached(); break; } g_signal_emit (self, signals[APP_STATE_CHANGED], 0, app); }