From dfee9c936d69bb8ae6d5ad9087c669f52bbba842 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 11 Apr 2014 15:11:09 +0000 Subject: [PATCH] More noexcept stuff --- source/utils/CarlaMathUtils.hpp | 2 +- source/utils/CarlaRingBuffer.hpp | 16 ++++++++++------ source/utils/CarlaThread.hpp | 2 +- source/utils/CarlaVstUtils.hpp | 2 +- source/utils/Lv2AtomQueue.hpp | 10 ++++++++-- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/source/utils/CarlaMathUtils.hpp b/source/utils/CarlaMathUtils.hpp index ca8c90ac9..560a6edcf 100644 --- a/source/utils/CarlaMathUtils.hpp +++ b/source/utils/CarlaMathUtils.hpp @@ -83,7 +83,7 @@ const T& carla_fixValue(const T& min, const T& max, const T& value) noexcept * Get next power of 2. */ static inline -uint32_t carla_nextPowerOf2(uint32_t size) +uint32_t carla_nextPowerOf2(uint32_t size) noexcept { // http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 --size; diff --git a/source/utils/CarlaRingBuffer.hpp b/source/utils/CarlaRingBuffer.hpp index f2df7cea0..85e4f6f46 100644 --- a/source/utils/CarlaRingBuffer.hpp +++ b/source/utils/CarlaRingBuffer.hpp @@ -128,8 +128,10 @@ public: CARLA_SAFE_ASSERT_RETURN(fBuffer != nullptr,); #ifdef CARLA_OS_WIN - ::VirtualLock(fBuffer, sizeof(BufferStruct)); - ::VirtualLock(fBuffer->buf, fBuffer->size); + try { + ::VirtualLock(fBuffer, sizeof(BufferStruct)); + ::VirtualLock(fBuffer->buf, fBuffer->size); + } CARLA_SAFE_EXCEPTION("RingBufferControl::lockMemory"); #else ::mlock(fBuffer, sizeof(BufferStruct)); ::mlock(fBuffer->buf, fBuffer->size); @@ -290,15 +292,17 @@ protected: private: BufferStruct* fBuffer; - static void memoryBarrier() + static void memoryBarrier() noexcept { + try { #if defined(CARLA_OS_MAC) - ::OSMemoryBarrier(); + ::OSMemoryBarrier(); #elif defined(CARLA_OS_WIN) - ::MemoryBarrier(); + ::MemoryBarrier(); #elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 401 - ::__sync_synchronize(); + ::__sync_synchronize(); #endif + } CARLA_SAFE_EXCEPTION("RingBufferControl::memoryBarrier"); } CARLA_PREVENT_HEAP_ALLOCATION diff --git a/source/utils/CarlaThread.hpp b/source/utils/CarlaThread.hpp index d927a3850..666c0662f 100644 --- a/source/utils/CarlaThread.hpp +++ b/source/utils/CarlaThread.hpp @@ -160,7 +160,7 @@ public: try { pthread_cancel(threadId); - } catch(...) {} + } CARLA_SAFE_EXCEPTION("pthread_cancel"); return false; } diff --git a/source/utils/CarlaVstUtils.hpp b/source/utils/CarlaVstUtils.hpp index 7c67b412d..b3fc94220 100644 --- a/source/utils/CarlaVstUtils.hpp +++ b/source/utils/CarlaVstUtils.hpp @@ -147,7 +147,7 @@ bool vstPluginCanDo(AEffect* const effect, const char* const feature) noexcept try { ret = (effect->dispatcher(effect, effCanDo, 0, 0, const_cast(feature), 0.0f) == 1); - } catch(...) {} + } CARLA_SAFE_EXCEPTION("vstPluginCanDo"); return ret; } diff --git a/source/utils/Lv2AtomQueue.hpp b/source/utils/Lv2AtomQueue.hpp index f3595fe2c..7a0586a3c 100644 --- a/source/utils/Lv2AtomQueue.hpp +++ b/source/utils/Lv2AtomQueue.hpp @@ -63,8 +63,13 @@ public: // shouldn't really happen please... CARLA_SAFE_ASSERT_RETURN(size > 0,); - fLv2Buffer.size = carla_nextPowerOf2(size); - fLv2Buffer.buf = new char[fLv2Buffer.size]; + const uint32_t p2size(carla_nextPowerOf2(size)); + + try { + fLv2Buffer.buf = new char[p2size]; + } CARLA_SAFE_EXCEPTION_RETURN("Lv2AtomRingBufferControl::createBuffer",); + + fLv2Buffer.size = p2size; setRingBuffer(&fLv2Buffer, true); lockMemory(); } @@ -251,6 +256,7 @@ public: queue.fRingBufferCtrl.clear(); } + // used for tmp buffers only void copyAndDumpDataFromQueue(Lv2AtomQueue& queue, char dumpBuf[]) noexcept { // lock source