[pulseaudio-commits] [Git][pulseaudio/pulseaudio][master] virtual-source: Don't process the rewind during requesting it

Georg Chini gitlab at gitlab.freedesktop.org
Sat Jan 4 11:20:10 UTC 2020



Georg Chini pushed to branch master at PulseAudio / pulseaudio


Commits:
a71136be by Tanu Kaskinen at 2020-01-04T11:54:36+02:00
virtual-source: Don't process the rewind during requesting it

The request_rewind() callback of the uplink sink called
pa_sink_process_rewind(), which is not allowed. Things are supposed to
happen so that first a rewind is requested, and then during the next
rtpoll loop the sink will process the request. Calling
pa_sink_process_rewind() during the request phase caused a crash.

Having a request_rewind() callback is completely unnecessary, because
it's only useful for forwarding the request to a downstream sink. In
this case there is no downstream sink.

I also set max_rewind to 0, because the sink doesn't support rewinding.

Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/775

- - - - -


1 changed file:

- src/modules/module-virtual-source.c


Changes:

=====================================
src/modules/module-virtual-source.c
=====================================
@@ -151,18 +151,6 @@ static void sink_update_requested_latency_cb(pa_sink *s) {
 
 }
 
-/* Called from I/O thread context */
-static void sink_request_rewind_cb(pa_sink *s) {
-    struct userdata *u;
-
-    pa_sink_assert_ref(s);
-    pa_assert_se(u = s->userdata);
-
-    /* Do nothing */
-    pa_sink_process_rewind(u->sink, 0);
-
-}
-
 /* Called from I/O thread context */
 static int source_process_msg_cb(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
     struct userdata *u = PA_SOURCE(o)->userdata;
@@ -675,7 +663,6 @@ int pa__init(pa_module*m) {
 
         u->sink->parent.process_msg = sink_process_msg_cb;
         u->sink->update_requested_latency = sink_update_requested_latency_cb;
-        u->sink->request_rewind = sink_request_rewind_cb;
         u->sink->set_state_in_main_thread = sink_set_state_in_main_thread_cb;
         u->sink->userdata = u;
 
@@ -685,7 +672,7 @@ int pa__init(pa_module*m) {
         /* FIXME: no idea what I am doing here */
         u->block_usec = BLOCK_USEC;
         nbytes = pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec);
-        pa_sink_set_max_rewind(u->sink, nbytes);
+        pa_sink_set_max_rewind(u->sink, 0);
         pa_sink_set_max_request(u->sink, nbytes);
 
         pa_sink_put(u->sink);



View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/a71136be527ad07e6305a562e6a22e33de8aab01

-- 
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/a71136be527ad07e6305a562e6a22e33de8aab01
You're receiving this email because of your account on gitlab.freedesktop.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20200104/e0b13903/attachment-0001.htm>


More information about the pulseaudio-commits mailing list