Phonon backend plugin development

Harry Liebel hliebel at gmail.com
Wed Jul 22 11:32:31 BST 2009


Hi.

Yes, I am quite new to QT. I have done some small things with QTDeigner in
the past, but that is about it.

I have tried to get a backtrace using gdb, but many of the libraries I am
trying to use do not have debug symbols. So I mostly get unresolved symbols
in the trace. I unfortunately cannot rebuild the libraries myself to add
these.
Is there a way in QT to get a stacktrace? Something I can put just after the
thread Check (Where the ASSERT happens)?

Thanks,
Harry

2009/7/22 Thiago Macieira <thiago at kde.org>

> Harry Liebel wrote:
> >Hi.
> >
> >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 problems.
> >
> >I am more of a C driver person so I may be making bad assumptions and
> >obvious mistakes :-)
>
> Hi Harry
>
> Does this mean you're rather unfamiliar with Qt?
>
> >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"
> >---
>
> Look at the backtrace when this failed assertion happens to find out what
> caused it.
>
> I doubt you're using sendEvent directly, so it's more likely you're
> accessing a QObject outside its creation thread. Please understand that
> any and every QObject is attached to the thread it is created in (unless
> you move it), and that's the only thread you can call Qt functions in.
>
> More importantly, objects derived from QWidget can only be created in the
> GUI thread.
>
> >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?
>
> Sending from threads not created with QThread should not be a problem.
>
> Can you post your backtrace?
> --
>  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
>    PGP/GPG: 0x6EF45358; fingerprint:
>    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
>
> _______________________________________________
> kde-multimedia mailing list
> kde-multimedia at kde.org
> https://mail.kde.org/mailman/listinfo/kde-multimedia
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-multimedia/attachments/20090722/106f87a7/attachment.htm>
-------------- next part --------------
_______________________________________________
kde-multimedia mailing list
kde-multimedia at kde.org
https://mail.kde.org/mailman/listinfo/kde-multimedia


More information about the kde-multimedia mailing list