Browse Source

More noexcept stuff

tags/1.9.4
falkTX 11 years ago
parent
commit
dfee9c936d
5 changed files with 21 additions and 11 deletions
  1. +1
    -1
      source/utils/CarlaMathUtils.hpp
  2. +10
    -6
      source/utils/CarlaRingBuffer.hpp
  3. +1
    -1
      source/utils/CarlaThread.hpp
  4. +1
    -1
      source/utils/CarlaVstUtils.hpp
  5. +8
    -2
      source/utils/Lv2AtomQueue.hpp

+ 1
- 1
source/utils/CarlaMathUtils.hpp View File

@@ -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;


+ 10
- 6
source/utils/CarlaRingBuffer.hpp View File

@@ -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


+ 1
- 1
source/utils/CarlaThread.hpp View File

@@ -160,7 +160,7 @@ public:

try {
pthread_cancel(threadId);
} catch(...) {}
} CARLA_SAFE_EXCEPTION("pthread_cancel");

return false;
}


+ 1
- 1
source/utils/CarlaVstUtils.hpp View File

@@ -147,7 +147,7 @@ bool vstPluginCanDo(AEffect* const effect, const char* const feature) noexcept

try {
ret = (effect->dispatcher(effect, effCanDo, 0, 0, const_cast<char*>(feature), 0.0f) == 1);
} catch(...) {}
} CARLA_SAFE_EXCEPTION("vstPluginCanDo");

return ret;
}


+ 8
- 2
source/utils/Lv2AtomQueue.hpp View File

@@ -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


Loading…
Cancel
Save