确保DeviceSocket subThreadRecvData不在主线程调用

This commit is contained in:
Barry 2018-11-22 23:08:09 +08:00
parent be6a2d5c18
commit d95a1fb5d7
3 changed files with 8 additions and 7 deletions

View file

@ -57,7 +57,7 @@ qint32 Decoder::recvData(quint8* buf, qint32 bufSize)
return 0;
}
if (m_deviceSocket) {
qint32 len = m_deviceSocket->recvData(buf, bufSize);
qint32 len = m_deviceSocket->subThreadRecvData(buf, bufSize);
if (len == -1) {
return AVERROR(errno);
}

View file

@ -1,4 +1,5 @@
#include <QCoreApplication>
#include <QThread>
#include <QDebug>
#include "qscrcpyevent.h"
@ -16,8 +17,10 @@ DeviceSocket::~DeviceSocket()
quitNotify();
}
qint32 DeviceSocket::recvData(quint8 *buf, qint32 bufSize)
qint32 DeviceSocket::subThreadRecvData(quint8 *buf, qint32 bufSize)
{
// this function cant call in main thread
Q_ASSERT(QCoreApplication::instance()->thread() != QThread::currentThread());
if (m_quit) {
return 0;
}

View file

@ -13,16 +13,14 @@ public:
explicit DeviceSocket(QObject *parent = nullptr);
virtual ~DeviceSocket();
qint32 recvData(quint8* buf, qint32 bufSize);
qint32 subThreadRecvData(quint8* buf, qint32 bufSize);
protected:
bool event(QEvent *event);
public slots:
void quitNotify();
protected slots:
void onReadyRead();
void onReadyRead();
void quitNotify();
private:
QMutex m_mutex;