Проблема состоит в следующем - необходимо сделать производный класс от QIODevice для использования его в Phonon.
Всё бы хорошо, но столкнулся со странной проблемой - не удаётся переопределить в производном классе метод isOpen().
Объявление:
class netSource : public QIODevice
{
Q_OBJECT
public:
explicit netSource(QObject *parent = 0);
bool isOpen() const;
....
}
Определение:
bool netSource::isOpen() const
{
qDebug() << "SRC: is Open";
return true;
}
Пример кода:
netSource *src = new netSource(this);
src->isOpen(); // Работает!
Phonon::MediaObject *mediaObject = new Phonon::MediaObject(this);
mediaObject->setCurrentSource(Phonon::MediaSource(src)); // Падение! ASSERT: "ioDevice->isOpen()" in file /builddir/build/BUILD/phonon-4.4.3/phonon/iodevicestream.cpp, line 43
Там, где срабатывает ASSERT моя функция НЕ вызывается, в первом случае вывод в дебаг есть, а во втором нет.
Что за фигня такая странная? Исходники проекта прикрепил.