From 76c4b0a9604d1c2406076864ada30e532068afa2 Mon Sep 17 00:00:00 2001 From: Joaquim Rocha Date: Mon, 17 Jul 2017 12:55:20 +0200 Subject: [PATCH] Fix crash when using the magnifier The first time that the session is started, it can happen that the AT SPI hasn't been correctly initialized, and this results in a crash when attempting to register the caret or focus listeners. In order to avoid this, these changes check the result of initializing the AT SPI, to allow further attempts when it has failed. https://bugzilla.gnome.org/show_bug.cgi?id=785047 --- js/ui/focusCaretTracker.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/js/ui/focusCaretTracker.js b/js/ui/focusCaretTracker.js index 265fcce71..01660e0b8 100644 --- a/js/ui/focusCaretTracker.js +++ b/js/ui/focusCaretTracker.js @@ -47,30 +47,27 @@ const FocusCaretTracker = new Lang.Class({ }, _initAtspi: function() { - if (!this._atspiInited) { - Atspi.init(); + if (!this._atspiInited && Atspi.init() == 0) { Atspi.set_timeout(250, 250); this._atspiInited = true; } + + return this._atspiInited; }, registerFocusListener: function() { - if (this._focusListenerRegistered) + if (!this._initAtspi() || this._focusListenerRegistered) return; - this._initAtspi(); - this._atspiListener.register(STATECHANGED + ':focused'); this._atspiListener.register(STATECHANGED + ':selected'); this._focusListenerRegistered = true; }, registerCaretListener: function() { - if (this._caretListenerRegistered) + if (!this._initAtspi() || this._caretListenerRegistered) return; - this._initAtspi(); - this._atspiListener.register(CARETMOVED); this._caretListenerRegistered = true; },