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 # ifndef NOMINMAX
24 # define NOMINMAX
25 # endif
26 # include <winsock2.h>
27 # include <windows.h>
28 #else
29 # include <unistd.h>
30 #endif
31 
32 // -----------------------------------------------------------------------
33 // d_*sleep
34 
35 /*
36  * Sleep for 'secs' seconds.
37  */
38 static inline
39 void d_sleep(const uint secs) noexcept
40 {
41  DISTRHO_SAFE_ASSERT_RETURN(secs > 0,);
42 
43  try {
44 #ifdef DISTRHO_OS_WINDOWS
45  ::Sleep(secs * 1000);
46 #else
47  ::sleep(secs);
48 #endif
49  } DISTRHO_SAFE_EXCEPTION("d_sleep");
50 }
51 
52 /*
53  * Sleep for 'msecs' milliseconds.
54  */
55 static inline
56 void d_msleep(const uint msecs) noexcept
57 {
58  DISTRHO_SAFE_ASSERT_RETURN(msecs > 0,);
59 
60  try {
61 #ifdef DISTRHO_OS_WINDOWS
62  ::Sleep(msecs);
63 #else
64  ::usleep(msecs * 1000);
65 #endif
66  } DISTRHO_SAFE_EXCEPTION("d_msleep");
67 }
68 
69 // -----------------------------------------------------------------------
70 
71 #endif // DISTRHO_SLEEP_HPP_INCLUDED