- Timestamp:
- Dec 29, 1999, 9:36:10 AM (26 years ago)
- Location:
- trunk/src/winmm
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/winmm/dwaveout.cpp
r1463 r2242 1 /* $Id: dwaveout.cpp,v 1.1 0 1999-10-26 22:47:23phaller Exp $ */1 /* $Id: dwaveout.cpp,v 1.11 1999-12-29 08:33:55 phaller Exp $ */ 2 2 3 3 /* … … 49 49 /******************************************************************************/ 50 50 /******************************************************************************/ 51 DartWaveOut::DartWaveOut(LPWAVEFORMATEX pwfx, ULONG nCallback, ULONG dwInstance )51 DartWaveOut::DartWaveOut(LPWAVEFORMATEX pwfx, ULONG nCallback, ULONG dwInstance, USHORT usSel) 52 52 { 53 53 Init(pwfx); 54 54 55 mthdCallback = (LPDRVCALLBACK)nCallback; 55 mthdCallback = (LPDRVCALLBACK)nCallback; // callback function 56 selCallback = usSel; // callback win32 tib selector 56 57 this->dwInstance = dwInstance; 57 58 … … 74 75 void DartWaveOut::callback(HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2) 75 76 { 76 USHORT selTIB = SetWin32TIB(); 77 USHORT selTIB = GetFS(); // save current FS selector 78 79 dprintf(("WINMM:DartWaveOut::callback(HDRVR h=%08xh, UINT uMessage=%08xh, DWORD dwUser=%08xh, DWORD dw1=%08xh, DWORD dw2=%08xh)\n", 80 h, 81 uMessage, 82 dwUser, 83 dw1, 84 dw2)); 85 86 if (selCallback != 0) 87 SetFS(selCallback); // switch to callback win32 tib selector (stored in waveOutOpen) 88 else 89 dprintf(("WINMM:DartWaveOut::callback - selCallback is invalid")); 90 91 //@@@PH 1999/12/28 Shockwave Flashes seem to make assumptions on a 92 // specific stack layout. Do we have the correct calling convention here? 77 93 mthdCallback(h,uMessage,dwUser,dw1,dw2); 78 SetFS(selTIB); 94 SetFS(selTIB); // switch back to the saved FS selector 79 95 } 80 96 /******************************************************************************/ … … 94 110 mthdCallback = NULL; 95 111 hwndCallback = 0; 112 selCallback = 0; 96 113 dwInstance = 0; 97 114 ulError = 0; 115 selCallback = 0; 98 116 State = STATE_STOPPED; 99 117 … … 695 713 /******************************************************************************/ 696 714 /******************************************************************************/ 697 LONG APIENTRY WaveOutHandler(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, 715 LONG APIENTRY WaveOutHandler(ULONG ulStatus, 716 PMCI_MIX_BUFFER pBuffer, 698 717 ULONG ulFlags) 699 718 { 700 DartWaveOut *dwave; 701 PTIB ptib; 702 PPIB ppib; 703 704 DosGetInfoBlocks(&ptib, &ppib); 705 // dprintf(("WaveOutHandler: thread %d prio %X", ptib->tib_ptib2->tib2_ultid, ptib->tib_ptib2->tib2_ulpri)); 706 if(pBuffer && pBuffer->ulUserParm) { 719 // PTIB ptib; 720 // PPIB ppib; 721 // DosGetInfoBlocks(&ptib, &ppib); 722 // dprintf(("WaveOutHandler: thread %d prio %X", ptib->tib_ptib2->tib2_ultid, ptib->tib_ptib2->tib2_ulpri)); 723 724 DartWaveOut *dwave; 725 726 if(pBuffer && pBuffer->ulUserParm) 727 { 707 728 dwave = (DartWaveOut *)pBuffer->ulUserParm; 708 729 dwave->handler(ulStatus, pBuffer, ulFlags); -
trunk/src/winmm/dwaveout.h
r1404 r2242 1 /* $Id: dwaveout.h,v 1. 5 1999-10-22 18:09:16 sandervlExp $ */1 /* $Id: dwaveout.h,v 1.6 1999-12-29 08:33:56 phaller Exp $ */ 2 2 3 3 /* … … 32 32 { 33 33 public: 34 DartWaveOut(LPWAVEFORMATEX pwfx, ULONG nCallback, ULONG dwInstance );34 DartWaveOut(LPWAVEFORMATEX pwfx, ULONG nCallback, ULONG dwInstance, USHORT usSel); 35 35 DartWaveOut(LPWAVEFORMATEX pwfx, HWND hwndCallback); 36 36 DartWaveOut(LPWAVEFORMATEX pwfx); … … 72 72 int curFillPos, curPlayPos; //fillpos == pos in os2 mix buffer, bufpos == pos in win buffer 73 73 74 // callback interface 75 LPDRVCALLBACK mthdCallback; 76 void callback(HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); 74 // callback interface 75 LPDRVCALLBACK mthdCallback; // pointer to win32 routine for the callback 76 USHORT selCallback; // the win32 tib selector for the callback (saved at waveOutOpen) 77 void callback(HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); 78 HWND hwndCallback; 79 DWORD dwInstance; 77 80 78 HWND hwndCallback; 79 DWORD dwInstance; 80 WAVEHDR *wavehdr, *curhdr; 81 WAVEHDR *wavehdr, 82 *curhdr; 81 83 82 84 BOOL fMixerSetup; 83 85 84 86 VMutex *wmutex; 85 87 // Linked list management 86 88 DartWaveOut* next; // Next Timer -
trunk/src/winmm/os2timer.cpp
r763 r2242 1 /* $Id: os2timer.cpp,v 1.1 2 1999-08-31 20:22:27phaller Exp $ */1 /* $Id: os2timer.cpp,v 1.13 1999-12-29 08:33:56 phaller Exp $ */ 2 2 3 3 /* … … 79 79 : next(NULL) 80 80 { 81 dprintf(("WINMM:OS2Timer: OS2TimerResolution::OS2TimerResolution(%08xh,%08xh)\n", 82 this, 83 dwPeriod)); 84 81 85 // add to linked list 82 86 OS2TimerResolution *timeRes = OS2TimerResolution::sTimerResolutions; … … 111 115 OS2TimerResolution::~OS2TimerResolution() 112 116 { 117 dprintf(("WINMM:OS2Timer: OS2TimerResolution::~OS2TimerResolution(%08xh)\n", 118 this)); 119 120 113 121 // remove from linked list 114 122 OS2TimerResolution *timeRes = OS2TimerResolution::sTimerResolutions; … … 143 151 BOOL OS2TimerResolution::enterResolutionScope(int dwPeriod) 144 152 { 153 dprintf(("WINMM:OS2Timer: OS2TimerResolution::enterResolutionScope(%08xh)\n", 154 dwPeriod)); 155 145 156 OS2TimerResolution* timeRes = new OS2TimerResolution(dwPeriod); 146 157 if (timeRes != NULL) … … 165 176 BOOL OS2TimerResolution::leaveResolutionScope(int dwPeriod) 166 177 { 178 dprintf(("WINMM:OS2Timer: OS2TimerResolution::leaveResolutionScope(%08xh)\n", 179 dwPeriod)); 180 167 181 OS2TimerResolution* timeRes = OS2TimerResolution::sTimerResolutions; 168 182 … … 210 224 } 211 225 226 dprintf(("WINMM:OS2Timer: OS2TimerResolution::queryCurrentResolution == %08xh\n", 227 iMin)); 228 212 229 return iMin; 213 230 } … … 223 240 next(NULL) 224 241 { 242 dprintf(("WINMM:OS2Timer: OS2Timer::OS2Timer(%08xh)\n", 243 this)); 244 225 245 OS2Timer *timer = OS2Timer::timers; 226 246 … … 238 258 //TimerThreadID = _beginthread(TimerHlpHandler, NULL, 0x4000, (void *)this); 239 259 hTimerThread = CreateThread(NULL, 240 0x 1000,260 0x4000, 241 261 (LPTHREAD_START_ROUTINE)TimerHlpHandler, 242 262 (LPVOID)this, … … 253 273 OS2Timer::~OS2Timer() 254 274 { 275 dprintf(("WINMM:OS2Timer: OS2Timer::~OS2Timer(%08xh)\n", 276 this)); 277 255 278 OS2Timer *timer = OS2Timer::timers; 256 279 … … 276 299 int fuEvent) 277 300 { 301 dprintf(("WINMM:OS2Timer: OS2Timer::StartTimer(%08xh, %08xh, %08xh, %08xh, %08xh, %08xh)\n", 302 this, 303 period, 304 resolution, 305 lptc, 306 dwUser, 307 fuEvent)); 308 278 309 APIRET rc; 279 310 280 311 if(TimerThreadID == -1) 281 {282 312 return(FALSE); 283 }284 313 285 314 if(TimerStatus == Stopped) … … 317 346 void OS2Timer::StopTimer() 318 347 { 348 dprintf(("WINMM:OS2Timer: OS2Timer::StopTimer(%08xh)\n", 349 this)); 350 319 351 if(TimerStatus == Running) 320 352 { … … 327 359 void OS2Timer::KillTimer() 328 360 { 361 dprintf(("WINMM:OS2Timer: OS2Timer::KillTimer(%08xh)\n", 362 this)); 363 329 364 fFatal = TRUE; 330 365 DosStopTimer(TimerHandle); … … 344 379 USHORT selTIB; 345 380 346 dprintf(("WINMM: TimerHandler thread created\n")); 381 dprintf(("WINMM: TimerHandler thread created (%08xh)\n", 382 this)); 347 383 348 384 rc = DosSetPriority (PRTYS_THREAD, /* Change a single thread */ -
trunk/src/winmm/os2timer.h
r762 r2242 1 /* $Id: os2timer.h,v 1. 7 1999-08-31 19:24:03phaller Exp $ */1 /* $Id: os2timer.h,v 1.8 1999-12-29 08:36:10 phaller Exp $ */ 2 2 3 3 #ifndef __OS2TIMER_H__ … … 24 24 25 25 #define OS2TIMER_RESOLUTION_MINIMUM 32 26 #define OS2TIMER_RESOLUTION_MAXIMUM 0x7ffffff f26 #define OS2TIMER_RESOLUTION_MAXIMUM 0x7ffffffe 27 27 28 28 -
trunk/src/winmm/time.cpp
r1852 r2242 1 /* $Id: time.cpp,v 1. 7 1999-11-26 21:49:22phaller Exp $ */1 /* $Id: time.cpp,v 1.8 1999-12-29 08:33:56 phaller Exp $ */ 2 2 3 3 /* … … 164 164 // @@@PH 1999/10/26 hack for RA95 165 165 if (wDelay < OS2TIMER_RESOLUTION_MINIMUM) 166 { 167 dprintf(("WINMM:Time:timeSetEvent - Warning: requested delay too low (%08xh)\n", 168 wDelay)); 166 169 wDelay = OS2TIMER_RESOLUTION_MINIMUM; 170 } 167 171 168 172 if (wResolution < OS2TIMER_RESOLUTION_MINIMUM) 173 { 174 dprintf(("WINMM:Time:timeSetEvent - Warning: requested resolution too low (%08xh)\n", 175 wResolution)); 169 176 wResolution = OS2TIMER_RESOLUTION_MINIMUM; 177 } 170 178 171 179 -
trunk/src/winmm/waveout.cpp
r2168 r2242 1 /* $Id: waveout.cpp,v 1. 7 1999-12-20 22:22:07 sandervlExp $ */1 /* $Id: waveout.cpp,v 1.8 1999-12-29 08:33:56 phaller Exp $ */ 2 2 #undef DEBUG 3 3 /* … … 34 34 /******************************************************************************/ 35 35 /******************************************************************************/ 36 ODINFUNCTION6(MMRESULT, waveOutOpen, 37 LPHWAVEOUT, phwo, 38 UINT, uDeviceID, 39 const LPWAVEFORMATEX, pwfx, 40 DWORD, dwCallback, 41 DWORD, dwInstance, 42 DWORD, fdwOpen) 36 37 //@@@PH 1999/12/28 this function needs the win32 tib FS selector for callback purposes 38 // therefore, one cannot use ODINFUNCTION macro wrappers! The xxxFS 39 // macro passes in USHORT selFS as first parameter. 40 ODINFUNCTION6FS(MMRESULT, waveOutOpen, 41 LPHWAVEOUT, phwo, 42 UINT, uDeviceID, 43 const LPWAVEFORMATEX, pwfx, 44 DWORD, dwCallback, 45 DWORD, dwInstance, 46 DWORD, fdwOpen) 43 47 { 44 48 MMRESULT rc; … … 62 66 } 63 67 else 64 if(fdwOpen == CALLBACK_FUNCTION) { 65 *phwo = (HWAVEOUT)new DartWaveOut(pwfx, dwCallback, dwInstance); 68 if(fdwOpen == CALLBACK_FUNCTION) 69 { 70 //@@@PH 1999/12/28 save valid FS: to win32 TIB 71 *phwo = (HWAVEOUT)new DartWaveOut(pwfx, dwCallback, dwInstance, selFS); 66 72 } 67 73 else *phwo = (HWAVEOUT)new DartWaveOut(pwfx);
Note:
See TracChangeset
for help on using the changeset viewer.