bluetooth: fix GNOME Bluetooth plugin when used from the control center
Since the control center added support for showing the "extra configuration widgets" (gnome-bluetooth commit 3b5d7dee45cf8b9c8ce91e65aa9004f784a29b34) the NM BT plugin has been broken for DUN. During the DUN setup process, the plugin calls bluez to connect to the phone to start the rfcomm port, which changes the bluez device's properties. That triggers a call to cc_bluetooth_panel_update_properties(), which removes all the extra configuration widgets and re-adds them. Unfortunately, that caused all the NM BT plugin's data to be freed, while the DUN inspect operation was ongoing, eventually resulting in access of freed data when various operations finally completed. To fix that, break out the actual work code into a model, called NmaBtDevice, that lives longer than the GtkWidget that's embedded in the control panel, and that handles all the necessary PAN/DUN tasks. The panel widget is then reworked to simply listen to device signals so that it can die and a new instance be created, while the work goes on in the background in NmaBtDevice.
parent
d71a9ece
Please register or sign in to comment