1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

refactor: Add deviceThread

This commit is contained in:
Diadlo 2017-06-26 13:58:22 +03:00
parent 60dc4b34a4
commit 50eaea8f8e
No known key found for this signature in database
GPG Key ID: 5AF9F2E29107C727
2 changed files with 13 additions and 1 deletions

View File

@ -90,7 +90,8 @@ extern "C" {
CameraSource* CameraSource::instance{nullptr};
CameraSource::CameraSource()
: deviceName{"none"}
: deviceThread{new QThread}
, deviceName{"none"}
, device{nullptr}
, mode(VideoMode())
// clang-format off
@ -102,6 +103,10 @@ CameraSource::CameraSource()
, _isNone{true}
, subscriptions{0}
{
deviceThread->setObjectName("Device thread");
deviceThread->start();
moveToThread(deviceThread);
subscriptions = 0;
av_register_all();
avdevice_register_all();
@ -204,6 +209,10 @@ CameraSource::~CameraSource()
// Synchronize with our stream thread
while (streamFuture.isRunning())
QThread::yieldCurrentThread();
deviceThread->exit(0);
deviceThread->wait();
delete deviceThread;
}
void CameraSource::subscribe()

View File

@ -60,6 +60,8 @@ private:
private:
QFuture<void> streamFuture;
QThread* deviceThread;
QString deviceName;
CameraDevice* device;
VideoMode mode;
@ -67,6 +69,7 @@ private:
// TODO: Remove when ffmpeg version will be bumped to the 3.1.0
AVCodecContext* cctxOrig;
int videoStreamIndex;
QReadWriteLock streamMutex;
std::atomic_bool _isNone;