From 2f0eaa686e3f510f02238ac0d6526da09671dd57 Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Wed, 17 Feb 2016 17:31:32 -0500 Subject: [PATCH] alsa: fix possible threading issue An std::thread, ctor constructer, must be the last members in a class to be sure that all previous members are initialized in class ctor before to run the thread itself. This may fixes random issues seen with others member accesses. Change-Id: I7ceb0cf522236411f4a2faa34ff4f32eae0e4c13 Tuleap: #171 --- src/media/audio/alsa/alsalayer.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/media/audio/alsa/alsalayer.cpp b/src/media/audio/alsa/alsalayer.cpp index 2e73ff61dd..3f5ba8cfdf 100644 --- a/src/media/audio/alsa/alsalayer.cpp +++ b/src/media/audio/alsa/alsalayer.cpp @@ -36,20 +36,19 @@ namespace ring { class AlsaThread { - public: - AlsaThread(AlsaLayer *alsa); - ~AlsaThread(); - void initAudioLayer(); - void start(); - bool isRunning() const; - - private: - void run(); - - NON_COPYABLE(AlsaThread); - std::thread thread_; - AlsaLayer* alsa_; - std::atomic<bool> running_; +public: + AlsaThread(AlsaLayer *alsa); + ~AlsaThread(); + void initAudioLayer(); + void start(); + bool isRunning() const; + +private: + NON_COPYABLE(AlsaThread); + void run(); + AlsaLayer* alsa_; + std::atomic<bool> running_; + std::thread thread_; }; AlsaThread::AlsaThread(AlsaLayer *alsa) -- GitLab