diff --git a/src/plugins/position/serialnmea/qiopipe.cpp b/src/plugins/position/serialnmea/qiopipe.cpp index ce908d4d..2530ad58 100644 --- a/src/plugins/position/serialnmea/qiopipe.cpp +++ b/src/plugins/position/serialnmea/qiopipe.cpp @@ -50,8 +50,15 @@ QT_BEGIN_NAMESPACE QIOPipePrivate::QIOPipePrivate(QIODevice *iodevice, bool proxying) : m_proxying(proxying), source(iodevice) { - const QIOPipe *parentPipe = qobject_cast(iodevice); - if (parentPipe && parentPipe->d_func()->m_proxying) // with proxying parent, +} + +QIOPipePrivate::~QIOPipePrivate() +{ +} + +void QIOPipePrivate::initialize() +{ + if (!m_proxying) // with proxying parent, return; // don't do anything // read available data, does not emit. @@ -60,10 +67,6 @@ QIOPipePrivate::QIOPipePrivate(QIODevice *iodevice, bool proxying) QObjectPrivate::connect(source, &QIODevice::readyRead, this, &QIOPipePrivate::_q_onReadyRead); } -QIOPipePrivate::~QIOPipePrivate() -{ -} - bool QIOPipePrivate::readAvailableData() { if (!source) return false; @@ -130,6 +133,7 @@ void QIOPipePrivate::removeChildPipe(QIOPipe *childPipe) QIOPipe::QIOPipe(QIODevice *parent, Mode mode) : QIODevice(*new QIOPipePrivate(parent, mode == ProxyPipe), parent) { + this->d_func()->initialize(); if (!parent->isOpen() && !parent->open(QIODevice::ReadOnly)) { qWarning() << "QIOPipe: Failed to open " << parent; return; diff --git a/src/plugins/position/serialnmea/qiopipe_p.h b/src/plugins/position/serialnmea/qiopipe_p.h index 25758fcb..472ab102 100644 --- a/src/plugins/position/serialnmea/qiopipe_p.h +++ b/src/plugins/position/serialnmea/qiopipe_p.h @@ -95,6 +95,7 @@ public: explicit QIOPipePrivate(QIODevice *iodevice, bool proxying); ~QIOPipePrivate() override; + void initialize(); bool readAvailableData(); void pumpData(const QByteArray &ba); void pushData(const QByteArray &ba);