On Thu, 20 May 2010, Charles Fleche wrote:
well (e.g. if
you write LV2 plugins based on Qt, as I have, you may
uncover some strange bugs).
Really ? What happened ?
When I released the Composite Sampler, I had to solve two
tricky bugs:
1. zynjacku's UI would freeze when loading it.
Cause: Glib event loop initialization and PyGtk.
Fix: zynjacku now initializes the Glib event
loop, but this comes with some other
undesirable side-effects.
2. Ingen would crash at exit if you loaded the
Composite plugin, and then unloaded it.
Cause: When Qt initialized thread-local storage,
it made an assumption that QtCore would
only be unloaded at application exit.
Fix: Qt's trunk has a fix to clean up TLS
when the library is unloaded. I don't
think it was backported to older
release branches.[1]
Anyway, Qt is a large framework for cross-platform
application development (and very good at that). So, when
you use its core library (QString, QThread, etc.) in new and
non-standard ways (LV2 plugins) you're liable to find bugs
that violate the assumption: "This is a Qt application."
:-)
hth,
gabriel
[1]
http://bugreports.qt.nokia.com/browse/QTBUG-9436