diff options
author | Cody Russell <crussell@canonical.com> | 2010-01-14 20:27:28 -0600 |
---|---|---|
committer | Cody Russell <crussell@canonical.com> | 2010-01-14 20:27:28 -0600 |
commit | abd499aaeb280ef2ab24f4e392484ecd4d8bb7a2 (patch) | |
tree | f76bedbff6fe9877fafa8a4325328d444ef1fb6f /src/application-service-appstore.c | |
parent | f0104e11357b5804aea2ecead13f99231b671a75 (diff) | |
download | libayatana-appindicator-abd499aaeb280ef2ab24f4e392484ecd4d8bb7a2.tar.gz libayatana-appindicator-abd499aaeb280ef2ab24f4e392484ecd4d8bb7a2.tar.bz2 libayatana-appindicator-abd499aaeb280ef2ab24f4e392484ecd4d8bb7a2.zip |
Only add the Application if it doesn't already exist in the appstore.
Diffstat (limited to 'src/application-service-appstore.c')
-rw-r--r-- | src/application-service-appstore.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index fa1b9d2..c896beb 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -333,8 +333,6 @@ apply_status (Application * app, ApplicationStatus status) g_signal_emit(G_OBJECT(appstore), signals[APPLICATION_REMOVED], 0, position, TRUE); - - priv->applications = g_list_remove(priv->applications, app); } else { /* Figure out which icon we should be using */ gchar * newicon = app->icon; @@ -511,6 +509,16 @@ application_service_appstore_application_add (ApplicationServiceAppstore * appst g_return_if_fail(dbus_object != NULL && dbus_object[0] != '\0'); ApplicationServiceAppstorePrivate * priv = APPLICATION_SERVICE_APPSTORE_GET_PRIVATE(appstore); + GList *l = NULL; + for (l = priv->applications; l != NULL; l = g_list_next (l)) { + Application *tmp_app = (Application *)l->data; + + if (g_strcmp0 (tmp_app->dbus_name, dbus_name) == 0 && + g_strcmp0 (tmp_app->dbus_object, dbus_object) == 0) { + return; + } + } + /* Build the application entry. This will be carried along until we're sure we've got everything. */ Application * app = g_new0(Application, 1); |