bluetooth: Don't change the switch status when transitioning
When transitioning from an enabled platform rfkill to disabled, the Bluetooth adapter's power will lag behind. Make sure to not change the switch's status when we get into this temporary state. https://bugzilla.gnome.org/show_bug.cgi?id=760168
This commit is contained in:
parent
40117a0ed5
commit
4a009da483
1 changed files with 11 additions and 5 deletions
|
@ -134,12 +134,14 @@ static void
|
|||
cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
|
||||
{
|
||||
GObject *toggle;
|
||||
gboolean sensitive, powered;
|
||||
gboolean sensitive, powered, change_powered;
|
||||
const char *page;
|
||||
|
||||
g_debug ("Updating airplane mode: has_airplane_mode %d, hardware_airplane_mode %d, BT airplane_mode %d, airplane_mode %d",
|
||||
self->priv->has_airplane_mode, self->priv->hardware_airplane_mode, self->priv->bt_airplane_mode, self->priv->airplane_mode);
|
||||
|
||||
change_powered = TRUE;
|
||||
|
||||
if (self->priv->has_airplane_mode == FALSE) {
|
||||
g_debug ("No Bluetooth available");
|
||||
sensitive = FALSE;
|
||||
|
@ -159,7 +161,7 @@ cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
|
|||
!bluetooth_settings_widget_get_default_adapter_powered (BLUETOOTH_SETTINGS_WIDGET (self->priv->widget))) {
|
||||
g_debug ("Default adapter is unpowered, but should be available");
|
||||
sensitive = TRUE;
|
||||
powered = FALSE;
|
||||
change_powered = FALSE;
|
||||
page = BLUETOOTH_DISABLED_PAGE;
|
||||
} else {
|
||||
g_debug ("Bluetooth is available and powered");
|
||||
|
@ -171,9 +173,11 @@ cc_bluetooth_panel_update_power (CcBluetoothPanel *self)
|
|||
gtk_widget_set_sensitive (WID ("box_power") , sensitive);
|
||||
|
||||
toggle = G_OBJECT (WID ("switch_bluetooth"));
|
||||
g_signal_handlers_block_by_func (toggle, power_callback, self);
|
||||
gtk_switch_set_active (GTK_SWITCH (toggle), powered);
|
||||
g_signal_handlers_unblock_by_func (toggle, power_callback, self);
|
||||
if (change_powered) {
|
||||
g_signal_handlers_block_by_func (toggle, power_callback, self);
|
||||
gtk_switch_set_active (GTK_SWITCH (toggle), powered);
|
||||
g_signal_handlers_unblock_by_func (toggle, power_callback, self);
|
||||
}
|
||||
|
||||
gtk_stack_set_visible_child_name (GTK_STACK (self->priv->stack), page);
|
||||
}
|
||||
|
@ -341,6 +345,8 @@ cc_bluetooth_panel_init (CcBluetoothPanel *self)
|
|||
airplane_mode_changed (NULL, NULL, NULL, self);
|
||||
g_signal_connect (self->priv->rfkill, "g-properties-changed",
|
||||
G_CALLBACK (airplane_mode_changed), self);
|
||||
g_signal_connect_swapped (G_OBJECT (self->priv->widget), "adapter-status-changed",
|
||||
G_CALLBACK (cc_bluetooth_panel_update_power), self);
|
||||
|
||||
g_signal_connect (G_OBJECT (WID ("switch_bluetooth")), "notify::active",
|
||||
G_CALLBACK (power_callback), self);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue