mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	alsa: don't make use of tsched related variables when tsched is disabled
This commit is contained in:
		
							parent
							
								
									c970131094
								
							
						
					
					
						commit
						d11cd33e3a
					
				
					 2 changed files with 40 additions and 22 deletions
				
			
		| 
						 | 
					@ -629,11 +629,14 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
 | 
					    if (u->use_tsched) {
 | 
				
			||||||
 | 
					        *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (*sleep_usec > process_usec)
 | 
					        if (*sleep_usec > process_usec)
 | 
				
			||||||
        *sleep_usec -= process_usec;
 | 
					            *sleep_usec -= process_usec;
 | 
				
			||||||
    else
 | 
					        else
 | 
				
			||||||
 | 
					            *sleep_usec = 0;
 | 
				
			||||||
 | 
					    } else
 | 
				
			||||||
        *sleep_usec = 0;
 | 
					        *sleep_usec = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return work_done ? 1 : 0;
 | 
					    return work_done ? 1 : 0;
 | 
				
			||||||
| 
						 | 
					@ -766,11 +769,14 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
 | 
					    if (u->use_tsched) {
 | 
				
			||||||
 | 
					        *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (*sleep_usec > process_usec)
 | 
					        if (*sleep_usec > process_usec)
 | 
				
			||||||
        *sleep_usec -= process_usec;
 | 
					            *sleep_usec -= process_usec;
 | 
				
			||||||
    else
 | 
					        else
 | 
				
			||||||
 | 
					            *sleep_usec = 0;
 | 
				
			||||||
 | 
					    } else
 | 
				
			||||||
        *sleep_usec = 0;
 | 
					        *sleep_usec = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return work_done ? 1 : 0;
 | 
					    return work_done ? 1 : 0;
 | 
				
			||||||
| 
						 | 
					@ -1267,6 +1273,9 @@ static void sink_update_requested_latency_cb(pa_sink *s) {
 | 
				
			||||||
    struct userdata *u = s->userdata;
 | 
					    struct userdata *u = s->userdata;
 | 
				
			||||||
    size_t before;
 | 
					    size_t before;
 | 
				
			||||||
    pa_assert(u);
 | 
					    pa_assert(u);
 | 
				
			||||||
 | 
					    pa_assert(u->use_tsched); /* only when timer scheduling is used
 | 
				
			||||||
 | 
					                               * we can dynamically adjust the
 | 
				
			||||||
 | 
					                               * latency */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!u->pcm_handle)
 | 
					    if (!u->pcm_handle)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
| 
						 | 
					@ -1301,7 +1310,10 @@ static int process_rewind(struct userdata *u) {
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    unused_nbytes = u->tsched_watermark + (size_t) unused * u->frame_size;
 | 
					    unused_nbytes = (size_t) unused * u->frame_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (u->use_tsched)
 | 
				
			||||||
 | 
					        unused_nbytes += u->tsched_watermark;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (u->hwbuf_size > unused_nbytes)
 | 
					    if (u->hwbuf_size > unused_nbytes)
 | 
				
			||||||
        limit_nbytes = u->hwbuf_size - unused_nbytes;
 | 
					        limit_nbytes = u->hwbuf_size - unused_nbytes;
 | 
				
			||||||
| 
						 | 
					@ -1862,7 +1874,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    u->sink->parent.process_msg = sink_process_msg;
 | 
					    u->sink->parent.process_msg = sink_process_msg;
 | 
				
			||||||
    u->sink->update_requested_latency = sink_update_requested_latency_cb;
 | 
					    if (u->use_tsched)
 | 
				
			||||||
 | 
					        u->sink->update_requested_latency = sink_update_requested_latency_cb;
 | 
				
			||||||
    u->sink->set_state = sink_set_state_cb;
 | 
					    u->sink->set_state = sink_set_state_cb;
 | 
				
			||||||
    u->sink->set_port = sink_set_port_cb;
 | 
					    u->sink->set_port = sink_set_port_cb;
 | 
				
			||||||
    u->sink->userdata = u;
 | 
					    u->sink->userdata = u;
 | 
				
			||||||
| 
						 | 
					@ -1906,7 +1919,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
 | 
				
			||||||
    } else
 | 
					    } else
 | 
				
			||||||
        pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
 | 
					        pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    reserve_update(u);
 | 
					    reserve_update(u);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (update_sw_params(u) < 0)
 | 
					    if (update_sw_params(u) < 0)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -603,12 +603,14 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
 | 
					    if (u->use_tsched) {
 | 
				
			||||||
 | 
					        *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (*sleep_usec > process_usec)
 | 
					        if (*sleep_usec > process_usec)
 | 
				
			||||||
        *sleep_usec -= process_usec;
 | 
					            *sleep_usec -= process_usec;
 | 
				
			||||||
    else
 | 
					        else
 | 
				
			||||||
        *sleep_usec = 0;
 | 
					            *sleep_usec = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return work_done ? 1 : 0;
 | 
					    return work_done ? 1 : 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -730,12 +732,14 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
 | 
					    if (u->use_tsched) {
 | 
				
			||||||
 | 
					        *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (*sleep_usec > process_usec)
 | 
					        if (*sleep_usec > process_usec)
 | 
				
			||||||
        *sleep_usec -= process_usec;
 | 
					            *sleep_usec -= process_usec;
 | 
				
			||||||
    else
 | 
					        else
 | 
				
			||||||
        *sleep_usec = 0;
 | 
					            *sleep_usec = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return work_done ? 1 : 0;
 | 
					    return work_done ? 1 : 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1205,6 +1209,7 @@ static int source_set_port_cb(pa_source *s, pa_device_port *p) {
 | 
				
			||||||
static void source_update_requested_latency_cb(pa_source *s) {
 | 
					static void source_update_requested_latency_cb(pa_source *s) {
 | 
				
			||||||
    struct userdata *u = s->userdata;
 | 
					    struct userdata *u = s->userdata;
 | 
				
			||||||
    pa_assert(u);
 | 
					    pa_assert(u);
 | 
				
			||||||
 | 
					    pa_assert(u->use_tsched);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!u->pcm_handle)
 | 
					    if (!u->pcm_handle)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
| 
						 | 
					@ -1693,7 +1698,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    u->source->parent.process_msg = source_process_msg;
 | 
					    u->source->parent.process_msg = source_process_msg;
 | 
				
			||||||
    u->source->update_requested_latency = source_update_requested_latency_cb;
 | 
					    if (u->use_tsched)
 | 
				
			||||||
 | 
					        u->source->update_requested_latency = source_update_requested_latency_cb;
 | 
				
			||||||
    u->source->set_state = source_set_state_cb;
 | 
					    u->source->set_state = source_set_state_cb;
 | 
				
			||||||
    u->source->set_port = source_set_port_cb;
 | 
					    u->source->set_port = source_set_port_cb;
 | 
				
			||||||
    u->source->userdata = u;
 | 
					    u->source->userdata = u;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue