Как говорит субъект, я публикую события из не-GUI-потока (точнее, из некоторого потока GStreamer). Код выглядит так:
GstBusSyncReply on_bus_message(GstBus* bus, GstMessage* message, gpointer data)
{
bool ret = QMetaObject::invokeMethod(static_cast<QObject*>(data), "stateChanged", Qt::QueuedConnection);
Q_ASSERT(ret);
return GST_BUS_PASS;
}
Проблема в том, что stateChanged
(неважно, слот это или сигнал) не вызывается. Я вошел в QMetaObject::invokeMethod
с отладчиком, следил за ним до тех пор, пока он не вызвал PostMessage
(это, кстати, Qt 4.6.2 в Windows) - все вроде бы нормально.
Объект, на который указывает data
, живет в потоке GUI, я дважды проверил это.
Как я могу отладить эту проблему? Или, может быть, лучше вообще обойти это?