Comme le sujet le dit, je poste des événements à partir d'un thread non-GUI (dans un thread GStreamer, pour être précis). Le code ressemble à cela :
GstBusSyncReply on_bus_message(GstBus* bus, GstMessage* message, gpointer data)
{
bool ret = QMetaObject::invokeMethod(static_cast(data), "stateChanged", Qt::QueuedConnection);
Q_ASSERT(ret);
return GST_BUS_PASS;
}
Le problème est que stateChanged
(peu importe s'il s'agit d'un slot ou d'un signal) n'est pas appelé. J'ai suivi QMetaObject::invokeMethod
avec un débogueur, je l'ai suivi jusqu'à ce qu'il appelle PostMessage
(c'est Qt 4.6.2 sur Windows, au fait) - tout semblait être correct.
L'objet pointé par data
vit dans le thread GUI, j'ai double-vérifié cela.
Comment puis-je déboguer ce problème ? Ou, mieux encore, peut-être le contourner complètement ?