Ticket #252: pa_custom_hal_names.patch

File pa_custom_hal_names.patch, 6.7 KB (added by shogun_panda, 4 years ago)

The patch of this ticket

  • src/modules/module-alsa-sink.c

    diff -ura old/src/modules/module-alsa-sink.c new/src/modules/module-alsa-sink.c
    old new  
    5656PA_MODULE_LOAD_ONCE(FALSE); 
    5757PA_MODULE_USAGE( 
    5858        "sink_name=<name for the sink> " 
     59        "description=<description for the sink>" 
    5960        "device=<ALSA device> " 
    6061        "device_id=<ALSA device id> " 
    6162        "format=<sample format> " 
     
    102103static const char* const valid_modargs[] = { 
    103104    "device", 
    104105    "device_id", 
     106    "description", 
    105107    "sink_name", 
    106108    "format", 
    107109    "channels", 
     
    873875    pa_sink_set_module(u->sink, m); 
    874876    pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); 
    875877    pa_sink_set_rtpoll(u->sink, u->rtpoll); 
    876     pa_sink_set_description(u->sink, t = pa_sprintf_malloc( 
     878 
     879    if(pa_modargs_get_value(ma, "description", NULL) != NULL) 
     880       pa_sink_set_description(u->sink, t = pa_sprintf_malloc("%s", (char*) pa_modargs_get_value(ma, "description", NULL))); 
     881    else 
     882       pa_sink_set_description(u->sink, t = pa_sprintf_malloc( 
    877883                                    "ALSA PCM on %s (%s)%s", 
    878884                                    u->device_name, 
    879885                                    snd_pcm_info_get_name(pcm_info), 
  • src/modules/module-alsa-source.c

    diff -ura old/src/modules/module-alsa-source.c new/src/modules/module-alsa-source.c
    old new  
    5858PA_MODULE_USAGE( 
    5959        "source_name=<name for the source> " 
    6060        "device=<ALSA device> " 
     61        "description=<description for the source>" 
    6162        "device_id=<ALSA device id> " 
    6263        "format=<sample format> " 
    6364        "channels=<number of channels> " 
     
    101102    "device", 
    102103    "device_id", 
    103104    "source_name", 
     105    "description", 
    104106    "channels", 
    105107    "rate", 
    106108    "format", 
     
    852854    pa_source_set_module(u->source, m); 
    853855    pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); 
    854856    pa_source_set_rtpoll(u->source, u->rtpoll); 
    855     pa_source_set_description(u->source, t = pa_sprintf_malloc( 
     857 
     858    if(pa_modargs_get_value(ma, "description", NULL) != NULL) 
     859       pa_source_set_description(u->source, t = pa_sprintf_malloc("%s", (char*) pa_modargs_get_value(ma, "description", NULL))); 
     860    else 
     861       pa_source_set_description(u->source, t = pa_sprintf_malloc( 
    856862                                      "ALSA PCM on %s (%s)%s", 
    857863                                      u->device_name, 
    858864                                      snd_pcm_info_get_name(pcm_info), 
  • src/modules/module-hal-detect.c

    diff -ura old/src/modules/module-hal-detect.c new/src/modules/module-hal-detect.c
    old new  
    163163    const char *module_name; 
    164164    DBusError error; 
    165165    pa_module *m; 
     166     char *p_udi, *parent_udi; 
     167     char *custom_source_name = NULL, *custom_sink_name = NULL, *custom_sink_description = NULL, *custom_source_description = NULL; 
     168    unsigned int i; 
     169 
    166170 
    167171    dbus_error_init(&error); 
    168172 
     
    187191    if (hal_alsa_device_is_modem(u->context, udi, &error)) 
    188192        goto fail; 
    189193 
     194    p_udi = pa_sprintf_malloc("%s", libhal_device_get_property_string(u->context, udi, "info.parent", &error)); 
     195    parent_udi = pa_sprintf_malloc("%s", libhal_device_get_property_string(u->context, p_udi, "info.parent", &error)); 
     196 
     197    if(libhal_device_property_exists(u->context, parent_udi, "pulse.sink_name", &error)) 
     198        custom_sink_name = pa_sprintf_malloc("%s", libhal_device_get_property_string(u->context, parent_udi, "pulse.sink_name", &error)); 
     199     else if(libhal_device_property_exists(u->context, parent_udi, "pulse.device_name", &error)) 
     200        custom_sink_name = pa_sprintf_malloc("%s_output", libhal_device_get_property_string(u->context, parent_udi, "pulse.device_name", &error)); 
     201 
     202   if(libhal_device_property_exists(u->context, parent_udi, "pulse.source_name", &error)) 
     203        custom_source_name = pa_sprintf_malloc("%s", libhal_device_get_property_string(u->context, parent_udi, "pulse.source_name", &error)); 
     204    else if(libhal_device_property_exists(u->context, parent_udi, "pulse.device_name", &error)) 
     205        custom_source_name = pa_sprintf_malloc("%s_input", libhal_device_get_property_string(u->context, parent_udi, "pulse.device_name", &error)); 
     206 
     207   if(libhal_device_property_exists(u->context, parent_udi, "pulse.sink_description", &error)) 
     208        custom_sink_description = pa_sprintf_malloc("%s", libhal_device_get_property_string(u->context, parent_udi, "pulse.sink_description", &error)); 
     209 
     210   if(libhal_device_property_exists(u->context, parent_udi, "pulse.source_description", &error)) 
     211        custom_source_description = pa_sprintf_malloc("%s", libhal_device_get_property_string(u->context, parent_udi, "pulse.source_description", &error)); 
     212 
     213    if(custom_sink_name != NULL){ 
     214        for(i = 0; i < strlen(custom_sink_name); i++) 
     215            if(custom_sink_name[i] == ' ') 
     216                custom_sink_name[i] = '_'; 
     217    } 
     218 
     219    if(custom_source_name != NULL){ 
     220        for(i = 0; i < strlen(custom_source_name); i++) 
     221            if(custom_source_name[i] == ' ') 
     222                custom_source_name[i] = '_'; 
     223    } 
     224 
    190225    if (type == ALSA_TYPE_SINK) { 
    191         *sink_name = pa_sprintf_malloc("alsa_output.%s", strip_udi(udi)); 
     226          if(custom_sink_name != NULL)         
     227            *sink_name = pa_sprintf_malloc("%s", custom_sink_name); 
     228          else 
     229            *sink_name = pa_sprintf_malloc("alsa_output.%s", strip_udi(udi)); 
    192230 
    193231        module_name = "module-alsa-sink"; 
    194232        args = pa_sprintf_malloc("device_id=%u sink_name=%s", card, *sink_name); 
     233        if(custom_sink_description != NULL) 
     234            args = pa_sprintf_malloc("%s description=\"%s\"", args, custom_sink_description); 
    195235    } else { 
    196         *source_name = pa_sprintf_malloc("alsa_input.%s", strip_udi(udi)); 
     236          if(custom_source_name != NULL)         
     237            *source_name = pa_sprintf_malloc("%s", custom_source_name); 
     238          else 
     239            *source_name = pa_sprintf_malloc("alsa_input.%s", strip_udi(udi)); 
    197240 
    198241        module_name = "module-alsa-source"; 
    199242        args = pa_sprintf_malloc("device_id=%u source_name=%s", card, *source_name); 
     243        if(custom_source_description != NULL) 
     244            args = pa_sprintf_malloc("%s description=\"%s\"", args, custom_source_description); 
    200245    } 
    201246 
     247 
    202248    pa_log_debug("Loading %s with arguments '%s'", module_name, args); 
    203249 
    204250    m = pa_module_load(u->core, module_name, args); 
     
    206252    pa_xfree(args); 
    207253 
    208254    if (!m) { 
     255        pa_xfree(p_udi); 
     256        pa_xfree(parent_udi); 
    209257        pa_xfree(*sink_name); 
    210258        pa_xfree(*source_name); 
    211259        *sink_name = *source_name = NULL;