After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 685063 - AccessX should get disabled on shutdown
AccessX should get disabled on shutdown
Status: RESOLVED FIXED
Product: gnome-settings-daemon
Classification: Core
Component: a11y-keyboard
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gnome-settings-daemon-maint
gnome-settings-daemon-maint
Depends on:
Blocks:
 
 
Reported: 2012-09-28 17:15 UTC by Ray Strode [halfline]
Modified: 2013-01-28 17:43 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
0001-a11y-keyboard-Disable-everything-on-exit-if-no-setti.patch (2.98 KB, patch)
2013-01-28 17:14 UTC, Bastien Nocera
committed Details | Review

Description Ray Strode [halfline] 2012-09-28 17:15:16 UTC
gnome-settings-daemon a11y-keyboard plugin enables the various AccessX hotkeys at start up, but doesn't clear them at shutdown.  This is fine for the user session, but for GDM it can be problematic if the user subsequently logs into a desktop environment that doesn't deal with AccessX (e.g. show notifications when slow keys gets enabled).  This caused a lot of confusion on a downstream report:

https://bugzilla.redhat.com/show_bug.cgi?id=816764

We probably just need to clear things on shutdown if none of the AccessX features got toggled on.
Comment 1 Bastien Nocera 2013-01-28 17:14:25 UTC
Created attachment 234636 [details] [review]
0001-a11y-keyboard-Disable-everything-on-exit-if-no-setti.patch
Comment 2 Ray Strode [halfline] 2013-01-28 17:36:12 UTC
Review of attachment 234636 [details] [review]:

hey thanks for looking at this. s/enableable/enable/ above. looks good

::: plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
@@ +750,3 @@
+                XkbDescRec *desc;
+
+                desc = get_xkb_desc_rec (manager);

down the line, it might make sense to keep this in the priv struct, since XkbDescRec is sort of designed to be used like a local cache i think.

@@ +759,3 @@
+
+                                XSync (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), FALSE);
+                                gdk_error_trap_pop_ignored ();

seems a little strange to use pop_ignored then XSync.
Comment 3 Bastien Nocera 2013-01-28 17:43:37 UTC
(In reply to comment #2)
> Review of attachment 234636 [details] [review]:
> 
> hey thanks for looking at this. s/enableable/enable/ above. looks good

Oops. Read you review after testing and committing...

> ::: plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
> @@ +750,3 @@
> +                XkbDescRec *desc;
> +
> +                desc = get_xkb_desc_rec (manager);
> 
> down the line, it might make sense to keep this in the priv struct, since
> XkbDescRec is sort of designed to be used like a local cache i think.

If somebody makes a test suite so that we don't break everything when refactoring it, sure. Otherwise, I'll keep out :)

> @@ +759,3 @@
> +
> +                                XSync (GDK_DISPLAY_XDISPLAY
> (gdk_display_get_default ()), FALSE);
> +                                gdk_error_trap_pop_ignored ();
> 
> seems a little strange to use pop_ignored then XSync.

That's the way the code was called from set_server_from_gsettings().