DISTRHO Plugin Framework
Sleep.hpp
1 /*
2  * DISTRHO Plugin Framework (DPF)
3  * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com>
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any purpose with
6  * or without fee is hereby granted, provided that the above copyright notice and this
7  * permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
10  * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
11  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
12  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
13  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef DISTRHO_SLEEP_HPP_INCLUDED
18 #define DISTRHO_SLEEP_HPP_INCLUDED
19 
20 #include "../DistrhoUtils.hpp"
21 
22 #ifdef DISTRHO_OS_WINDOWS
23 # include <winsock2.h>
24 # include <windows.h>
25 #else
26 # include <unistd.h>
27 #endif
28 
29 // -----------------------------------------------------------------------
30 // d_*sleep
31 
32 /*
33  * Sleep for 'secs' seconds.
34  */
35 static inline
36 void d_sleep(const uint secs) noexcept
37 {
38  DISTRHO_SAFE_ASSERT_RETURN(secs > 0,);
39 
40  try {
41 #ifdef DISTRHO_OS_WINDOWS
42  ::Sleep(secs * 1000);
43 #else
44  ::sleep(secs);
45 #endif
46  } DISTRHO_SAFE_EXCEPTION("d_sleep");
47 }
48 
49 /*
50  * Sleep for 'msecs' milliseconds.
51  */
52 static inline
53 void d_msleep(const uint msecs) noexcept
54 {
55  DISTRHO_SAFE_ASSERT_RETURN(msecs > 0,);
56 
57  try {
58 #ifdef DISTRHO_OS_WINDOWS
59  ::Sleep(msecs);
60 #else
61  ::usleep(msecs * 1000);
62 #endif
63  } DISTRHO_SAFE_EXCEPTION("d_msleep");
64 }
65 
66 // -----------------------------------------------------------------------
67 
68 #endif // DISTRHO_SLEEP_HPP_INCLUDED