From 40e244879c724213de61efac4a14c2b20b71e460 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Wed, 1 Sep 2010 02:07:35 +0300 Subject: [PATCH] gui: fix race in app list retrival Signals received for old version of the list should be ignored. --- proxies/app_supervisor_proxy.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/proxies/app_supervisor_proxy.c b/proxies/app_supervisor_proxy.c index c6634618..bed190ad 100644 --- a/proxies/app_supervisor_proxy.c +++ b/proxies/app_supervisor_proxy.c @@ -2,7 +2,7 @@ /* * LADI Session Handler (ladish) * - * Copyright (C) 2009 Nedko Arnaudov + * Copyright (C) 2009, 2010 Nedko Arnaudov * ************************************************************************** * This file contains implementation of code that interfaces @@ -67,7 +67,15 @@ static void on_app_added(void * context, DBusMessage * message_ptr) } //log_info("AppAdded signal received. id=%"PRIu64", name='%s', %srunning, %s, level %u", id, name, running ? "" : "not ", terminal ? "terminal" : "shell", (unsigned int)level); - proxy_ptr->app_added(proxy_ptr->context, id, name, running, terminal, level); + + if (new_list_version <= proxy_ptr->version) + { + log_info("Ignoring signal for older version of the app list"); + } + else + { + proxy_ptr->app_added(proxy_ptr->context, id, name, running, terminal, level); + } } static void on_app_removed(void * context, DBusMessage * message_ptr) @@ -88,7 +96,14 @@ static void on_app_removed(void * context, DBusMessage * message_ptr) } //log_info("AppRemoved signal received, id=%"PRIu64, id); - proxy_ptr->app_removed(proxy_ptr->context, id); + if (new_list_version <= proxy_ptr->version) + { + log_info("Ignoring signal for older version of the app list"); + } + else + { + proxy_ptr->app_removed(proxy_ptr->context, id); + } } static void on_app_state_changed(void * context, DBusMessage * message_ptr)