diff --git a/QtScrcpy/server/devicesocket.cpp b/QtScrcpy/server/devicesocket.cpp index debe994..ebc3518 100644 --- a/QtScrcpy/server/devicesocket.cpp +++ b/QtScrcpy/server/devicesocket.cpp @@ -18,6 +18,9 @@ DeviceSocket::~DeviceSocket() qint32 DeviceSocket::recvData(quint8 *buf, qint32 bufSize) { + if (m_quit) { + return 0; + } QMutexLocker locker(&m_mutex); m_buffer = buf; @@ -63,6 +66,7 @@ void DeviceSocket::onReadyRead() void DeviceSocket::quitNotify() { + m_quit = true; QMutexLocker locker(&m_mutex); if (m_buffer) { m_buffer = Q_NULLPTR; diff --git a/QtScrcpy/server/devicesocket.h b/QtScrcpy/server/devicesocket.h index bb83d36..87dcd2d 100644 --- a/QtScrcpy/server/devicesocket.h +++ b/QtScrcpy/server/devicesocket.h @@ -18,10 +18,12 @@ public: protected: bool event(QEvent *event); -protected slots: - void onReadyRead(); +public slots: void quitNotify(); +protected slots: + void onReadyRead(); + private: QMutex m_mutex; QWaitCondition m_recvDataCond; @@ -29,6 +31,7 @@ private: quint8* m_buffer = Q_NULLPTR; qint32 m_bufferSize = 0; qint32 m_dataSize = 0; + bool m_quit = false; }; #endif // DEVICESOCKET_H