merge with master and fix 4 conflicts by hand
[ardour.git] / libs / backends / wavesaudio / portmidi / porttime.h
1 /* porttime.h -- portable interface to millisecond timer */
2
3 /* CHANGE LOG FOR PORTTIME
4   10-Jun-03 Mark Nelson & RBD
5     boost priority of timer thread in ptlinux.c implementation
6  */
7
8 /* Should there be a way to choose the source of time here? */
9
10 #ifdef WIN32
11 #ifndef INT32_DEFINED
12 // rather than having users install a special .h file for windows, 
13 // just put the required definitions inline here. portmidi.h uses
14 // these too, so the definitions are (unfortunately) duplicated there
15 typedef int int32_t;
16 typedef unsigned int uint32_t;
17 #define INT32_DEFINED
18 #endif
19 #else
20 #include <stdint.h> // needed for int32_t
21 #endif
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 #ifndef PMEXPORT
28 #ifdef _WINDLL
29 #define PMEXPORT __declspec(dllexport)
30 #else
31 #define PMEXPORT 
32 #endif
33 #endif
34
35 typedef enum {
36     ptNoError = 0,         /* success */
37     ptHostError = -10000,  /* a system-specific error occurred */
38     ptAlreadyStarted,      /* cannot start timer because it is already started */
39     ptAlreadyStopped,      /* cannot stop timer because it is already stopped */
40     ptInsufficientMemory   /* memory could not be allocated */
41 } PtError;
42
43
44 typedef int32_t PtTimestamp;
45
46 typedef void (PtCallback)( PtTimestamp timestamp, void *userData );
47
48 /*
49     Pt_Start() starts a real-time service.
50
51     resolution is the timer resolution in ms. The time will advance every
52     resolution ms.
53
54     callback is a function pointer to be called every resolution ms.
55
56     userData is passed to callback as a parameter.
57
58     return value:
59     Upon success, returns ptNoError. See PtError for other values.
60 */
61 PMEXPORT PtError Pt_Start(int resolution, PtCallback *callback, void *userData);
62
63 /*
64     Pt_Stop() stops the timer.
65
66     return value:
67     Upon success, returns ptNoError. See PtError for other values.
68 */
69 PMEXPORT PtError Pt_Stop();
70
71 /*
72     Pt_Started() returns true iff the timer is running.
73 */
74 PMEXPORT int Pt_Started();
75
76 /* 
77     Pt_Time() returns the current time in ms.
78 */
79 PMEXPORT PtTimestamp Pt_Time();
80
81 /*
82     Pt_Sleep() pauses, allowing other threads to run.
83
84     duration is the length of the pause in ms. The true duration 
85     of the pause may be rounded to the nearest or next clock tick
86     as determined by resolution in Pt_Start().
87 */
88 PMEXPORT void Pt_Sleep(int32_t duration);
89
90 #ifdef __cplusplus
91 }
92 #endif