Added lambda function for mutex unlocking

pull/91/head
Marcin Kondej 2019-10-02 13:51:22 +02:00
rodzic 679edbe773
commit 53164aa8c4
1 zmienionych plików z 6 dodań i 5 usunięć

Wyświetl plik

@ -466,22 +466,23 @@ void Transmitter::transmitThread()
uint64_t start = current;
bool locked = samplesMutex.try_lock();
while ((!locked || !samples.size()) && transmitting) {
auto unlock = [&]() {
if (locked) {
samplesMutex.unlock();
}
};
while ((!locked || !samples.size()) && transmitting) {
unlock();
std::this_thread::sleep_for(std::chrono::microseconds(1));
current = *(reinterpret_cast<volatile uint64_t *>(&timer->low));
locked = samplesMutex.try_lock();
}
if (!transmitting) {
if (locked) {
samplesMutex.unlock();
}
unlock();
break;
}
std::vector<Sample> loaded(std::move(samples));
samplesMutex.unlock();
unlock();
sampleOffset = (current - playbackStart) * sampleRate / 1000000;
uint32_t offset = (current - start) * sampleRate / 1000000;