#include "CallbackClock.h" namespace midi { CallbackClock::CallbackClock() : CallbackClock(0, 0) { } CallbackClock::CallbackClock(TickCallback tickCallback) : CallbackClock(tickCallback, 0) { } CallbackClock::CallbackClock(TickCallback callback, void* callbackData) : tickCallback(callback), tickCallbackData(callbackData) { } CallbackClock::TickCallback CallbackClock::getTickCallback() { tickCallback_mutex.lock(); TickCallback c = tickCallback; tickCallback_mutex.unlock(); return c; } void CallbackClock::setTickCallback(TickCallback c) { tickCallback_mutex.lock(); tickCallback = c; tickCallback_mutex.unlock(); } void* CallbackClock::getTickCallbackData() { tickCallbackData_mutex.lock(); void* d = tickCallbackData; tickCallbackData_mutex.unlock(); return d; } void CallbackClock::setTickCallbackData(void* d) { tickCallbackData_mutex.lock(); tickCallbackData = d; tickCallbackData_mutex.unlock(); } void CallbackClock::tick() { TickCallback c = getTickCallback(); if(c) { c(getTickCallbackData()); } } };