When opening the user panel we g-c-c performs lots of sync operations that may cause a noticeable slowdown, especially when a fingerprint device is available, in fact set_fingerprint_label() call leads to:
- DBus sync request of the system bus
- fprintd dbus-activation
- This leads to sync opening of all the devices, that might also cause a slowdown, depending on the devices drivers
- Dbus sync calls to the device to get the list of enrolled fingerprints
Only after we've a reply, we update the g-c-c UI and continue the execution.
The fingerprint dialog code would need some global refactor, but to fix this without big changes, let's just use GTask that runs a thread in wich we do all the sync operations, and once done we finally update the widget state.
This might be done by refactoring the code quite a lot, but I'd like to have this cherry-picked to the stable branch, and so I kept the changes to the minimum, while further changes should be done in other MRs.