Phonon::Path et Phonon::Effect continuent de fonctionner même s'ils sont détruits

StackOverflow https://stackoverflow.com/questions/9483206

  •  13-11-2019
  •  | 
  •  

Question

Considérez le code suivant.

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...";
}

Après le retour du constructeur, path et effects va être détruit.J'ai remarqué que le media continue de jouer même avec l'effet appliqué (effects[2]).

Je pense que j'ai raté quelque chose.Même si path et effects sont détruits, comment media continuer à jouer ?

Était-ce utile?

La solution

Comme le Chemin ::~Documentation du chemin dit:

Détruit cette référence au Chemin.Si le chemin était valide, la connexion n'est pas interrompue car les MediaNodes source et récepteur conservent toujours une référence au chemin.

Cela signifie que les chemins ressemblent plus à des poignées qu'à suivre les principes RAII.Vous devez appeler explicitement déconnecter() pour détruire la connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top