summaryrefslogtreecommitdiffstats
path: root/polyp/module-oss.c
diff options
context:
space:
mode:
Diffstat (limited to 'polyp/module-oss.c')
-rw-r--r--polyp/module-oss.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/polyp/module-oss.c b/polyp/module-oss.c
index b4e011d8..a45f72b8 100644
--- a/polyp/module-oss.c
+++ b/polyp/module-oss.c
@@ -322,10 +322,15 @@ void pa__done(struct pa_core *c, struct pa_module*m) {
if (u->silence.memblock)
pa_memblock_unref(u->silence.memblock);
- if (u->sink)
- pa_sink_free(u->sink);
- if (u->source)
- pa_source_free(u->source);
+ if (u->sink) {
+ pa_sink_disconnect(u->sink);
+ pa_sink_unref(u->sink);
+ }
+
+ if (u->source) {
+ pa_source_disconnect(u->source);
+ pa_source_unref(u->source);
+ }
pa_iochannel_free(u->io);
pa_xfree(u);