FskErr FskMutexNew_uninstrumented(FskMutex *mutex, const char *name) { FskMutex mtx = NULL; FskErr err; err = FskMemPtrNewClear(sizeof(FskMutexRecord), (FskMemPtr *)&mtx); BAIL_IF_ERR(err); err = KplMutexNew((KplMutex*)&mtx->kplMutex); BAIL_IF_ERR(err); #if SUPPORT_INSTRUMENTATION mtx->name = FskStrDoCopy_Untracked(name); #endif bail: if ((err != kFskErrNone) && (mtx != NULL)) { KplMutexDispose(mtx->kplMutex); #if SUPPORT_INSTRUMENTATION FskMemPtrDispose((void*)mtx->name); #endif FskMemPtrDispose(mtx); mtx = NULL; } *mutex = mtx; return err; }
FskErr FskMutexNew_uninstrumented(FskMutex *mutex, const char *name) { FskErr err; pthread_mutexattr_t attr; err = FskMemPtrNewClear(sizeof(FskMutexRecord), (FskMemPtr *)mutex); BAIL_IF_ERR(err); if ((pthread_mutexattr_init(&attr) != 0) || (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) || (pthread_mutex_init(&(*mutex)->mutex, &attr) != 0)) { BAIL(kFskErrOperationFailed); } #if SUPPORT_INSTRUMENTATION (*mutex)->name = FskStrDoCopy_Untracked(name); #endif bail: pthread_mutexattr_destroy(&attr); if ((err != kFskErrNone) && (*mutex != NULL)) { #if SUPPORT_INSTRUMENTATION FskMemPtrDispose((FskMemPtr)(*mutex)->name); #endif FskMemPtrDispose(*mutex); *mutex = NULL; } return err; }
FskErr FskAudioDecompressNew(FskAudioDecompress *decoOut, UInt32 audioFormat, const char *mimeType, UInt32 sampleRate, UInt32 channelCount, void *formatInfo, UInt32 formatInfoSize) { FskErr err; FskAudioDecompressor decoder; FskAudioDecompress deco; UInt32 i = 0; while (true) { Boolean canHandle = false; decoder = (FskAudioDecompressor)FskExtensionGetByIndex(kFskExtensionAudioDecompressor, i++); if (NULL == decoder) { if (decoOut) *decoOut = NULL; return kFskErrExtensionNotFound; } if ((kFskErrNone == decoder->doCanHandle(audioFormat, mimeType, &canHandle)) && canHandle) break; } if (NULL == decoOut) return kFskErrNone; // can handler err = FskMemPtrNewClear(sizeof(FskAudioDecompressRecord), &deco); BAIL_IF_ERR(err); deco->inputSampleRate = sampleRate; deco->inputChannelCount = channelCount; deco->outputChannelCount = channelCount; deco->formatInfoSize = formatInfoSize; err = FskMemPtrNewFromData(formatInfoSize, formatInfo, (FskMemPtr*)(void*)&deco->formatInfo); BAIL_IF_ERR(err); deco->decoder = decoder; FskInstrumentedItemNew(deco, FskStrDoCopy_Untracked(mimeType), &gAudioDecompressTypeInstrumentation); err = deco->decoder->doNew(deco, audioFormat, mimeType); BAIL_IF_ERR(err); bail: if (err) { FskAudioDecompressDispose(deco); deco = NULL; } *decoOut = deco; return err; }
FskErr FskMutexNew_(FskMutex *mutex, const char *name, FSK_SYNCHRONIZATION_DEBUG_ARGS) #endif { FskMutex mtx = NULL; FskErr err; err = FskMemPtrNewClear(sizeof(FskMutexRecord), (FskMemPtr *)&mtx); BAIL_IF_ERR(err); err = KplMutexNew((KplMutex*)&mtx->kplMutex); BAIL_IF_ERR(err); #if SUPPORT_INSTRUMENTATION mtx->name = FskStrDoCopy_Untracked(name); FskInstrumentedItemNew(mtx, mtx->name, &gFskMutexTypeInstrumentation); #if SUPPORT_SYNCHRONIZATION_DEBUG if (FskInstrumentedItemHasListeners(mtx)) { FskSynchronizationInstrMsgRecord msg; msg.name = name; msg.file = file; msg.line = line; msg.function = function; FskInstrumentedItemSendMessage(mtx, kFskSynchronizationInstrMsgMutexNew, &msg); } #endif #endif bail: if ((err != kFskErrNone) && (mtx != NULL)) { KplMutexDispose(mtx->kplMutex); #if SUPPORT_INSTRUMENTATION FskMemPtrDispose_Untracked((void*)mtx->name); #endif FskMemPtrDispose(mtx); mtx = NULL; } *mutex = mtx; return err; }
FskErr FskMutexNew_(FskMutex *mutex, const char *name, FSK_SYNCHRONIZATION_DEBUG_ARGS) #endif { FskErr err; pthread_mutexattr_t attr; err = FskMemPtrNewClear(sizeof(FskMutexRecord), (FskMemPtr *)mutex); BAIL_IF_ERR(err); if ((pthread_mutexattr_init(&attr) != 0) || (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) || (pthread_mutex_init(&(*mutex)->mutex, &attr) != 0)) { BAIL(kFskErrOperationFailed); } #if SUPPORT_INSTRUMENTATION (*mutex)->name = FskStrDoCopy_Untracked(name); FskInstrumentedItemNew(*mutex, NULL, &gFskMutexTypeInstrumentation); #if SUPPORT_SYNCHRONIZATION_DEBUG if (FskInstrumentedItemHasListeners(*mutex)) { FskSynchronizationInstrMsgRecord msg; msg.name = name; msg.file = file; msg.line = line; msg.function = function; FskInstrumentedItemSendMessage(*mutex, kFskSynchronizationInstrMsgMutexNew, &msg); } #endif #endif bail: pthread_mutexattr_destroy(&attr); if ((err != kFskErrNone) && (*mutex != NULL)) { #if SUPPORT_INSTRUMENTATION FskMemPtrDispose((FskMemPtr)(*mutex)->name); #endif FskMemPtrDispose(*mutex); *mutex = NULL; } return err; }
FskErr FskMutexNew_uninstrumented(FskMutex *mutex, const char *name) { FskErr err; err = FskMemPtrNewClear(sizeof(FskMutexRecord), (FskMemPtr *)mutex); BAIL_IF_ERR(err); InitializeCriticalSection(&(*mutex)->cs); #if SUPPORT_INSTRUMENTATION (*mutex)->name = FskStrDoCopy_Untracked(name); #endif bail: if ((err != kFskErrNone) && (*mutex != NULL)) { #if SUPPORT_INSTRUMENTATION FskMemPtrDispose((*mutex)->name); #endif FskMemPtrDispose(*mutex); *mutex = NULL; } return err; }
FskErr FskMutexNew_(FskMutex *mutex, const char *name, FSK_SYNCHRONIZATION_DEBUG_ARGS) #endif { FskErr err; err = FskMemPtrNewClear(sizeof(FskMutexRecord), (FskMemPtr *)mutex); BAIL_IF_ERR(err); InitializeCriticalSection(&(*mutex)->cs); #if SUPPORT_INSTRUMENTATION (*mutex)->name = FskStrDoCopy_Untracked(name); FskInstrumentedItemNew(*mutex, (*mutex)->name, &gFskMutexTypeInstrumentation); #if SUPPORT_SYNCHRONIZATION_DEBUG if (FskInstrumentedItemHasListeners(*mutex)) { FskSynchronizationInstrMsgRecord msg; msg.name = name; msg.file = file; msg.line = line; msg.function = function; FskInstrumentedItemSendMessage(*mutex, kFskSynchronizationInstrMsgMutexNew, &msg); } #endif #endif bail: if ((err != kFskErrNone) && (*mutex != NULL)) { #if SUPPORT_INSTRUMENTATION FskMemPtrDispose_Untracked((*mutex)->name); #endif FskMemPtrDispose(*mutex); *mutex = NULL; } return err; }