[pulseaudio-discuss] Questions about device_start_waiting_for_profiles

Chengyi Zhao chengyi.zhao at outlook.com
Sun Sep 13 09:28:12 UTC 2020


Hi guys,

I have a question for the code below, please give your opinion, thanks!

The function device_start_waiting_for_profiles is to wait for connecting 
profiles,
but only waited 3 seconds(WAIT_FOR_PROFILES_TIMEOUT_USEC), if Bluetooth 
transport state
will be changed after 3 seconds(WAIT_FOR_PROFILES_TIMEOUT_USEC),
I think whether there are any issues with the code logic or not.


     /* src/modules/bluetooth/bluez5-util.c */

     n_disconnected_profiles = 
device_count_disconnected_profiles(t->device);

     new_device_appeared = !old_any_connected && 
pa_bluetooth_device_any_transport_connected(t->device);
     device_disconnected = old_any_connected && 
!pa_bluetooth_device_any_transport_connected(t->device);

     if (new_device_appeared) {
         if (n_disconnected_profiles > 0)
             device_start_waiting_for_profiles(t->device); <---- here
         else
pa_hook_fire(&t->device->discovery->hooks[PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED], 
t->device);
         return;
     }

     static void device_start_waiting_for_profiles(pa_bluetooth_device 
*device) {
         pa_assert(!device->wait_for_profiles_timer);
         device->wait_for_profiles_timer = 
pa_core_rttime_new(device->discovery->core,
pa_rtclock_now() + WAIT_FOR_PROFILES_TIMEOUT_USEC,  <---- here
wait_for_profiles_cb, device);
     }

     static void wait_for_profiles_cb(pa_mainloop_api *api, 
pa_time_event* event, const struct timeval *tv, void *userdata) {
         pa_bluetooth_device *device = userdata;
         pa_strbuf *buf;
         pa_bluetooth_profile_t profile;
         bool first = true;
         char *profiles_str;

         device_stop_waiting_for_profiles(device);  <---- here

         /* ...... */
     }

Best Regards,
Chengyi



More information about the pulseaudio-discuss mailing list