diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/modules/module-combine.c | 17 | ||||
| -rw-r--r-- | src/modules/module-tunnel.c | 10 | 
2 files changed, 22 insertions, 5 deletions
| diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c index 217fdae6..f3bb3fd3 100644 --- a/src/modules/module-combine.c +++ b/src/modules/module-combine.c @@ -217,6 +217,18 @@ static pa_usec_t sink_get_latency_cb(pa_sink *s) {          pa_sink_get_latency(u->master->sink_input->sink);  } +static void sink_notify(pa_sink *s) { +    struct userdata *u; +    struct output *o; +     +    assert(s); +    u = s->userdata; +    assert(u); +     +    for (o = u->outputs; o; o = o->next) +        pa_sink_notify(o->sink_input->sink); +} +  static struct output *output_new(struct userdata *u, pa_sink *sink, int resample_method) {      struct output *o = NULL;      char t[256]; @@ -237,7 +249,7 @@ static struct output *output_new(struct userdata *u, pa_sink *sink, int resample              0,              NULL); -    snprintf(t, sizeof(t), "%s: output #%u", u->sink->name, u->n_outputs+1); +    snprintf(t, sizeof(t), "Output stream #%u of sink %s", u->n_outputs+1, u->sink->name);      pa_sink_input_new_data_init(&data);      data.sink = sink; @@ -387,8 +399,9 @@ int pa__init(pa_core *c, pa_module*m) {      }      pa_sink_set_owner(u->sink, m); -    pa_sink_set_description(u->sink, "Combined sink"); +    pa_sink_set_description(u->sink, "Combined Sink");      u->sink->get_latency = sink_get_latency_cb; +    u->sink->notify = sink_notify;      u->sink->userdata = u;      if (!(u->master = output_new(u, master_sink, resample_method))) { diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c index 18c289a8..18e1d97d 100644 --- a/src/modules/module-tunnel.c +++ b/src/modules/module-tunnel.c @@ -266,6 +266,8 @@ static void send_bytes(struct userdata *u) {          pa_pstream_send_memblock(u->pstream, u->channel, 0, PA_SEEK_RELATIVE, &chunk);          pa_memblock_unref(chunk.memblock); +/*         pa_log("sent %lu", (unsigned long) chunk.length); */ +          if (chunk.length > u->requested_bytes)              u->requested_bytes = 0;          else @@ -330,6 +332,8 @@ static void stream_get_latency_callback(pa_pdispatch *pd, uint32_t command, PA_G      pa_gettimeofday(&now); +    /* FIXME! This could use some serious love. */ +          if (pa_timeval_cmp(&local, &remote) < 0 && pa_timeval_cmp(&remote, &now)) {          /* local and remote seem to have synchronized clocks */  #ifdef TUNNEL_SINK @@ -350,7 +354,7 @@ static void stream_get_latency_callback(pa_pdispatch *pd, uint32_t command, PA_G          u->host_latency = 0;  #endif -/*     pa_log("estimated host latency: %0.0f usec", (double) u->host_latency); */ +/*     pa_log("estimated host latency: %0.0f usec", (double) u->host_latency);  */  }  static void request_latency(struct userdata *u) { @@ -631,7 +635,6 @@ static void pstream_die_callback(pa_pstream *p, void *userdata) {      die(u);  } -  static void pstream_packet_callback(pa_pstream *p, pa_packet *packet, const pa_creds *creds, void *userdata) {      struct userdata *u = userdata;      assert(p && packet && u); @@ -772,6 +775,7 @@ static int sink_set_hw_mute(pa_sink *sink) {      return 0;  } +  #else  static pa_usec_t source_get_latency(pa_source *source) {      struct userdata *u; @@ -946,12 +950,12 @@ int pa__init(pa_core *c, pa_module*m) {          goto fail;      } -    u->sink->notify = sink_notify;      u->sink->get_latency = sink_get_latency;      u->sink->get_hw_volume = sink_get_hw_volume;      u->sink->set_hw_volume = sink_set_hw_volume;      u->sink->get_hw_mute = sink_get_hw_mute;      u->sink->set_hw_mute = sink_set_hw_mute; +    u->sink->notify = sink_notify;      u->sink->userdata = u;      pa_sink_set_description(u->sink, t = pa_sprintf_malloc("Tunnel to %s%s%s", u->sink_name ? u->sink_name : "", u->sink_name ? " on " : "", u->server_name));      pa_xfree(t); | 
