Stefan Kost
ae8d210fdb
pulsesink: move the shared mainloop from class to static var
...
Just have one static var for the shared mainloop instead of one class variable
and copies in the instance.
2010-09-14 10:10:27 +03:00
Stefan Kost
f62dc6976b
pulsesink: rework context sharing
...
We also need to share the main-loop threads as this owns the context. Thus have
a class wide main-loop thread. From this we create a context per client-name.
Instead of always looking up the context, we keep this with the instance. The
reverse mapping is only needed in pulse singal handlers. This saves a lot of
locking. Also one signal handler becomes simpler as ther eis only one mainloop
to notify.
Now valgind happy - no leaks, no bad reads/writes.
This reverts major parts of commit 69a397c32f
.
Fixes #628996
2010-09-13 16:59:22 +03:00
Stefan Kost
6490c4eb3d
pulsesink: remove unused code
2010-09-08 17:43:47 +03:00
Stefan Kost
9fd0adc7dc
pulsesink: fixup last commit
...
We need to prevent the eventual leak better.
2010-09-08 14:36:48 +03:00
Stefan Kost
f6892b81ae
pulsesink: code cleanups
...
Use g_slist_prepend as we don't care about the order. Check for list == NULL
instead of iterating the list to see if it is empty. Move ctx allocation down
to prevent leak in case of failure.
2010-09-08 14:19:34 +03:00
Wim Taymans
2148b2db0a
pulsesink: simplify clock provide code
...
Don't leak the pulsesink element by having the clock keep a ref to the sink.
Create the clock only once in the constructor and use the baseaudiosink clock
cleanup code.
2010-09-07 19:03:33 +02:00
Stefan Kost
7fd77c07d5
pulsesink: move the context table init to _get_type phase
...
This seems to fix the invalid reads on context shutdown better, altough
I can't really explain.
2010-09-07 18:09:28 +03:00
Stefan Kost
f604e20499
pulse: allow setting stream properties
...
Add a "properties" property to the elements to allow setting extra stream
properties.
Fixes #537544
2010-09-07 14:20:21 +03:00
Stefan Kost
a313bc7524
pulsesink: don't free the context multiple times
...
Apparently the close function of the ring-buffer can be called multiple times.
2010-09-07 00:27:07 +03:00
Wim Taymans
95270dc2fb
pulsesrc: use _get_caps_reffed() when we can
...
Use _get_caps_reffed()
Add some more debug when opening the server connection.
2010-09-06 10:23:07 +02:00
Stefan Kost
fc73dd210d
pulsesink: add since docs for new property.
2010-09-06 09:57:58 +03:00
Stefan Kost
f83f7fafad
pulsesrc: move the property-setter to the getter.
2010-09-06 09:53:00 +03:00
Sebastian Dröge
37ee281d13
pulsesink: Fail gracefully if no threaded PA mainloop can be created
...
Fixes bug #628020 .
2010-09-04 14:52:09 +02:00
Sebastian Dröge
998adeb974
pulsesink: Only include the server name in the context name if it's not NULL
2010-09-04 14:52:07 +02:00
Philippe Normand
7116fff3c5
pulsesink: Add "client" property to set the PA client name
...
Allows the application to modify the client name used to connect when
connecting to the PulseAudio daemon. Note however that updating the
property after the element reached the READY state will have no
effect until the next NULL->READY transition.
Fixes bug #627174 .
2010-09-04 14:52:07 +02:00
Sebastian Dröge
03f2e81f69
pulsesink: Free the clock on state change failures too
2010-09-04 14:52:07 +02:00
Philippe Normand
39d2ef5136
pulseutil: include pid value in gst_pulse_client_name() fallback return value
...
Fixes bug #627162
2010-09-04 14:52:06 +02:00
Sebastian Dröge
bc5345bbd3
pulsesink: Free the GstPulseContext after usage
2010-09-04 14:52:06 +02:00
Philippe Normand
69a397c32f
pulsesink: share the PA context between all clients with the same name
...
Avoid to create a new PA context for each new client by using a hash
table containing the list of ring-buffers and the shared PA context
for each client. Doing this will improve application memory usage in
the cases where multiple pipelines involving multiple pulsesink
elements are used.
Fixes bug #624338 .
2010-09-04 14:52:06 +02:00
Philippe Normand
2c5976d355
pulsesink: clear the PA mainloop if baseaudiosink failed to open the ring_buffer
...
If the application requests a state-change and pulsesink fails to open
the ring_buffer device the mainloop attribute of the sink should be
cleaned up to avoid future state-change (NULL->READY) failures.
2010-09-04 14:52:06 +02:00
Tim-Philipp Müller
74b2af63fd
pulse: fix printf format in some debugging messages
2010-08-09 00:36:36 +01:00
Philippe Normand
864a52d8aa
pulsesink: use G_TYPE_DEFINE to define ring buffer type
...
The existing get_type() implementation is racy, and the
g_type_class_ref() workaround didn't actually work because
it was in the wrong function. Since class creation in GObject
is thread-safe these days (since 2.16), the class_ref workaround
is no longer needed and it is sufficient to ensure the _get_type()
function is thread-safe, which G_TYPE_DEFINE does.
https://bugzilla.gnome.org/show_bug.cgi?id=624338
2010-08-04 16:19:09 +01:00
Sebastian Dröge
f6240a4773
pulsesink: Post CLOCK-LOST/CLOCK-PROVIDE when going to/from READY
...
Otherwise the clocks are redistributed every time the pipeline
goes to PAUSED, which is quite expensive.
2010-08-04 15:21:26 +02:00
Tim-Philipp Müller
7055264e2e
pulsesink: correctly check what version of gst-plugins-base we're compiling against
...
We need to check the gst-plugins-base version, not the core version
(even if both should be the same in any sane setup).
2010-07-26 18:18:02 +02:00
Sebastian Dröge
10424a4064
pulsesink: Only use gst_audio_clock_new() when compiling against newer base
2010-07-16 17:53:55 +02:00
Sebastian Dröge
9e92bd7b1a
pulsesink: Post clock-provide/clock-lost when going to/from PAUSED
...
Also use gst_audio_clock_new_full() to prevent crashes when the
clock is used after the element was destroyed.
2010-07-16 17:45:38 +02:00
Sebastian Dröge
4113a1dad1
pulsesink: Don't request more shared memory than needed
2010-06-09 20:53:06 +02:00
Sebastian Dröge
bd5987a3d2
pulsesink: Flush shm buffer immediately if it's full
2010-06-09 16:22:27 +02:00
Sebastian Dröge
57813d469f
pulsesink: Fix writing of buffers larger than segsize
...
Fixes bug #620540 .
2010-06-09 16:21:55 +02:00
Sebastian Dröge
b78a27beb2
pulsesink: Fix playback if PA doesn't give us a large enough shared memory buffer
2010-06-09 15:46:59 +02:00
Tim-Philipp Müller
3486f49808
pulse: log message printf format fixes
2010-06-06 17:25:36 +01:00
Sebastian Dröge
dcae55852e
ext: Don't use GST_DEBUG_FUNCPTR for GObject vfuncs
2010-06-06 18:00:22 +02:00
Sebastian Dröge
5072c47624
Revert "pulsesink: Add comments to remove the provide-clock message posting once we depend on base 0.10.30"
...
This reverts commit 8f3708f38a
.
The baseaudiosink commit was reverted
2010-06-03 13:45:32 +02:00
Sebastian Dröge
8f3708f38a
pulsesink: Add comments to remove the provide-clock message posting once we depend on base 0.10.30
...
baseaudiosink does all this for us now.
2010-06-03 10:28:08 +02:00
Benjamin Otte
9715238056
pulse: Style fix: use g_strdup() instead of printf()ing a simple string
2010-06-02 14:20:26 +02:00
Pierre-Louis Bossart
66a76d1f65
pulsesink: optimize communication with PulseAudio using pa_stream_begin_write
2010-06-02 13:47:06 +02:00
Sebastian Dröge
f5057a9fae
pulsesink: Post provide-clock message on the bus if the clock appears/disappears
...
Fixes bug #620277 .
2010-06-02 10:52:56 +02:00
Sebastian Dröge
a8103facc5
pulse: Don't lock the mainloop in NULL
2010-05-17 17:17:01 +02:00
Stefan Kost
c46642523c
pulsesrc: reflow to truncate caps just once
...
We get writable cpas from the intersection (unless it failed). As we truncate
those anyway, we don't need to manyaly copy the first structure.
2010-05-06 15:43:53 +03:00
Sebastian Dröge
4a492f2c8a
pulsesrc: Allocate/free PA mainloop during state changes
...
...also destroy the stream and context during state changes.
2010-05-06 14:03:11 +02:00
Sebastian Dröge
e69ba0f94f
pulsesink: Allocate and free the custom clock in NULL<->READY
2010-05-06 13:57:01 +02:00
Sebastian Dröge
5332287e2d
pulsesink: Create and free the PA mainloop in NULL->READY/READY->NULL
...
This fixes a race condition, when stopping the mainloop during finalization
is done from a mainloop callback.
Fixes bugs #614765 and #590662 .
2010-05-06 13:51:59 +02:00
Sebastian Dröge
ef8d113a73
pulse: Don't compare values of two different enum types
2010-04-30 22:22:25 +02:00
Stefan Kost
7cf9967e0b
pulsesink: fix racy shutdown
...
Keep a ref of pulsesink for deferred mainloop invocation. Fixes #614765
2010-04-06 17:22:03 +02:00
Stefan Kost
f1a75adcbc
i18n: build fixes: #if -> #ifdef for ENABLE_NLS
2010-03-22 17:26:37 +02:00
Tim-Philipp Müller
073201b329
build: Makefile.am cleanups
...
Mostly add $(GST_BASE_CFLAGS) where it was missing, but also fix up
order of flags and libs if needed (see docs/random/moving-plugins).
2010-03-18 21:34:24 +00:00
Mark Nauwelaerts
5a082af3aa
pulse: use #ifdef rather than #if conditionals
2010-03-18 12:44:53 +01:00
Philippe Normand
3ab666762f
pulsesink: gst_pulsesink_get_mute: set result earlier.
...
In the cases where no buffer was process yet or the index is not
available, get_pulsesink_get_mute() would unconditionally return
FALSE.
https://bugzilla.gnome.org/show_bug.cgi?id=610337
2010-02-22 20:49:03 +01:00
Tim-Philipp Müller
3f2a803c48
pulsesink: add comment for translators for 'x by y' message
...
Fixes #609724 .
2010-02-15 00:45:51 +00:00
Wim Taymans
55b5e2e3f3
pulsesink: avoid segfault when shutting down
...
when we are shutting down, we might still receive state updates from pulseaudio
but since we are unparented we should not do anything with the NULL parent
anymore.
2010-02-12 13:53:57 +01:00