mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	bluetooth: refactor BlueZ 4 transport state setting
Add transport_set_state() that encapsulates changing the variable, logging and firing the change hook. I also made a cosmetic change to the corresponding BlueZ 5 log message so that both messages have the format that I like.
This commit is contained in:
		
							parent
							
								
									15e3d828dd
								
							
						
					
					
						commit
						83ac6c5ae5
					
				
					 2 changed files with 17 additions and 16 deletions
				
			
		| 
						 | 
					@ -77,6 +77,7 @@ static pa_dbus_pending* send_and_add_to_pending(pa_bluez4_discovery *y, DBusMess
 | 
				
			||||||
                                                void *call_data);
 | 
					                                                void *call_data);
 | 
				
			||||||
static void found_adapter(pa_bluez4_discovery *y, const char *path);
 | 
					static void found_adapter(pa_bluez4_discovery *y, const char *path);
 | 
				
			||||||
static pa_bluez4_device *found_device(pa_bluez4_discovery *y, const char* path);
 | 
					static pa_bluez4_device *found_device(pa_bluez4_discovery *y, const char* path);
 | 
				
			||||||
 | 
					static void transport_set_state(pa_bluez4_transport *transport, pa_bluez4_transport_state_t state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static pa_bluez4_audio_state_t audio_state_from_string(const char* value) {
 | 
					static pa_bluez4_audio_state_t audio_state_from_string(const char* value) {
 | 
				
			||||||
    pa_assert(value);
 | 
					    pa_assert(value);
 | 
				
			||||||
| 
						 | 
					@ -198,8 +199,7 @@ static void device_free(pa_bluez4_device *d) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        d->transports[i] = NULL;
 | 
					        d->transports[i] = NULL;
 | 
				
			||||||
        pa_hashmap_remove(d->discovery->transports, t->path);
 | 
					        pa_hashmap_remove(d->discovery->transports, t->path);
 | 
				
			||||||
        t->state = PA_BLUEZ4_TRANSPORT_STATE_DISCONNECTED;
 | 
					        transport_set_state(t, PA_BLUEZ4_TRANSPORT_STATE_DISCONNECTED);
 | 
				
			||||||
        pa_hook_fire(&d->discovery->hooks[PA_BLUEZ4_HOOK_TRANSPORT_STATE_CHANGED], t);
 | 
					 | 
				
			||||||
        transport_free(t);
 | 
					        transport_free(t);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -515,7 +515,6 @@ static int parse_audio_property(pa_bluez4_device *d, const char *interface, DBus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (pa_streq(key, "State")) {
 | 
					            if (pa_streq(key, "State")) {
 | 
				
			||||||
                pa_bluez4_audio_state_t state = audio_state_from_string(value);
 | 
					                pa_bluez4_audio_state_t state = audio_state_from_string(value);
 | 
				
			||||||
                pa_bluez4_transport_state_t old_state;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                pa_log_debug("Device %s interface %s property 'State' changed to value '%s'", d->path, interface, value);
 | 
					                pa_log_debug("Device %s interface %s property 'State' changed to value '%s'", d->path, interface, value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -534,16 +533,7 @@ static int parse_audio_property(pa_bluez4_device *d, const char *interface, DBus
 | 
				
			||||||
                if (!transport)
 | 
					                if (!transport)
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                old_state = transport->state;
 | 
					                transport_set_state(transport, audio_state_to_transport_state(state));
 | 
				
			||||||
                transport->state = audio_state_to_transport_state(state);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (transport->state != old_state) {
 | 
					 | 
				
			||||||
                    pa_log_debug("Transport %s (profile %s) changed state from %s to %s.", transport->path,
 | 
					 | 
				
			||||||
                                 pa_bluez4_profile_to_string(transport->profile), transport_state_to_string(old_state),
 | 
					 | 
				
			||||||
                                 transport_state_to_string(transport->state));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    pa_hook_fire(&d->discovery->hooks[PA_BLUEZ4_HOOK_TRANSPORT_STATE_CHANGED], transport);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
| 
						 | 
					@ -1248,6 +1238,18 @@ static pa_bluez4_transport *transport_new(pa_bluez4_device *d, const char *owner
 | 
				
			||||||
    return t;
 | 
					    return t;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void transport_set_state(pa_bluez4_transport *transport, pa_bluez4_transport_state_t state) {
 | 
				
			||||||
 | 
					    if (transport->state == state)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pa_log_debug("Transport %s state: %s -> %s",
 | 
				
			||||||
 | 
					                 transport->path, transport_state_to_string(transport->state), transport_state_to_string(state));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    transport->state = state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pa_hook_fire(&transport->device->discovery->hooks[PA_BLUEZ4_HOOK_TRANSPORT_STATE_CHANGED], transport);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static DBusMessage *endpoint_set_configuration(DBusConnection *conn, DBusMessage *m, void *userdata) {
 | 
					static DBusMessage *endpoint_set_configuration(DBusConnection *conn, DBusMessage *m, void *userdata) {
 | 
				
			||||||
    pa_bluez4_discovery *y = userdata;
 | 
					    pa_bluez4_discovery *y = userdata;
 | 
				
			||||||
    pa_bluez4_device *d;
 | 
					    pa_bluez4_device *d;
 | 
				
			||||||
| 
						 | 
					@ -1392,8 +1394,7 @@ static DBusMessage *endpoint_clear_configuration(DBusConnection *c, DBusMessage
 | 
				
			||||||
        pa_log_debug("Clearing transport %s profile %d", t->path, t->profile);
 | 
					        pa_log_debug("Clearing transport %s profile %d", t->path, t->profile);
 | 
				
			||||||
        t->device->transports[t->profile] = NULL;
 | 
					        t->device->transports[t->profile] = NULL;
 | 
				
			||||||
        pa_hashmap_remove(y->transports, t->path);
 | 
					        pa_hashmap_remove(y->transports, t->path);
 | 
				
			||||||
        t->state = PA_BLUEZ4_TRANSPORT_STATE_DISCONNECTED;
 | 
					        transport_set_state(t, PA_BLUEZ4_TRANSPORT_STATE_DISCONNECTED);
 | 
				
			||||||
        pa_hook_fire(&y->hooks[PA_BLUEZ4_HOOK_TRANSPORT_STATE_CHANGED], t);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (old_any_connected != pa_bluez4_device_any_audio_connected(t->device))
 | 
					        if (old_any_connected != pa_bluez4_device_any_audio_connected(t->device))
 | 
				
			||||||
            run_callback(t->device, false);
 | 
					            run_callback(t->device, false);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -267,7 +267,7 @@ void pa_bluetooth_transport_set_state(pa_bluetooth_transport *t, pa_bluetooth_tr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    old_any_connected = pa_bluetooth_device_any_transport_connected(t->device);
 | 
					    old_any_connected = pa_bluetooth_device_any_transport_connected(t->device);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_log_debug("Transport %s state changed from %s to %s",
 | 
					    pa_log_debug("Transport %s state: %s -> %s",
 | 
				
			||||||
                 t->path, transport_state_to_string(t->state), transport_state_to_string(state));
 | 
					                 t->path, transport_state_to_string(t->state), transport_state_to_string(state));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    t->state = state;
 | 
					    t->state = state;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue