///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2014 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#include "Global.h"
+//MUtils
+#include <MUtils/Global.h>
+#include <MUtils/Exception.h>
+
//Qt includes
#include <QSharedMemory>
#include <QSystemSemaphore>
if(g_lamexp_ipc_ptr.semaphore_read->error() != QSystemSemaphore::NoError)
{
QString errorMessage = g_lamexp_ipc_ptr.semaphore_read->errorString();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
- qFatal("Failed to create system smaphore: %s", QUTF8(errorMessage));
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
+ qFatal("Failed to create system smaphore: %s", MUTILS_UTF8(errorMessage));
return -1;
}
if(g_lamexp_ipc_ptr.semaphore_write->error() != QSystemSemaphore::NoError)
{
QString errorMessage = g_lamexp_ipc_ptr.semaphore_write->errorString();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
- qFatal("Failed to create system smaphore: %s", QUTF8(errorMessage));
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
+ qFatal("Failed to create system smaphore: %s", MUTILS_UTF8(errorMessage));
return -1;
}
if(g_lamexp_ipc_ptr.semaphore_read_mutex->error() != QSystemSemaphore::NoError)
{
QString errorMessage = g_lamexp_ipc_ptr.semaphore_read_mutex->errorString();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
- qFatal("Failed to create system smaphore: %s", QUTF8(errorMessage));
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
+ qFatal("Failed to create system smaphore: %s", MUTILS_UTF8(errorMessage));
return -1;
}
if(g_lamexp_ipc_ptr.semaphore_write_mutex->error() != QSystemSemaphore::NoError)
{
QString errorMessage = g_lamexp_ipc_ptr.semaphore_write_mutex->errorString();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
- qFatal("Failed to create system smaphore: %s", QUTF8(errorMessage));
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
+ qFatal("Failed to create system smaphore: %s", MUTILS_UTF8(errorMessage));
return -1;
}
else
{
QString errorMessage = g_lamexp_ipc_ptr.sharedmem->errorString();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.sharedmem);
- qFatal("Failed to attach to shared memory: %s", QUTF8(errorMessage));
+ MUTILS_DELETE(g_lamexp_ipc_ptr.sharedmem);
+ qFatal("Failed to attach to shared memory: %s", MUTILS_UTF8(errorMessage));
return -1;
}
}
else
{
QString errorMessage = g_lamexp_ipc_ptr.sharedmem->errorString();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.sharedmem);
- qFatal("Failed to create shared memory: %s", QUTF8(errorMessage));
+ MUTILS_DELETE(g_lamexp_ipc_ptr.sharedmem);
+ qFatal("Failed to create shared memory: %s", MUTILS_UTF8(errorMessage));
return -1;
}
}
if(!g_lamexp_ipc_ptr.sharedmem || !g_lamexp_ipc_ptr.semaphore_read || !g_lamexp_ipc_ptr.semaphore_write || !g_lamexp_ipc_ptr.semaphore_read_mutex || !g_lamexp_ipc_ptr.semaphore_write_mutex)
{
- THROW("Shared memory for IPC not initialized yet.");
+ MUTILS_THROW("Shared memory for IPC not initialized yet.");
}
lamexp_ipc_data_t ipc_data;
if(!g_lamexp_ipc_ptr.sharedmem || !g_lamexp_ipc_ptr.semaphore_read || !g_lamexp_ipc_ptr.semaphore_write || !g_lamexp_ipc_ptr.semaphore_read_mutex || !g_lamexp_ipc_ptr.semaphore_write_mutex)
{
- THROW("Shared memory for IPC not initialized yet.");
+ MUTILS_THROW("Shared memory for IPC not initialized yet.");
}
lamexp_ipc_data_t ipc_data;
}
}
-/*
- * Exit and clean-up IPC
- */
-void lamexp_ipc_exit(void)
+///////////////////////////////////////////////////////////////////////////////
+// INITIALIZATION
+///////////////////////////////////////////////////////////////////////////////
+
+extern "C" void _lamexp_global_init_ipcom(void)
{
- if(g_lamexp_ipc_ptr.sharedmem) g_lamexp_ipc_ptr.sharedmem->detach();
- LAMEXP_DELETE(g_lamexp_ipc_ptr.sharedmem);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
- LAMEXP_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
+ MUTILS_ZERO_MEMORY(g_lamexp_ipc_ptr);
}
///////////////////////////////////////////////////////////////////////////////
-// INITIALIZATION
+// FINALIZATION
///////////////////////////////////////////////////////////////////////////////
-extern "C" void _lamexp_global_init_ipcom(void)
+extern "C" void _lamexp_global_free_ipcom(void)
{
- LAMEXP_ZERO_MEMORY(g_lamexp_ipc_ptr);
+ if(g_lamexp_ipc_ptr.sharedmem)
+ {
+ g_lamexp_ipc_ptr.sharedmem->detach();
+ }
+
+ MUTILS_DELETE(g_lamexp_ipc_ptr.sharedmem);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_read_mutex);
+ MUTILS_DELETE(g_lamexp_ipc_ptr.semaphore_write_mutex);
}