DISTRHO Plugin Framework
 All Classes Functions Variables Modules Pages
d_sleep.hpp
1 /*
2  * DISTRHO Plugin Framework (DPF)
3  * Copyright (C) 2012-2014 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 static inline
33 void d_sleep(const uint secs) noexcept
34 {
35  DISTRHO_SAFE_ASSERT_RETURN(secs > 0,);
36 
37  try {
38 #ifdef DISTRHO_OS_WINDOWS
39  ::Sleep(secs * 1000);
40 #else
41  ::sleep(secs);
42 #endif
43  } DISTRHO_SAFE_EXCEPTION("d_sleep");
44 }
45 
46 static inline
47 void d_msleep(const uint msecs) noexcept
48 {
49  DISTRHO_SAFE_ASSERT_RETURN(msecs > 0,);
50 
51  try {
52 #ifdef DISTRHO_OS_WINDOWS
53  ::Sleep(msecs);
54 #else
55  ::usleep(msecs * 1000);
56 #endif
57  } DISTRHO_SAFE_EXCEPTION("d_msleep");
58 }
59 
60 // -----------------------------------------------------------------------
61 
62 #endif // DISTRHO_SLEEP_HPP_INCLUDED