Changeset 2242 for trunk/src/winmm/dwaveout.cpp
- Timestamp:
- Dec 29, 1999, 9:36:10 AM (26 years ago)
- File:
-
- 1 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);
Note:
See TracChangeset
for help on using the changeset viewer.