mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-24 14:36:15 +02:00
portable sleep function
This commit is contained in:
parent
17879618c7
commit
951548f412
12 changed files with 35 additions and 19 deletions
|
@ -22,7 +22,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "common/snapException.h"
|
#include "common/snapException.h"
|
||||||
#include "common/log.h"
|
#include "common/log.h"
|
||||||
|
|
|
@ -184,7 +184,7 @@ void Controller::worker()
|
||||||
if (reply)
|
if (reply)
|
||||||
{
|
{
|
||||||
TimeProvider::getInstance().setDiff(reply->latency, reply->received - reply->sent);
|
TimeProvider::getInstance().setDiff(reply->latency, reply->received - reply->sent);
|
||||||
usleep(100);
|
chronos::usleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logO << "diff to server [ms]: " << (float)TimeProvider::getInstance().getDiffToServer<chronos::usec>().count() / 1000.f << "\n";
|
logO << "diff to server [ms]: " << (float)TimeProvider::getInstance().getDiffToServer<chronos::usec>().count() / 1000.f << "\n";
|
||||||
|
@ -193,7 +193,7 @@ void Controller::worker()
|
||||||
{
|
{
|
||||||
for (size_t n=0; n<10 && active_; ++n)
|
for (size_t n=0; n<10 && active_; ++n)
|
||||||
{
|
{
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
if (asyncException_)
|
if (asyncException_)
|
||||||
throw AsyncSnapException(exception_);
|
throw AsyncSnapException(exception_);
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ void Controller::worker()
|
||||||
stream_.reset();
|
stream_.reset();
|
||||||
decoder_.reset();
|
decoder_.reset();
|
||||||
for (size_t n=0; (n<10) && active_; ++n)
|
for (size_t n=0; (n<10) && active_; ++n)
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logD << "Thread stopped\n";
|
logD << "Thread stopped\n";
|
||||||
|
|
|
@ -211,7 +211,7 @@ void AlsaPlayer::worker()
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
logE << "Exception in initAlsa: " << e.what() << endl;
|
logE << "Exception in initAlsa: " << e.what() << endl;
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
***/
|
***/
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include "coreAudioPlayer.h"
|
#include "coreAudioPlayer.h"
|
||||||
|
|
||||||
#define NUM_BUFFERS 2
|
#define NUM_BUFFERS 2
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
***/
|
***/
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -122,7 +121,7 @@ void OpenslPlayer::playerCallback(SLAndroidSimpleBufferQueueItf bq)
|
||||||
{
|
{
|
||||||
SLresult result = (*bq)->Enqueue(bq, buffer[curBuffer], buff_size);
|
SLresult result = (*bq)->Enqueue(bq, buffer[curBuffer], buff_size);
|
||||||
if (result == SL_RESULT_BUFFER_INSUFFICIENT)
|
if (result == SL_RESULT_BUFFER_INSUFFICIENT)
|
||||||
usleep(1000);
|
chronos::sleep(1);
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,7 +191,7 @@ int main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
logS(kLogErr) << "Exception: " << e.what() << std::endl;
|
logS(kLogErr) << "Exception: " << e.what() << std::endl;
|
||||||
}
|
}
|
||||||
usleep(500*1000);
|
chronos::sleep(500);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -202,7 +202,7 @@ int main (int argc, char **argv)
|
||||||
logO << "Latency: " << latency << "\n";
|
logO << "Latency: " << latency << "\n";
|
||||||
controller->start(pcmDevice, host, port, latency);
|
controller->start(pcmDevice, host, port, latency);
|
||||||
while(!g_terminated)
|
while(!g_terminated)
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
controller->stop();
|
controller->stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define TIME_DEFS_H
|
#define TIME_DEFS_H
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <thread>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#ifdef MACOS
|
#ifdef MACOS
|
||||||
#include <mach/clock.h>
|
#include <mach/clock.h>
|
||||||
|
@ -78,6 +79,27 @@ namespace chronos
|
||||||
{
|
{
|
||||||
return std::chrono::duration_cast<ToDuration>(d).count();
|
return std::chrono::duration_cast<ToDuration>(d).count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// some sleep functions. Just for convenience.
|
||||||
|
template< class Rep, class Period >
|
||||||
|
inline void sleep(const std::chrono::duration<Rep, Period>& sleep_duration)
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for(sleep_duration);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void sleep(const int32_t& milliseconds)
|
||||||
|
{
|
||||||
|
if (milliseconds < 0)
|
||||||
|
return;
|
||||||
|
sleep(msec(milliseconds));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void usleep(const int32_t& microseconds)
|
||||||
|
{
|
||||||
|
if (microseconds < 0)
|
||||||
|
return;
|
||||||
|
sleep(usec(microseconds));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ int main(int argc, char* argv[])
|
||||||
std::thread t(func, &io_service);
|
std::thread t(func, &io_service);
|
||||||
|
|
||||||
while (!g_terminated)
|
while (!g_terminated)
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
|
|
||||||
io_service.stop();
|
io_service.stop();
|
||||||
t.join();
|
t.join();
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "fileStream.h"
|
#include "fileStream.h"
|
||||||
#include "encoder/encoderFactory.h"
|
#include "encoder/encoderFactory.h"
|
||||||
|
@ -92,7 +91,7 @@ void FileStream::worker()
|
||||||
if (nextTick >= currentTick)
|
if (nextTick >= currentTick)
|
||||||
{
|
{
|
||||||
// logO << "sleep: " << nextTick - currentTick << "\n";
|
// logO << "sleep: " << nextTick - currentTick << "\n";
|
||||||
usleep((nextTick - currentTick) * 1000);
|
chronos::sleep(nextTick - currentTick);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "encoder/encoderFactory.h"
|
#include "encoder/encoderFactory.h"
|
||||||
#include "common/snapException.h"
|
#include "common/snapException.h"
|
||||||
|
|
|
@ -90,7 +90,7 @@ void PipeStream::worker()
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
{
|
{
|
||||||
setState(kIdle);
|
setState(kIdle);
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
}
|
}
|
||||||
else if (count == 0)
|
else if (count == 0)
|
||||||
throw SnapException("end of file");
|
throw SnapException("end of file");
|
||||||
|
@ -108,7 +108,7 @@ void PipeStream::worker()
|
||||||
{
|
{
|
||||||
// logO << "sleep: " << nextTick - currentTick << "\n";
|
// logO << "sleep: " << nextTick - currentTick << "\n";
|
||||||
setState(kPlaying);
|
setState(kPlaying);
|
||||||
usleep((nextTick - currentTick) * 1000);
|
chronos::sleep(nextTick - currentTick);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -122,7 +122,7 @@ void PipeStream::worker()
|
||||||
catch(const std::exception& e)
|
catch(const std::exception& e)
|
||||||
{
|
{
|
||||||
logE << "Exception: " << e.what() << std::endl;
|
logE << "Exception: " << e.what() << std::endl;
|
||||||
usleep(100*1000);
|
chronos::sleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
***/
|
***/
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "processStream.h"
|
#include "processStream.h"
|
||||||
#include "common/log.h"
|
#include "common/log.h"
|
||||||
|
@ -67,7 +66,7 @@ void ProcessStream::worker()
|
||||||
|
|
||||||
if (nextTick >= currentTick)
|
if (nextTick >= currentTick)
|
||||||
{
|
{
|
||||||
usleep((nextTick - currentTick) * 1000);
|
chronos::sleep(nextTick - currentTick);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue