void top_changed(GObject * self, GParamSpec * property_param, gpointer data) { HildonProgram *program = HILDON_PROGRAM(self); if (hildon_program_get_is_topmost(program)) { AppUIData *app_ui_data = (AppUIData *) data; /* topmost status acquired */ g_return_if_fail(app_ui_data != NULL); g_return_if_fail(app_ui_data->app_data != NULL); // g_return_if_fail(app_ui_data->app_data->osso_context != NULL); /* destory the state file */ // destroy_state_data(app_ui_data->app_data); PDF_FLAGS_UNSET(app_ui_data->flags, PDF_FLAGS_BACKGROUNDED); hildon_program_set_can_hibernate(app_ui_data->app, FALSE); } else { /* topmost status lost, save state */ AppUIData *app_ui_data = (AppUIData *) data; if (app_ui_data->app_data == NULL || app_ui_data->app_data->comapp_system->osso == NULL) { return; } /* Save application's state */ save_app_state(app_ui_data->app_data); /* Key repeat flags need to be reset on focus out */ PDF_FLAGS_SET(app_ui_data->flags, PDF_FLAGS_SELECT_KEY_ALLOWED | PDF_FLAGS_BACKGROUNDED); hildon_program_set_can_hibernate(app_ui_data->app, TRUE); } }
static void hildon_program_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { switch (property_id) { case PROP_KILLABLE: hildon_program_set_can_hibernate (HILDON_PROGRAM (object), g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }