source: trunk/src/winmm/time.cpp@ 757

Last change on this file since 757 was 757, checked in by phaller, 26 years ago

Fix: minimum and maximum resolution supported

File size: 5.5 KB
Line 
1/* $Id: time.cpp,v 1.2 1999-08-31 15:39:21 phaller Exp $ */
2
3/*
4 * Timer MM apis
5 *
6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
7 * Copyright 1999 Patrick Haller (phaller@gmx.net)
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12
13
14/****************************************************************************
15 * Includes *
16 ****************************************************************************/
17
18#include <os2win.h>
19#include <odinwrap.h>
20#include <misc.h>
21
22#include "os2timer.h"
23#include "time.h"
24
25ODINDEBUGCHANNEL(WINMM-TIME)
26
27
28
29/*****************************************************************************
30 * Name : mmsystemGetVersion
31 * Purpose : determine version of MM system
32 * Parameters:
33 * Variables :
34 * Result :
35 * Remark :
36 * Status : UNTESTED STUB
37 *
38 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
39 *****************************************************************************/
40
41
42ODINFUNCTION0(UINT, mmsystemGetVersion)
43{
44 return 4;
45}
46
47
48/*****************************************************************************
49 * Name :
50 * Purpose :
51 * Parameters:
52 * Variables :
53 * Result :
54 * Remark :
55 * Status : UNTESTED STUB
56 *
57 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
58 *****************************************************************************/
59
60ODINFUNCTION2(MMRESULT, timeGetDevCaps,
61 LPTIMECAPS, ptc,
62 UINT, cbtc)
63{
64 dprintf(("WINMM:timeGetDevCaps Not really Implemented\n"));
65
66 ptc->wPeriodMin = OS2TIMER_RESOLUTION_MINIMUM;
67 ptc->wPeriodMax = OS2TIMER_RESOLUTION_MAXIMUM;
68
69 return TIMERR_NOERROR;
70}
71
72
73/*****************************************************************************
74 * Name :
75 * Purpose :
76 * Parameters:
77 * Variables :
78 * Result :
79 * Remark :
80 * Status : UNTESTED STUB
81 *
82 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
83 *****************************************************************************/
84
85ODINFUNCTION1(MMRESULT, timeBeginPeriod,
86 UINT, cMilliseconds)
87{
88 if (TRUE == OS2TimerResolution::enterResolutionScope(cMilliseconds))
89 return TIMERR_NOERROR;
90 else
91 return TIMERR_NOCANDO;
92}
93
94
95/*****************************************************************************
96 * Name :
97 * Purpose :
98 * Parameters:
99 * Variables :
100 * Result :
101 * Remark :
102 * Status : UNTESTED STUB
103 *
104 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
105 *****************************************************************************/
106
107ODINFUNCTION1(MMRESULT, timeEndPeriod,
108 UINT, cMilliseconds)
109{
110 if (TRUE == OS2TimerResolution::leaveResolutionScope(cMilliseconds))
111 return TIMERR_NOERROR;
112 else
113 {
114 dprintf(("WINMM: timeEndPeriod didn't match timeBeginPeriod.\n"));
115 return TIMERR_NOCANDO;
116 }
117}
118
119
120/*****************************************************************************
121 * Name :
122 * Purpose :
123 * Parameters:
124 * Variables :
125 * Result :
126 * Remark :
127 * Status : UNTESTED STUB
128 *
129 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
130 *****************************************************************************/
131
132ODINFUNCTION1(MMRESULT, timeKillEvent,
133 UINT, IDEvent)
134{
135 dprintf(("WINMM:timeKillEvent Not Implemented\n"));
136
137 // return OS2Timer::killEvent(UINT IDEvent)
138
139 delete((OS2Timer *)IDEvent);
140 return TIMERR_NOERROR;
141}
142
143
144/*****************************************************************************
145 * Name :
146 * Purpose :
147 * Parameters:
148 * Variables :
149 * Result :
150 * Remark :
151 * Status : UNTESTED STUB
152 *
153 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
154 *****************************************************************************/
155
156ODINFUNCTION5(MMRESULT, timeSetEvent,
157 UINT, wDelay,
158 UINT, wResolution,
159 LPTIMECALLBACK, lptc,
160 DWORD, dwUser,
161 UINT, fuEvent)
162{
163 OS2Timer *timer;
164
165 // check parameters
166 if ((wDelay < OS2TIMER_RESOLUTION_MINIMUM) ||
167 (wDelay > OS2TIMER_RESOLUTION_MINIMUM))
168 return NULL;
169
170 if (wResolution == 0)
171 wResolution = OS2TIMER_RESOLUTION_MINIMUM;
172 else
173 if ((wResolution < OS2TIMER_RESOLUTION_MINIMUM) ||
174 (wResolution > OS2TIMER_RESOLUTION_MINIMUM))
175 return NULL;
176
177 timer = new OS2Timer();
178 if(timer == NULL)
179 return(0);
180
181 if(timer->StartTimer(wDelay, wResolution, lptc, dwUser, fuEvent) == FALSE)
182 {
183 dprintf(("WINMM:timeSetEvent: couldn't start timer!\n"));
184 delete(timer);
185 return(0);
186 }
187 return(MMRESULT)timer;
188}
189
190
191/*****************************************************************************
192 * Name :
193 * Purpose :
194 * Parameters:
195 * Variables :
196 * Result :
197 * Remark :
198 * Status : UNTESTED STUB
199 *
200 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
201 *****************************************************************************/
202
203ODINFUNCTION2(MMRESULT, timeGetSystemTime,
204 LPMMTIME, arg1,
205 UINT, arg2)
206{
207 return O32_timeGetSystemTime(arg1, arg2);
208}
209
210
211/*****************************************************************************
212 * Name :
213 * Purpose :
214 * Parameters:
215 * Variables :
216 * Result :
217 * Remark :
218 * Status : UNTESTED STUB
219 *
220 * Author : Patrick Haller [Tue, 1998/06/16 23:00]
221 *****************************************************************************/
222
223ODINFUNCTION0(DWORD, timeGetTime)
224{
225 return O32_timeGetTime();
226}
227
Note: See TracBrowser for help on using the repository browser.