pa_assert(chunk);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return -1;
while (pa_memblockq_peek(u->memblockq, &tchunk) < 0) {
pa_assert_se(u = i->userdata);
pa_assert(nbytes > 0);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
if (u->sink->thread_info.rewind_nbytes > 0) {
if (amount > 0) {
unsigned c;
- pa_memblockq_seek(u->memblockq, -amount, PA_SEEK_RELATIVE);
+ pa_memblockq_seek(u->memblockq, - (int64_t) amount, PA_SEEK_RELATIVE);
pa_sink_process_rewind(u->sink, amount);
pa_log_debug("Resetting plugin");
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
pa_memblockq_set_maxrewind(u->memblockq, nbytes);
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
pa_sink_detach_within_thread(u->sink);
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq);
pa_assert_se(u = i->userdata);
pa_sink_unlink(u->sink);
+ pa_sink_input_unlink(u->sink_input);
+
pa_sink_unref(u->sink);
u->sink = NULL;
-
- pa_sink_input_unlink(u->sink_input);
pa_sink_input_unref(u->sink_input);
u->sink_input = NULL;
pa_assert(chunk);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return -1;
pa_sink_render(u->sink, nbytes, chunk);
pa_assert_se(u = i->userdata);
pa_assert(nbytes > 0);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
if (u->sink->thread_info.rewind_nbytes > 0) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
pa_sink_set_max_rewind(u->sink, nbytes);
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
pa_sink_detach_within_thread(u->sink);
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink)
+ if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return;
pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq);
pa_assert_se(u = i->userdata);
pa_sink_unlink(u->sink);
+ pa_sink_input_unlink(u->sink_input);
+
pa_sink_unref(u->sink);
u->sink = NULL;
-
- pa_sink_input_unlink(u->sink_input);
pa_sink_input_unref(u->sink_input);
u->sink_input = NULL;