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

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

Fix: memory leak in Dart thread callback functions

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