[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [phonon-backend-gstreamer] [Bug 311193] Switching equalizer presets from/to Inactive resets song pla
From:       Daniel Vrátil <dvratil () redhat ! com>
Date:       2015-02-03 15:38:03
Message-ID: bug-311193-17878-KQoprjU8sa () http ! bugs ! kde ! org/
[Download RAW message or body]

https://bugs.kde.org/show_bug.cgi?id=311193

--- Comment #20 from Daniel Vrátil <dvratil@redhat.com> ---
I agree that workarounding this in Amarok is not the right way to go, but I
don't see a simple way of fixing this in phonon-gstreamer either.

The phonon-gst backend intentionally resets the pipeline state before
enabling/disabling the equalizer effect. According to a comment in the code it
does so to prevent a deadlock in GST. Removing the line makes the backend not
reset the playback (obviously), however after toggling the equalizer on and off
for a while I was able to reproduce the deadlock.

The problem seems to be that while we are re-plumbing the GST pipeline from the
main thread, seeking executed in another thread from our Pipeline (in reaction
to a GST event) leads to an internal deadlock in GST. We could obviously
protect the code by having a global mutex in phonon-gst that would prevent us
from interfering with GST from multiple threads at once, but it would probably
impact the performance and I'm pretty much sure we would just move the
deadlocks from someone else's code into ours.

We can't do save&restore in the backend either, as the backend does not see the
"big picture" of what is really happening.

I'll try to dig a bit deeper, but no promises ;)

-- 
You are receiving this mail because:
You are watching all bug changes.=
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic