void RingBuffer::destroy() { if (mReadIndex <= mWriteIndex) { for (int i = mReadIndex; i < mWriteIndex; i ++) { mDestroyFunc(mRingBuffer[i]); } } else { for (int i = 0; i < mWriteIndex; i ++) { mDestroyFunc(mRingBuffer[i]); } for (int i = mReadIndex; i < RING_BUFFER_SIZE; i ++) { mDestroyFunc(mRingBuffer[i]); } } mReadIndex = 0; mWriteIndex = 0; #ifdef ANDROID_PLATFORM sem_destroy(&mWriteSem); sem_destroy(&mReadSem); #else sem_close(mReadSem); sem_close(mWriteSem); #endif }
void PluginLoader<T>::deleteInstance(T *data){ if(loaded()){ mDestroyFunc(data); } return; }