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 778383 - repeatedly turning BT off and off crashes gnome
repeatedly turning BT off and off crashes gnome
Status: RESOLVED FIXED
Product: gnome-settings-daemon
Classification: Core
Component: rfkill
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gnome-settings-daemon-maint
gnome-settings-daemon-maint
Depends on:
Blocks:
 
 
Reported: 2017-02-09 09:55 UTC by Carlo Caione
Modified: 2017-02-14 18:07 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
rfkill: Fix indentation in D-Bus introspection XML (1.87 KB, patch)
2017-02-09 14:27 UTC, Philip Withnall
committed Details | Review
build: Stop using deprecated macros in configure.ac (4.60 KB, patch)
2017-02-09 14:27 UTC, Philip Withnall
committed Details | Review
build: Fix --enable-rfkill configure switch (1.50 KB, patch)
2017-02-09 14:27 UTC, Philip Withnall
committed Details | Review
build: Drop dependency on gnome-common (3.12 KB, patch)
2017-02-09 14:27 UTC, Philip Withnall
committed Details | Review
build: Fix shadowing of libexec_PROGRAMS in power plugin Makefile.am (934 bytes, patch)
2017-02-09 14:27 UTC, Philip Withnall
committed Details | Review
build: Drop unused variables from smartcard Makefile.am (2.23 KB, patch)
2017-02-09 14:27 UTC, Philip Withnall
none Details | Review
rfkill: Port from GSimpleAsyncResult to GTask (9.06 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
committed Details | Review
rfkill: Drop cc_rfkill_glib_send_event() due to being unused (3.39 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
committed Details | Review
rfkill: Update class definition to use G_DECLARE_DERIVABLE_TYPE (10.64 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
needs-work Details | Review
rfkill: Add some checks that a previous task is not overwritten (1.43 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
none Details | Review
rfkill: Remove stored GCancellable member (2.44 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
none Details | Review
rfkill: Use local task variables where possible (3.31 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
none Details | Review
rfkill: Move event data into the GTask’s task data (3.92 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
none Details | Review
rfkill: Fix crash due to racy GTask management (4.45 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
none Details | Review
rfkill: Add a comment with basic testing instructions (1.29 KB, patch)
2017-02-09 14:28 UTC, Philip Withnall
none Details | Review
build: Drop unused variables from smartcard Makefile.am (1.99 KB, patch)
2017-02-09 15:40 UTC, Philip Withnall
committed Details | Review
rfkill: Add a comment with basic testing instructions (1.62 KB, patch)
2017-02-09 15:41 UTC, Philip Withnall
none Details | Review
rfkill: Update class definition to use G_DECLARE_FINAL_TYPE (11.38 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review
rfkill: Add some checks that a previous task is not overwritten (1.44 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review
rfkill: Remove stored GCancellable member (2.46 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review
rfkill: Use local task variables where possible (3.20 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review
rfkill: Move event data into the GTask’s task data (3.86 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review
rfkill: Fix crash due to racy GTask management (4.32 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review
rfkill: Add a comment with basic testing instructions (1.62 KB, patch)
2017-02-09 16:57 UTC, Philip Withnall
committed Details | Review

Description Carlo Caione 2017-02-09 09:55:37 UTC
A bit of background (not sure if important): in our setup RFKill is driving a GPIO to enable / disable the BT transceiver. This is a slow operation and it could take ~500ms for the RFKill subsystem to complete the operation.

In the Bluetooth configuration panel if I click on the Bluetooth on/off toggle switch 5+ times in a row repeatedly, gnome (or BT configuration panel) crashes.

This is what I have in the journal:

gnome-settings-[886]: g_simple_async_result_take_error: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: g_simple_async_result_take_error: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: g_simple_async_result_take_error: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
kernel: BT_RADIO going: on
kernel: BCM_BT: going ON
gnome-settings-[886]: g_simple_async_result_take_error: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
gnome-settings-[886]: Failed to set RFKill: Stream has outstanding operation
gnome-settings-daemon.desktop[886]: **
gnome-settings-daemon.desktop[886]: rfkill-plugin:ERROR:rfkill-glib.c:168:write_change_all_timeout_cb: assertion failed: (rfkill->priv->event)

Trace:

  • #0 __libc_do_syscall
    at ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S line 44
  • #0 __libc_do_syscall
    at ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S line 44
  • #1 __GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 56
  • #2 __GI_abort
    at abort.c line 89
  • #3 g_assertion_message
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
  • #4 g_assertion_message_expr
    from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
  • #5 write_change_all_timeout_cb
    at rfkill-glib.c line 168
  • #6 cc_rfkill_glib_send_change_all_event
    at rfkill-glib.c line 242
  • #7 engine_set_bluetooth_airplane_mode
    at gsd-rfkill-manager.c line 345
  • #8 handle_set_property
    at gsd-rfkill-manager.c line 395
  • #9 ??
    from /lib/arm-linux-gnueabihf/libgio-2.0.so.0

At least for `assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed` what I think it's happening here is that cc_rfkill_glib_send_change_all_event() is rapidly called and several request for the asynchronous writing are queued on several GSimpleAsyncResult objects. When the first writing is done in write_change_all_done_cb() the latest rfkill->priv->simple object is freed. All the subsequent write_change_all_done_cb() callbacks find a NULL rfkill->priv->simple.
Comment 1 Philip Withnall 2017-02-09 14:27:26 UTC
Created attachment 345322 [details] [review]
rfkill: Fix indentation in D-Bus introspection XML

This is a formatting fix only; no functional changes.
Comment 2 Philip Withnall 2017-02-09 14:27:32 UTC
Created attachment 345323 [details] [review]
build: Stop using deprecated macros in configure.ac

Results of using autoupdate to move away from deprecated macros in
configure.ac.
Comment 3 Philip Withnall 2017-02-09 14:27:37 UTC
Created attachment 345324 [details] [review]
build: Fix --enable-rfkill configure switch

There was an additional comma in the AC_ARG_ENABLE call, which meant
that no action-if-given was provided, meaning that enable_rfkill would
be enabled by default if the rfkill switch was not passed — but if it
was passed, enable_rfkill would not be set at all and the plugin would
always be disabled.
Comment 4 Philip Withnall 2017-02-09 14:27:43 UTC
Created attachment 345325 [details] [review]
build: Drop dependency on gnome-common

Move the autogen.sh script to be self-contained, so we drop our
dependency on gnome-common.

This does not (yet) port us to use any of the shiny new autoconf-archive
macros, but since we invent our own (like EXTRA_COMPILE_WARNINGS) rather
than using the gnome-common ones, the dependency is gone.

See https://wiki.gnome.org/Projects/GnomeCommon/Migration.
Comment 5 Philip Withnall 2017-02-09 14:27:48 UTC
Created attachment 345326 [details] [review]
build: Fix shadowing of libexec_PROGRAMS in power plugin Makefile.am

This was causing the gsd-power plugin to not be built if HAVE_GUDEV was
defined (and gsd-backlight-helper was being built). Fixes the
corresponding automake warning.
Comment 6 Philip Withnall 2017-02-09 14:27:54 UTC
Created attachment 345327 [details] [review]
build: Drop unused variables from smartcard Makefile.am

Since commit 6d01a434ca2faa88acb2aed1224d23cea329f1f8, libsmartcard.la
is no more, so all the variables which defined how to compile it are
redundant. plugin_name is also unused.

This fixes an automake warning about unused variables.
Comment 7 Philip Withnall 2017-02-09 14:28:00 UTC
Created attachment 345328 [details] [review]
rfkill: Port from GSimpleAsyncResult to GTask

This introduces no functional changes: it’s a like-for-like port from
GSimpleAsyncResult (deprecated) to GTask (not deprecated).

This bumps the GLib dependency to 2.44 due to the use of g_autoptr() to
simplify memory management. GTask itself was introduced in 2.36, which
we already depended on.
Comment 8 Philip Withnall 2017-02-09 14:28:06 UTC
Created attachment 345329 [details] [review]
rfkill: Drop cc_rfkill_glib_send_event() due to being unused

No need to complicate the code with it.
Comment 9 Philip Withnall 2017-02-09 14:28:11 UTC
Created attachment 345330 [details] [review]
rfkill: Update class definition to use G_DECLARE_DERIVABLE_TYPE

Tidy up the code a bit. Introduces no functional changes.
Comment 10 Philip Withnall 2017-02-09 14:28:17 UTC
Created attachment 345331 [details] [review]
rfkill: Add some checks that a previous task is not overwritten

These should not fail, as write_change_all_timeout_cb() clears those
variables — so they’re more for documentation than anything else.
Comment 11 Philip Withnall 2017-02-09 14:28:23 UTC
Created attachment 345332 [details] [review]
rfkill: Remove stored GCancellable member

There’s no need to store it separately from the GTask, as the GTask
keeps a pointer to it. This introduces no functional changes.
Comment 12 Philip Withnall 2017-02-09 14:28:29 UTC
Created attachment 345333 [details] [review]
rfkill: Use local task variables where possible

In order to keep the binding between a GTask object and a control flow,
use the GTask passed as the user_data to the callbacks as much as
possible, rather than referring back to the global GTask which might
have changed in the mean time.
Comment 13 Philip Withnall 2017-02-09 14:28:34 UTC
Created attachment 345334 [details] [review]
rfkill: Move event data into the GTask’s task data

This simplifies lifecycle management of the event struct. It always had
the same lifecycle as the GTask already, so there are no functional
changes; just code simplification.
Comment 14 Philip Withnall 2017-02-09 14:28:40 UTC
Created attachment 345335 [details] [review]
rfkill: Fix crash due to racy GTask management

The change_all_timeout_id and task members of CcRfkillGlibPrivate are
not necessarily both set and unset at the same time: it’s normal for
(task != NULL) when (change_all_timeout_id == 0), when the code is doing
its initial write before write_change_all_done_cb(); and when the code
is doing its second write attempt before
write_change_all_again_done_cb().

However, the code was checking (change_all_timeout_id != 0) to see if a
task was pending when cc_rfkill_glib_send_change_all_event(). If a
previous task was still in the middle of a write, this would result in
its GTask being overwritten with the new GTask. When the first task’s
write completed, it would then clear the second GTask. When the second
task’s write completed, it would try to access the second GTask, and
find it was NULL, causing a crash.

This can happen on systems where the rfkill subsystem is slow (and hence
blocks on writes for tens or hundreds of milliseconds); for example, if
rfkill passes through a GPIO.

Fix this by:
 • checking whether (task != NULL) to see if a task is in flight; and
 • only clearing priv->task if it matches the callback’s task.
Comment 15 Philip Withnall 2017-02-09 14:28:45 UTC
Created attachment 345336 [details] [review]
rfkill: Add a comment with basic testing instructions

As much as I would love to, I don’t have time to write a unit testing
harness which mocks up a slow rfkill FD. So this will have to do.

Suggestion: run it in a tight loop, alternating between enabled and
disabled. See what breaks.
Comment 16 Bastien Nocera 2017-02-09 14:31:33 UTC
Review of attachment 345322 [details] [review]:

Sure.
Comment 17 Bastien Nocera 2017-02-09 14:34:34 UTC
Review of attachment 345323 [details] [review]:

Looks fine.
Comment 18 Bastien Nocera 2017-02-09 14:37:43 UTC
Review of attachment 345324 [details] [review]:

Sure.
Comment 19 Bastien Nocera 2017-02-09 14:38:19 UTC
Review of attachment 345325 [details] [review]:

Sure.
Comment 20 Bastien Nocera 2017-02-09 14:40:11 UTC
Review of attachment 345326 [details] [review]:

> This was causing the gsd-power plugin to not be built if HAVE_GUDEV was
> defined (and gsd-backlight-helper was being built). Fixes the
> corresponding automake warning.

It should have, but it doesn't, as shown by the fact that the Fedora gnome-settings-daemon package contains both. Weird.
Comment 21 Bastien Nocera 2017-02-09 14:41:30 UTC
Review of attachment 345327 [details] [review]:

::: plugins/smartcard/Makefile.am
@@ -1,1 @@
-plugin_name = smartcard

It's still used. From configure.ac:
PLUGIN_CFLAGS="-DG_LOG_DOMAIN=\"\\\"\$(plugin_name)-plugin\\\"\" -DPLUGIN_NAME=\"\\\"\$(plugin_name)\\\"\" "
Comment 22 Bastien Nocera 2017-02-09 14:51:40 UTC
Review of attachment 345328 [details] [review]:

Looks fine, was this tested?

::: plugins/rfkill/rfkill-glib.c
@@ +94,2 @@
 	else
+		g_task_return_int (task, ret);

gssize, no?
Comment 23 Bastien Nocera 2017-02-09 14:56:22 UTC
Review of attachment 345329 [details] [review]:

I'd have preferred keeping it, but seeing as it's unused. We can always revert if we want to use it.
Comment 24 Bastien Nocera 2017-02-09 14:57:14 UTC
Review of attachment 345330 [details] [review]:

::: plugins/rfkill/rfkill-glib.h
@@ +32,3 @@
 
+#define CC_RFKILL_TYPE_GLIB cc_rfkill_glib_get_type ()
+G_DECLARE_DERIVABLE_TYPE (CcRfkillGlib, cc_rfkill_glib, CC_RFKILL, GLIB, GObject)

Make it final please.
Comment 25 Bastien Nocera 2017-02-09 14:57:42 UTC
Review of attachment 345331 [details] [review]:

Sure.
Comment 26 Bastien Nocera 2017-02-09 14:58:36 UTC
Review of attachment 345332 [details] [review]:

This is nice.
Comment 27 Bastien Nocera 2017-02-09 14:59:21 UTC
Review of attachment 345333 [details] [review]:

Useful as well.
Comment 28 Bastien Nocera 2017-02-09 15:00:01 UTC
Review of attachment 345334 [details] [review]:

Yes!
Comment 29 Bastien Nocera 2017-02-09 15:02:00 UTC
Review of attachment 345335 [details] [review]:

That looks fine.
Comment 30 Bastien Nocera 2017-02-09 15:05:16 UTC
Review of attachment 345336 [details] [review]:

::: plugins/rfkill/gsd-rfkill-manager.c
@@ +28,3 @@
+ *        --method org.freedesktop.DBus.Properties.Set \
+ *        "org.gnome.SettingsDaemon.Rfkill" \
+ *        "[Bluetooth]AirplaneMode" \

Split this up into multiple examples please, one for Bluetooth, one for the global rfkill.
Comment 31 Philip Withnall 2017-02-09 15:31:43 UTC
Review of attachment 345327 [details] [review]:

::: plugins/smartcard/Makefile.am
@@ -1,1 @@
-plugin_name = smartcard

Oops. I’ll add it back.
Comment 32 Philip Withnall 2017-02-09 15:31:51 UTC
Review of attachment 345328 [details] [review]:

::: plugins/rfkill/rfkill-glib.c
@@ +94,2 @@
 	else
+		g_task_return_int (task, ret);

g_task_return_int() does use a gssize, confusingly. The types are correct here.
Comment 33 Philip Withnall 2017-02-09 15:33:26 UTC
Review of attachment 345330 [details] [review]:

::: plugins/rfkill/rfkill-glib.h
@@ +32,3 @@
 
+#define CC_RFKILL_TYPE_GLIB cc_rfkill_glib_get_type ()
+G_DECLARE_DERIVABLE_TYPE (CcRfkillGlib, cc_rfkill_glib, CC_RFKILL, GLIB, GObject)

I can’t do that without dropping the CcRfkillGlibClass.changed signal vfunc. I could do that — it’s unused by any of the calling code (it just connects to the signal using g_signal_connect() as normal).
Comment 34 Philip Withnall 2017-02-09 15:33:39 UTC
Review of attachment 345336 [details] [review]:

::: plugins/rfkill/gsd-rfkill-manager.c
@@ +28,3 @@
+ *        --method org.freedesktop.DBus.Properties.Set \
+ *        "org.gnome.SettingsDaemon.Rfkill" \
+ *        "[Bluetooth]AirplaneMode" \

Righty.
Comment 35 Bastien Nocera 2017-02-09 15:35:34 UTC
Review of attachment 345330 [details] [review]:

::: plugins/rfkill/rfkill-glib.h
@@ +32,3 @@
 
+#define CC_RFKILL_TYPE_GLIB cc_rfkill_glib_get_type ()
+G_DECLARE_DERIVABLE_TYPE (CcRfkillGlib, cc_rfkill_glib, CC_RFKILL, GLIB, GObject)

It shows how old this code is... You can drop it.
Comment 36 Philip Withnall 2017-02-09 15:40:54 UTC
Created attachment 345338 [details] [review]
build: Drop unused variables from smartcard Makefile.am

Since commit 6d01a434ca2faa88acb2aed1224d23cea329f1f8, libsmartcard.la
is no more, so all the variables which defined how to compile it are
redundant.

This fixes an automake warning about unused variables.
Comment 37 Philip Withnall 2017-02-09 15:41:42 UTC
Created attachment 345339 [details] [review]
rfkill: Add a comment with basic testing instructions

As much as I would love to, I don’t have time to write a unit testing
harness which mocks up a slow rfkill FD. So this will have to do.

Suggestion: run it in a tight loop, alternating between enabled and
disabled. See what breaks.
Comment 38 Bastien Nocera 2017-02-09 15:48:42 UTC
Review of attachment 345338 [details] [review]:

Yep.
Comment 39 Philip Withnall 2017-02-09 15:49:42 UTC
Review of attachment 345330 [details] [review]:

::: plugins/rfkill/rfkill-glib.h
@@ +32,3 @@
 
+#define CC_RFKILL_TYPE_GLIB cc_rfkill_glib_get_type ()
+G_DECLARE_DERIVABLE_TYPE (CcRfkillGlib, cc_rfkill_glib, CC_RFKILL, GLIB, GObject)

Cool, will do so in a bit and will rebase all the patches.
Comment 40 Bastien Nocera 2017-02-09 15:49:59 UTC
Review of attachment 345339 [details] [review]:

::: plugins/rfkill/gsd-rfkill-manager.c
@@ +29,3 @@
+ *        "org.gnome.SettingsDaemon.Rfkill" \
+ *        "AirplaneMode" \
+ *        "<true|false>"

I don't really like this either, but I can't think of a better way to show it without have a gazillion different examples.
Comment 41 Philip Withnall 2017-02-09 16:57:11 UTC
Created attachment 345343 [details] [review]
rfkill: Update class definition to use G_DECLARE_FINAL_TYPE

Tidy up the code a bit. This drops the CcRfkillGlibClass.changed signal
handler vfunc, which was unused.
Comment 42 Philip Withnall 2017-02-09 16:57:17 UTC
Created attachment 345344 [details] [review]
rfkill: Add some checks that a previous task is not overwritten

These should not fail, as write_change_all_timeout_cb() clears those
variables — so they’re more for documentation than anything else.
Comment 43 Philip Withnall 2017-02-09 16:57:23 UTC
Created attachment 345345 [details] [review]
rfkill: Remove stored GCancellable member

There’s no need to store it separately from the GTask, as the GTask
keeps a pointer to it. This introduces no functional changes.
Comment 44 Philip Withnall 2017-02-09 16:57:30 UTC
Created attachment 345346 [details] [review]
rfkill: Use local task variables where possible

In order to keep the binding between a GTask object and a control flow,
use the GTask passed as the user_data to the callbacks as much as
possible, rather than referring back to the global GTask which might
have changed in the mean time.
Comment 45 Philip Withnall 2017-02-09 16:57:36 UTC
Created attachment 345347 [details] [review]
rfkill: Move event data into the GTask’s task data

This simplifies lifecycle management of the event struct. It always had
the same lifecycle as the GTask already, so there are no functional
changes; just code simplification.
Comment 46 Philip Withnall 2017-02-09 16:57:42 UTC
Created attachment 345348 [details] [review]
rfkill: Fix crash due to racy GTask management

The change_all_timeout_id and task members of CcRfkillGlibPrivate are
not necessarily both set and unset at the same time: it’s normal for
(task != NULL) when (change_all_timeout_id == 0), when the code is doing
its initial write before write_change_all_done_cb(); and when the code
is doing its second write attempt before
write_change_all_again_done_cb().

However, the code was checking (change_all_timeout_id != 0) to see if a
task was pending when cc_rfkill_glib_send_change_all_event(). If a
previous task was still in the middle of a write, this would result in
its GTask being overwritten with the new GTask. When the first task’s
write completed, it would then clear the second GTask. When the second
task’s write completed, it would try to access the second GTask, and
find it was NULL, causing a crash.

This can happen on systems where the rfkill subsystem is slow (and hence
blocks on writes for tens or hundreds of milliseconds); for example, if
rfkill passes through a GPIO.

Fix this by:
 • checking whether (task != NULL) to see if a task is in flight; and
 • only clearing priv->task if it matches the callback’s task.
Comment 47 Philip Withnall 2017-02-09 16:57:49 UTC
Created attachment 345349 [details] [review]
rfkill: Add a comment with basic testing instructions

As much as I would love to, I don’t have time to write a unit testing
harness which mocks up a slow rfkill FD. So this will have to do.

Suggestion: run it in a tight loop, alternating between enabled and
disabled. See what breaks.
Comment 48 Philip Withnall 2017-02-09 16:59:19 UTC
(In reply to Philip Withnall from comment #39)
> Review of attachment 345330 [details] [review] [review]:
> 
> ::: plugins/rfkill/rfkill-glib.h
> @@ +32,3 @@
>  
> +#define CC_RFKILL_TYPE_GLIB cc_rfkill_glib_get_type ()
> +G_DECLARE_DERIVABLE_TYPE (CcRfkillGlib, cc_rfkill_glib, CC_RFKILL, GLIB,
> GObject)
> 
> Cool, will do so in a bit and will rebase all the patches.

Updated that patch and rebased the other ones on top of it (trivial rebase).
Comment 49 Bastien Nocera 2017-02-09 17:21:05 UTC
Review of attachment 345343 [details] [review]:

Great.
Comment 50 Bastien Nocera 2017-02-09 17:22:05 UTC
And acn on all the others, thanks!
Comment 51 Bastien Nocera 2017-02-09 17:24:28 UTC
Can you also please cherry-pick the rfkill specific changes to gnome-3-20 and gnome-3-22? If it's too much work, keep this opened, and I'll look into it.
Comment 52 Philip Withnall 2017-02-13 14:02:54 UTC
(In reply to Bastien Nocera from comment #51)
> Can you also please cherry-pick the rfkill specific changes to gnome-3-20
> and gnome-3-22? If it's too much work, keep this opened, and I'll look into
> it.

FYI, I haven’t pushed to master yet because I’m waiting on some feedback from a colleague who has access to some hardware with a particularly slow (GPIO-based) rfkill subsystem. I’d like to make sure this is working on that hardware before pushing, since I could only test on my laptop.

I don’t think I’ll get time to do the cherry-picking. :-(
Comment 53 Bastien Nocera 2017-02-14 18:05:59 UTC
Attachment 345322 [details] pushed as 5a4e38f - rfkill: Fix indentation in D-Bus introspection XML
Attachment 345323 [details] pushed as eea8d7e - build: Stop using deprecated macros in configure.ac
Attachment 345324 [details] pushed as 73c718b - build: Fix --enable-rfkill configure switch
Attachment 345325 [details] pushed as f67e21c - build: Drop dependency on gnome-common
Attachment 345326 [details] pushed as e93bef7 - build: Fix shadowing of libexec_PROGRAMS in power plugin Makefile.am
Attachment 345328 [details] pushed as d2e8840 - rfkill: Port from GSimpleAsyncResult to GTask
Attachment 345329 [details] pushed as 449b22d - rfkill: Drop cc_rfkill_glib_send_event() due to being unused
Attachment 345338 [details] pushed as a9a7f9f - build: Drop unused variables from smartcard Makefile.am
Attachment 345343 [details] pushed as 75f2353 - rfkill: Update class definition to use G_DECLARE_FINAL_TYPE
Attachment 345344 [details] pushed as 290790b - rfkill: Add some checks that a previous task is not overwritten
Attachment 345345 [details] pushed as f456928 - rfkill: Remove stored GCancellable member
Attachment 345346 [details] pushed as 769d350 - rfkill: Use local task variables where possible
Attachment 345347 [details] pushed as dd33981 - rfkill: Move event data into the GTask’s task data
Attachment 345348 [details] pushed as aa92455 - rfkill: Fix crash due to racy GTask management