1

フォノン ライブラリの最近のソフトウェア アップデートの後、私が作成したメディア再生アプリケーションがトラックをループできなくなっていることに気付きました。問題のコードは以下です。最初のトラックが設定され、完成に近づくと再び再生されるように設定されます。

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"

Google で簡単に検索しても、このメッセージについてはあまりわかりません。プライベート変数(アクセスできない)のチェックが追加されたようです(ファイルの差分

フォノンで新しいバグを発見したのか、それともエンキューメソッドを間違って使用しているのか、誰かが知っていますか?

編集: 上記のコードは約 1/2 の時間しか失敗しません。非常に混乱。現在実行中の phonon-gstreamer 4.6.3

4

1 に答える 1

1

この回避策で解決:

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();
}
于 2013-02-08T19:49:42.717 に答える