summaryrefslogtreecommitdiff
path: root/plugins/keyboard
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2012-09-13 02:01:56 +0200
committerRui Matos <tiagomatos@gmail.com>2012-09-13 14:25:49 +0200
commit9d715bb09828c1e2e961cd5a3798b963649047cf (patch)
treeff2f2bd23f25fb666df0c15a573512b55cb20705 /plugins/keyboard
parent205c8afa75b5e9b2abeea709f4886558f189bcc5 (diff)
downloadgnome-settings-daemon-9d715bb09828c1e2e961cd5a3798b963649047cf.tar.gz
keyboard: Check invariants on async code paths
https://bugzilla.gnome.org/show_bug.cgi?id=683798
Diffstat (limited to 'plugins/keyboard')
-rw-r--r--plugins/keyboard/gsd-keyboard-manager.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c
index e0e3a70d..5462805e 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 ();