Mercurial > pidgin.yaz
diff libpurple/account.c @ 21373:cbf197042bad
Add the old error to the account-error-changed signal.
author | Will Thompson <will.thompson@collabora.co.uk> |
---|---|
date | Sun, 28 Oct 2007 13:01:45 +0000 |
parents | 0aa18e21a595 |
children | 71c1f2da4ff2 |
line wrap: on
line diff
--- a/libpurple/account.c Sun Oct 28 11:04:04 2007 +0000 +++ b/libpurple/account.c Sun Oct 28 13:01:45 2007 +0000 @@ -2236,14 +2236,18 @@ clear_current_error(PurpleAccount *account) { PurpleAccountPrivate *priv = PURPLE_ACCOUNT_GET_PRIVATE(account); + PurpleAccountCurrentError *old; + if (priv->current_error) { - g_free (priv->current_error); + old = priv->current_error; priv->current_error = NULL; + purple_signal_emit(purple_accounts_get_handle(), + "account-error-changed", + account, old, priv->current_error); + g_free (old); } - purple_signal_emit(purple_accounts_get_handle(), "account-error-changed", - account, priv->current_error); } static void @@ -2262,14 +2266,16 @@ { PurpleAccount *account = purple_connection_get_account(gc); PurpleAccountPrivate *priv = PURPLE_ACCOUNT_GET_PRIVATE(account); - - if (!priv->current_error) - priv->current_error = g_new0(PurpleAccountCurrentError, 1); + PurpleAccountCurrentError *old = priv->current_error; + + priv->current_error = g_new0(PurpleAccountCurrentError, 1); priv->current_error->reason = err; priv->current_error->description = desc; - purple_signal_emit(purple_accounts_get_handle(), "account-error-changed", - account, priv->current_error); + purple_signal_emit(purple_accounts_get_handle(), + "account-error-changed", + account, old, priv->current_error); + g_free(old); } const PurpleAccountCurrentError * @@ -2581,9 +2587,11 @@ purple_value_new(PURPLE_TYPE_STRING)); purple_signal_register(handle, "account-error-changed", - purple_marshal_VOID__POINTER_POINTER, NULL, 2, + purple_marshal_VOID__POINTER_POINTER_POINTER, + NULL, 3, purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT), + purple_value_new(PURPLE_TYPE_POINTER), purple_value_new(PURPLE_TYPE_POINTER)); purple_signal_connect(conn_handle, "signed-on", handle,