]> code.delx.au - pulseaudio/blobdiff - polyp/source.c
Make the whole stuff LGPL only
[pulseaudio] / polyp / source.c
index 2c0caca077b884e8f39acf050e96225543cb01fc..026ec7a81c9c6eecc10dc21689420990e775b364 100644 (file)
@@ -4,7 +4,7 @@
   This file is part of polypaudio.
  
   polypaudio is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published
+  it under the terms of the GNU Lesser General Public License as published
   by the Free Software Foundation; either version 2 of the License,
   or (at your option) any later version.
  
@@ -13,7 +13,7 @@
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   General Public License for more details.
  
-  You should have received a copy of the GNU General Public License
+  You should have received a copy of the GNU Lesser General Public License
   along with polypaudio; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
   USA.
@@ -60,6 +60,7 @@ struct pa_source* pa_source_new(struct pa_core *core, const char *name, int fail
     s->outputs = pa_idxset_new(NULL, NULL);
     s->monitor_of = NULL;
 
+    s->get_latency = NULL;
     s->notify = NULL;
     s->userdata = NULL;
 
@@ -130,7 +131,7 @@ void pa_source_notify(struct pa_source*s) {
 }
 
 static int do_post(void *p, uint32_t index, int *del, void*userdata) {
-    struct pa_memchunk *chunk = userdata;
+    const struct pa_memchunk *chunk = userdata;
     struct pa_source_output *o = p;
     assert(o && o->push && del && chunk);
 
@@ -138,11 +139,11 @@ static int do_post(void *p, uint32_t index, int *del, void*userdata) {
     return 0;
 }
 
-void pa_source_post(struct pa_source*s, struct pa_memchunk *chunk) {
+void pa_source_post(struct pa_source*s, const struct pa_memchunk *chunk) {
     assert(s && s->ref >= 1 && chunk);
 
     pa_source_ref(s);
-    pa_idxset_foreach(s->outputs, do_post, chunk);
+    pa_idxset_foreach(s->outputs, do_post, (void*) chunk);
     pa_source_unref(s);
 }
 
@@ -150,3 +151,13 @@ void pa_source_set_owner(struct pa_source *s, struct pa_module *m) {
     assert(s);
     s->owner = m;
 }
+
+pa_usec_t pa_source_get_latency(struct pa_source *s) {
+    assert(s && s->ref >= 1);
+
+    if (!s->get_latency)
+        return 0;
+
+    return s->get_latency(s);
+}
+