[gnome-settings-daemon] keyboard: Check invariants on async code paths
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] keyboard: Check invariants on async code paths
- Date: Thu, 13 Sep 2012 12:37:50 +0000 (UTC)
commit 9d715bb09828c1e2e961cd5a3798b963649047cf
Author: Rui Matos <tiagomatos gmail com>
Date: Thu Sep 13 02:01:56 2012 +0200
keyboard: Check invariants on async code paths
https://bugzilla.gnome.org/show_bug.cgi?id=683798
plugins/keyboard/gsd-keyboard-manager.c | 23 +++++++++++++++++++----
1 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c
index e0e3a70..5462805 100644
--- a/plugins/keyboard/gsd-keyboard-manager.c
+++ b/plugins/keyboard/gsd-keyboard-manager.c
@@ -181,14 +181,16 @@ fetch_ibus_engines_result (GObject *object,
{
GsdKeyboardManagerPrivate *priv = manager->priv;
GList *list, *l;
- GError *error;
+ GError *error = NULL;
+
+ /* engines shouldn't be there yet */
+ g_return_if_fail (priv->ibus_engines == NULL);
+
+ g_clear_object (&priv->ibus_cancellable);
- error = NULL;
list = ibus_bus_list_engines_async_finish (priv->ibus,
result,
&error);
- g_clear_object (&priv->ibus_cancellable);
-
if (!list && error) {
g_warning ("Couldn't finish IBus request: %s", error->message);
g_error_free (error);
@@ -226,6 +228,10 @@ fetch_ibus_engines (GsdKeyboardManager *manager)
{
GsdKeyboardManagerPrivate *priv = manager->priv;
+ /* engines shouldn't be there yet */
+ g_return_if_fail (priv->ibus_engines == NULL);
+ g_return_if_fail (priv->ibus_cancellable == NULL);
+
priv->ibus_cancellable = g_cancellable_new ();
ibus_bus_list_engines_async (priv->ibus,
@@ -287,6 +293,9 @@ got_session_name (GObject *object,
const gchar *session_name = NULL;
GError *error = NULL;
+ /* IBus shouldn't have been touched yet */
+ g_return_if_fail (priv->ibus == NULL);
+
g_clear_object (&priv->ibus_cancellable);
result = g_dbus_connection_call_finish (connection, res, &error);
@@ -319,6 +328,9 @@ got_bus (GObject *object,
GsdKeyboardManagerPrivate *priv = manager->priv;
GError *error = NULL;
+ /* IBus shouldn't have been touched yet */
+ g_return_if_fail (priv->ibus == NULL);
+
g_clear_object (&priv->ibus_cancellable);
connection = g_bus_get_finish (res, &error);
@@ -375,6 +387,9 @@ set_ibus_engine (GsdKeyboardManager *manager,
{
GsdKeyboardManagerPrivate *priv = manager->priv;
+ g_return_if_fail (priv->ibus != NULL);
+ g_return_if_fail (priv->ibus_engines != NULL);
+
g_cancellable_cancel (priv->ibus_cancellable);
g_clear_object (&priv->ibus_cancellable);
priv->ibus_cancellable = g_cancellable_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]