Phonon::Path和Phonon::Effect即使被破坏也会继续工作



请考虑以下代码。

class MainWindow
{
    // ...
    Phonon::MediaObject media;
    Phonon::AudioOutput audio_output;
};
MainWindow::MainWindow() : audio_output(MusicCategory)
{
    //...
    QList<EffectDescription> effects =
                          BackendCapabilities::availableAudioEffects();
    media.setCurrentSource(MediaSource("../test.wma"));
    Path path = createPath(&media, &audio_output);
    Q_ASSERT(path.isValid());
    if (!effects.isEmpty())
    {
        path.insertEffect(effects[2]);
    }
    media.play();
    qDebug() << "Playing...";
}

构造函数返回后,patheffects将被销毁。我注意到,即使应用了效果(effects[2]),media也会继续播放。

我想我错过了什么。即使patheffects被摧毁,media如何继续播放?

如路径::~路径文档所示:

销毁此对路径的引用。如果路径有效,则连接不会断开,因为源和接收器MediaNodes仍然保留对路径的引用。

这意味着路径更像是句柄,而不是遵循RAII原则。您必须明确地调用disconnect()来破坏连接。

相关内容

  • 没有找到相关文章

最新更新