件名が言うように、私は非 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
(ちなみに、WindowsではQt 4.6.2です)-すべて問題ないようです。
が指すオブジェクトdata
は GUI スレッドに存在します。これを再確認しました。
この問題をデバッグするにはどうすればよいですか? または、より良いのは、それを完全に回避することでしょうか?