mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	set reserve interface application device name
This commit is contained in:
		
							parent
							
								
									03ac71bcad
								
							
						
					
					
						commit
						8314858183
					
				
					 5 changed files with 48 additions and 1 deletions
				
			
		| 
						 | 
					@ -134,6 +134,17 @@ static void reserve_done(struct userdata *u) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void reserve_update(struct userdata *u) {
 | 
				
			||||||
 | 
					    const char *description;
 | 
				
			||||||
 | 
					    pa_assert(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!u->sink)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((description = pa_proplist_gets(u->sink->proplist, PA_PROP_DEVICE_DESCRIPTION)))
 | 
				
			||||||
 | 
					        pa_reserve_wrapper_set_application_device_name(u->reserve, description);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int reserve_init(struct userdata *u, const char *dname) {
 | 
					static int reserve_init(struct userdata *u, const char *dname) {
 | 
				
			||||||
    char *rname;
 | 
					    char *rname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -153,6 +164,8 @@ static int reserve_init(struct userdata *u, const char *dname) {
 | 
				
			||||||
    if (!(u->reserve))
 | 
					    if (!(u->reserve))
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    reserve_update(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(!u->reserve_slot);
 | 
					    pa_assert(!u->reserve_slot);
 | 
				
			||||||
    u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
 | 
					    u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1684,6 +1697,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
 | 
				
			||||||
        pa_log_info("Time scheduling watermark is %0.2fms",
 | 
					        pa_log_info("Time scheduling watermark is %0.2fms",
 | 
				
			||||||
                    (double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
 | 
					                    (double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    reserve_update(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (update_sw_params(u) < 0)
 | 
					    if (update_sw_params(u) < 0)
 | 
				
			||||||
        goto fail;
 | 
					        goto fail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -132,6 +132,17 @@ static void reserve_done(struct userdata *u) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void reserve_update(struct userdata *u) {
 | 
				
			||||||
 | 
					    const char *description;
 | 
				
			||||||
 | 
					    pa_assert(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!u->source)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((description = pa_proplist_gets(u->source->proplist, PA_PROP_DEVICE_DESCRIPTION)))
 | 
				
			||||||
 | 
					        pa_reserve_wrapper_set_application_device_name(u->reserve, description);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int reserve_init(struct userdata *u, const char *dname) {
 | 
					static int reserve_init(struct userdata *u, const char *dname) {
 | 
				
			||||||
    char *rname;
 | 
					    char *rname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -151,6 +162,8 @@ static int reserve_init(struct userdata *u, const char *dname) {
 | 
				
			||||||
    if (!(u->reserve))
 | 
					    if (!(u->reserve))
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    reserve_update(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(!u->reserve_slot);
 | 
					    pa_assert(!u->reserve_slot);
 | 
				
			||||||
    u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
 | 
					    u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1522,6 +1535,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
 | 
				
			||||||
        pa_log_info("Time scheduling watermark is %0.2fms",
 | 
					        pa_log_info("Time scheduling watermark is %0.2fms",
 | 
				
			||||||
                    (double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
 | 
					                    (double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    reserve_update(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (update_sw_params(u) < 0)
 | 
					    if (update_sw_params(u) < 0)
 | 
				
			||||||
        goto fail;
 | 
					        goto fail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -282,6 +282,7 @@ int pa__init(pa_module *m) {
 | 
				
			||||||
    struct userdata *u;
 | 
					    struct userdata *u;
 | 
				
			||||||
    char rname[32];
 | 
					    char rname[32];
 | 
				
			||||||
    pa_reserve_wrapper *reserve = NULL;
 | 
					    pa_reserve_wrapper *reserve = NULL;
 | 
				
			||||||
 | 
					    const char *description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_alsa_redirect_errors_inc();
 | 
					    pa_alsa_redirect_errors_inc();
 | 
				
			||||||
    snd_config_update_free_global();
 | 
					    snd_config_update_free_global();
 | 
				
			||||||
| 
						 | 
					@ -319,6 +320,10 @@ int pa__init(pa_module *m) {
 | 
				
			||||||
    pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
 | 
					    pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
 | 
				
			||||||
    set_card_name(&data, ma, u->device_id);
 | 
					    set_card_name(&data, ma, u->device_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (reserve)
 | 
				
			||||||
 | 
					        if ((description = pa_proplist_gets(data.proplist, PA_PROP_DEVICE_DESCRIPTION)))
 | 
				
			||||||
 | 
					            pa_reserve_wrapper_set_application_device_name(reserve, description);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    u->profiles = data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
 | 
					    u->profiles = data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
 | 
				
			||||||
    if (pa_alsa_probe_profiles(u->device_id, &m->core->default_sample_spec, enumerate_cb, u) < 0) {
 | 
					    if (pa_alsa_probe_profiles(u->device_id, &m->core->default_sample_spec, enumerate_cb, u) < 0) {
 | 
				
			||||||
        pa_card_new_data_done(&data);
 | 
					        pa_card_new_data_done(&data);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -123,7 +123,7 @@ pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name)
 | 
				
			||||||
                 _("PulseAudio Sound Server"),
 | 
					                 _("PulseAudio Sound Server"),
 | 
				
			||||||
                 0,
 | 
					                 0,
 | 
				
			||||||
                 request_cb,
 | 
					                 request_cb,
 | 
				
			||||||
                 &error)) < 0) {
 | 
					                 NULL)) < 0) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pa_log_error("Failed to acquire reservation lock on device '%s': %s", device_name, pa_cstrerror(-k));
 | 
					        pa_log_error("Failed to acquire reservation lock on device '%s': %s", device_name, pa_cstrerror(-k));
 | 
				
			||||||
        goto fail;
 | 
					        goto fail;
 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,10 @@ pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name)
 | 
				
			||||||
    return r;
 | 
					    return r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fail:
 | 
					fail:
 | 
				
			||||||
 | 
					    dbus_error_free(&error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    reserve_wrapper_free(r);
 | 
					    reserve_wrapper_free(r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -156,3 +159,10 @@ pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return &r->hook;
 | 
					    return &r->hook;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const char *name) {
 | 
				
			||||||
 | 
					    pa_assert(r);
 | 
				
			||||||
 | 
					    pa_assert(PA_REFCNT_VALUE(r) >= 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rd_set_application_device_name(r->device, name);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,4 +33,6 @@ void pa_reserve_wrapper_unref(pa_reserve_wrapper *r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r);
 | 
					pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const char *name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue