Lines Matching refs:handle

146 INT32 unprepareLongBuffers(MidiDeviceHandle* handle) {
151 if (!handle || !handle->deviceHandle || !handle->longBuffers) {
152 ERROR0("MIDI_OUT_unprepareLongBuffers: handle, deviceHandle, or longBuffers == NULL\n");
155 sysex = (SysExQueue*) handle->longBuffers;
159 err = midiOutUnprepareHeader((HMIDIOUT) handle->deviceHandle, hdr, sizeof(MIDIHDR));
186 INT32 freeLongBuffers(MidiDeviceHandle* handle) {
191 if (!handle || !handle->longBuffers) {
192 ERROR0("MIDI_OUT_freeLongBuffers: handle or longBuffers == NULL\n");
195 sysex = (SysExQueue*) handle->longBuffers;
197 err = freeLongBuffer(&(sysex->header[i]), (HMIDIOUT) handle->deviceHandle, -1);
203 INT32 MIDI_OUT_OpenDevice(INT32 deviceID, MidiDeviceHandle** handle) {
218 (*handle) = (MidiDeviceHandle*) malloc(sizeof(MidiDeviceHandle));
219 if (!(*handle)) {
223 memset(*handle, 0, sizeof(MidiDeviceHandle));
226 if (!MIDI_WinCreateEmptyLongBufferQueue(*handle, MIDI_OUT_LONG_QUEUE_SIZE)) {
228 free(*handle);
229 (*handle) = NULL;
234 (*handle)->platformData = (void*) CreateEvent(NULL, FALSE /*manual reset*/, FALSE /*signaled*/, NULL);
235 if (!(*handle)->platformData) {
237 MIDI_WinDestroyLongBufferQueue(*handle);
238 free(*handle);
239 (*handle) = NULL;
244 err = midiOutOpen((HMIDIOUT*) &((*handle)->deviceHandle), deviceID,
245 (UINT_PTR) (*handle)->platformData, (UINT_PTR) (*handle), CALLBACK_EVENT);
247 if ((err != MMSYSERR_NOERROR) || (!(*handle)->deviceHandle)) {
249 if (midiOutShortMsg((HMIDIOUT) ((*handle)->deviceHandle),0) == MMSYSERR_INVALHANDLE) {
251 CloseHandle((HANDLE) (*handle)->platformData);
252 MIDI_WinDestroyLongBufferQueue(*handle);
253 free(*handle);
254 (*handle) = NULL;
260 MIDI_SetStartTime(*handle);
265 INT32 MIDI_OUT_CloseDevice(MidiDeviceHandle* handle) {
270 if (!handle) {
271 ERROR0("ERROR: MIDI_OUT_StopDevice: handle is NULL\n");
275 event = handle->platformData;
276 handle->platformData = NULL;
283 if (handle->deviceHandle) {
286 err = midiOutReset((HMIDIOUT) handle->deviceHandle);
302 while (handle->isWaiting) Sleep(0);
305 unprepareLongBuffers(handle);
307 if (handle->deviceHandle) {
308 err = midiOutClose((HMIDIOUT) handle->deviceHandle);
310 handle->deviceHandle = NULL;
312 freeLongBuffers(handle);
317 MIDI_WinDestroyLongBufferQueue(handle);
318 free(handle);
326 INT64 MIDI_OUT_GetTimeStamp(MidiDeviceHandle* handle) {
327 return MIDI_GetTimeStamp(handle);
331 INT32 MIDI_OUT_SendShortMessage(MidiDeviceHandle* handle, UINT32 packedMsg, UINT32 timestamp) {
335 if (!handle) {
336 ERROR0("ERROR: MIDI_OUT_SendShortMessage: handle is NULL\n");
339 err = midiOutShortMsg((HMIDIOUT) handle->deviceHandle, packedMsg);
345 INT32 MIDI_OUT_SendLongMessage(MidiDeviceHandle* handle, UBYTE* data, UINT32 size, UINT32 timestamp) {
353 if (!handle || !data || !handle->longBuffers) {
354 ERROR0("< ERROR: MIDI_OUT_SendLongMessage: handle, data, or longBuffers is NULL\n");
361 sysex = (SysExQueue*) handle->longBuffers;
371 while (!hdr && handle->platformData) {
381 if (!hdr && handle->platformData) {
384 handle->isWaiting = TRUE;
385 res = WaitForSingleObject((HANDLE) handle->platformData, 700);
386 handle->isWaiting = FALSE;
400 freeLongBuffer(hdr, handle->deviceHandle, (INT32) size);
407 err = midiOutPrepareHeader((HMIDIOUT) handle->deviceHandle, hdr, sizeof(MIDIHDR));
409 freeLongBuffer(hdr, handle->deviceHandle, -1);
413 err = midiOutLongMsg((HMIDIOUT) handle->deviceHandle, hdr, sizeof(MIDIHDR));
415 freeLongBuffer(hdr, handle->deviceHandle, -1);