void AnimController::_notification(int p_notification) {
    switch (p_notification) {
        case NOTIFICATION_FIXED_PROCESS:
        {
            float fixed_delta = get_fixed_process_delta_time();
            Vector<String> keys;
            for (Map<String, float >::Element *E = remove_counts.front(); E; E = E->next()) {
                float time = E->value();
                time -= fixed_delta;
                if (time <= 0) {
                    keys.push_back(E->key());
                }else {
                    E->value() = time;
                }
            }
            for (int n = 0, t = keys.size(); n < t; n++) {
                remove_status(keys[n]);
            }

            if (_changed) {
                _changed = false;
                _status_changed(added_anims, removed_anims);
                if (get_script_instance()) {
                    get_script_instance()->call_multilevel("_status_changed", added_anims, removed_anims);
                }
                added_anims.clear();
                removed_anims.clear();
            }
        };
    }
}
static void
presence_chooser_constructed (GObject *self)
{
  PresenceChooserPrivate *priv = GET_PRIVATE (self);

  g_signal_connect_swapped (priv->account, "status-changed",
      G_CALLBACK (_status_changed), self);

  _status_changed (PRESENCE_CHOOSER (self), 0,
      tp_account_get_connection_status (priv->account, NULL),
      0, priv->account);
}