mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 06:07:37 +02:00
Make QNR_IODeviceStream thread-safe
This commit is contained in:
@@ -74,15 +74,13 @@ QNR_IODeviceStream::QNR_IODeviceStream( const QSharedPointer<QNetworkReply>& rep
|
|||||||
|
|
||||||
QNR_IODeviceStream::~QNR_IODeviceStream()
|
QNR_IODeviceStream::~QNR_IODeviceStream()
|
||||||
{
|
{
|
||||||
tDebug() << Q_FUNC_INFO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
QNR_IODeviceStream::seekStream( qint64 offset )
|
QNR_IODeviceStream::seekStream( qint64 offset )
|
||||||
{
|
{
|
||||||
tDebug() << Q_FUNC_INFO;
|
QMutexLocker locker( &m_mutex );
|
||||||
|
|
||||||
m_pos = offset;
|
m_pos = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,6 +88,7 @@ QNR_IODeviceStream::seekStream( qint64 offset )
|
|||||||
qint64
|
qint64
|
||||||
QNR_IODeviceStream::needData ( void** buffer )
|
QNR_IODeviceStream::needData ( void** buffer )
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker( &m_mutex );
|
||||||
QByteArray data = m_data.mid( m_pos, BLOCK_SIZE );
|
QByteArray data = m_data.mid( m_pos, BLOCK_SIZE );
|
||||||
m_pos += data.size();
|
m_pos += data.size();
|
||||||
if ( ( data.size() == 0 ) && m_networkReply->atEnd() && m_networkReply->isFinished() )
|
if ( ( data.size() == 0 ) && m_networkReply->atEnd() && m_networkReply->isFinished() )
|
||||||
@@ -101,13 +100,13 @@ QNR_IODeviceStream::needData ( void** buffer )
|
|||||||
|
|
||||||
*buffer = new char[data.size()];
|
*buffer = new char[data.size()];
|
||||||
memcpy(*buffer, data.data(), data.size());
|
memcpy(*buffer, data.data(), data.size());
|
||||||
// tDebug() << Q_FUNC_INFO << " Returning buffer with size " << data.size();
|
|
||||||
return data.size();
|
return data.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
QNR_IODeviceStream::readyRead()
|
QNR_IODeviceStream::readyRead()
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker( &m_mutex );
|
||||||
m_data += m_networkReply->readAll();
|
m_data += m_networkReply->readAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,6 +26,7 @@
|
|||||||
#include "DllMacro.h"
|
#include "DllMacro.h"
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QMutex>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QSharedPointer>
|
#include <QSharedPointer>
|
||||||
|
|
||||||
@@ -52,6 +53,7 @@ private slots:
|
|||||||
void readyRead();
|
void readyRead();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QMutex m_mutex;
|
||||||
QByteArray m_data;
|
QByteArray m_data;
|
||||||
QSharedPointer<QNetworkReply> m_networkReply;
|
QSharedPointer<QNetworkReply> m_networkReply;
|
||||||
QTimer* m_timer;
|
QTimer* m_timer;
|
||||||
|
Reference in New Issue
Block a user