From 1ff94facfad27f6db07b41b4e7d06c653a6a8fb0 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Sun, 24 Jan 2021 19:58:36 +0100 Subject: Fix crash after Bluetooth pairing --- src/keyboard.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/keyboard.c b/src/keyboard.c index ad820096..e0f273f6 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -82,15 +82,28 @@ static gboolean onCheckSource(GSource *pSource) if (!xkl_config_rec_equals(pKeyboard->pPrivate->pConfigRec, pConfigRec)) { + gboolean bBadSignal = FALSE; + if (g_strv_length(pKeyboard->pPrivate->pConfigRec->layouts) > g_strv_length(pConfigRec->layouts)) { - xkl_engine_lock_group(pKeyboard->pPrivate->pEngine, 0); - pKeyboard->pPrivate->nLayout = 0; - bLayoutChanged = TRUE; + // Pairing a Bluetooth device does this sometimes + if (pConfigRec->variants[0] == NULL) + { + bBadSignal = TRUE; + } + else + { + xkl_engine_lock_group(pKeyboard->pPrivate->pEngine, 0); + pKeyboard->pPrivate->nLayout = 0; + bLayoutChanged = TRUE; + } } - xkl_config_rec_get_from_server(pKeyboard->pPrivate->pConfigRec, pKeyboard->pPrivate->pEngine); - bConfigChanged = TRUE; + if (!bBadSignal) + { + xkl_config_rec_get_from_server(pKeyboard->pPrivate->pConfigRec, pKeyboard->pPrivate->pEngine); + bConfigChanged = TRUE; + } } g_object_unref(pConfigRec); -- cgit v1.2.3