Phonon backend plugin development

Harry Liebel hliebel at
Tue Jul 21 22:01:10 BST 2009


I am trying to create a new backend. I have a set of multimedia libraries
that I am trying to wrap up in a plugin. I have had some success and some

I am more of a C driver person so I may be making bad assumptions and
obvious mistakes :-)

I am using QT embedded 4.5.2 with gstreamer plugin as a base. I removed most
of the gstreamer stuff and I am only trying to get minimum functionality
going at the moment (i.e. play something fullscreen without any seek or
volume control etc.).  I am using the demo mediaplayer app to test my stuff.
I have got some fullscreen video playing, but it crashes shortly after. I
have tried to use the Xine and Mplayer phonon plugins as a guide, but I
don't fully understand everything.

What happens:
I can start the mediaplayer app and select a media file to play. It starts
playing full screen. If I move
the mouse the app crashes and I get :

ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to
objects owned by a different thread. Current thread 84f2ee0. Receiver '' (of
type 'QSocketNotifier') was created in thread 805e6b8"

Currently I use the 'setsource' call to call the library
init(<path-to-file>). When I do not call init() the mediaplayer app does not
crash. It looks like the init() spawns a seperate thread in the background.
I have tried to put the library init() in a Qthread, but it crashes in the
same way.

I have read that QT does not like to send/receive events from threads that
are not under its control. This I can understand. Is there a easy way to
wrap up a 'library thread' so QT does not try to send/receive events? Do I
need to wrap the library up in a Qprocess?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>
-------------- next part --------------
kde-multimedia mailing list
kde-multimedia at

More information about the kde-multimedia mailing list