Versuchs mal damit:
diff --git a/src/MagiC.cpp b/src/MagiC.cpp
index bf77758..ba0684d 100644
--- a/src/MagiC.cpp
+++ b/src/MagiC.cpp
@@ -139,7 +139,7 @@ void getActAtariPrg(const char **pName, uint32_t *pact_pd)
static inline void OS_CreateCriticalRegion(pthread_mutex_t *criticalRegion)
{
//DebugInfo2("(%p)", criticalRegion);
- *criticalRegion = PTHREAD_MUTEX_INITIALIZER;
+ pthread_mutex_init(criticalRegion, nullptr);
}
@@ -213,9 +213,9 @@ CMagiC::CMagiC()
m_EventId = 0;
m_InterruptEventsId = 0;
- m_KbCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
- // m_AECriticalRegionId = PTHREAD_MUTEX_INITIALIZER; // remnant from MagicMac(X) and AtariX
- m_ScrCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
+ pthread_mutex_init(&m_KbCriticalRegionId, NULL);
+ // pthread_mutex_init(&m_AECriticalRegionId, NULL); // remnant from MagicMac(X) and AtariX
+ pthread_mutex_init(&m_ScrCriticalRegionId, NULL);
//m_iNoOfAtariFiles = 0; // remnant from MagicMac(X) and AtariX
m_pKbWrite = m_pKbRead = m_cKeyboardOrMouseData;
@@ -236,9 +236,9 @@ CMagiC::CMagiC()
m_bEmulatorIsRunning = false;
// inter-thread synchronisation
- m_EventMutex = PTHREAD_MUTEX_INITIALIZER;
- m_ConditionMutex = PTHREAD_MUTEX_INITIALIZER;
- m_Cond = PTHREAD_COND_INITIALIZER;
+ pthread_mutex_init(&m_EventMutex, NULL);
+ pthread_mutex_init(&m_ConditionMutex, NULL);
+ pthread_cond_init(&m_Cond, NULL);
atomic_init(&gbAtariVideoBufChanged, false);
}
BTW: bin mir nicht ganz sicher ob pthread_mutex_destroy() auf linux überhaupt was macht, aber ein entsprechender Aufruf fehlt auf jeden Fall. In Windows erzeugt pthread_mutex_init() auf jeden Fall ein HANDLE.