Phonon中的排队不再工作



在最近对声子库进行软件更新后,我注意到我编写的媒体播放应用程序不再能够循环跟踪。有问题的代码如下。第一首曲目已经设置好,一旦接近完成,它将再次演奏。

void Alarm::Start(bool useCustom)
{
    if(useCustom)
    {
        media->setCurrentSource(Phonon::MediaSource(this->_CustPath));
        this->_UsingCustomPath=true;
    }else{
     FileIO::ExtractAudio();
     media->setCurrentSource(Phonon::MediaSource(this->_DefaultPath));
     this->_UsingCustomPath=false;
    }
    media->play();
    connect(media,SIGNAL(aboutToFinish()),this,SLOT(RepeatAllTheThings()));
    this->_isPlaying=true;
}
void Alarm::RepeatAllTheThings()
{
    if(this->_UsingCustomPath)
    {
       media->enqueue(this->_CustPath);
    }else{
        media->enqueue(this->_DefaultPath);
    }
}

在运行了几次调试器之后,我注意到了以下消息:

"Ignoring source as no aboutToFinish handling is in progress"

在谷歌上快速搜索并不能说明这条消息。这看起来像是添加了一个私人变量(我无权访问)的检查(文件的差异)

有人知道我是否刚刚在声子中发现了一个新的错误,或者我是如何错误地使用入队方法的吗?

编辑:上面的代码只有大约1/2的时间失败。非常困惑。当前运行的声子gstreamer 4.6.3

通过此解决方案:

media->play();
connect(media,SIGNAL(finished()),this,SLOT(RepeatAllTheThings()));

void Alarm::RepeatAllTheThings()
{
    if(this->_UsingCustomPath)
    {
        media->setCurrentSource(Phonon::MediaSource(this->_CustPath));
    }else{
        media->setCurrentSource(Phonon::MediaSource(this->_DefaultPath));
    }
    media->play();
}

相关内容

  • 没有找到相关文章

最新更新