CallbackClock.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "CallbackClock.h"
  2. namespace midi {
  3. CallbackClock::CallbackClock()
  4. : CallbackClock(0, 0)
  5. {
  6. }
  7. CallbackClock::CallbackClock(TickCallback tickCallback)
  8. : CallbackClock(tickCallback, 0)
  9. {
  10. }
  11. CallbackClock::CallbackClock(TickCallback callback, void* callbackData)
  12. : tickCallback(callback), tickCallbackData(callbackData)
  13. {
  14. }
  15. CallbackClock::TickCallback CallbackClock::getTickCallback()
  16. {
  17. tickCallback_mutex.lock();
  18. TickCallback c = tickCallback;
  19. tickCallback_mutex.unlock();
  20. return c;
  21. }
  22. void CallbackClock::setTickCallback(TickCallback c)
  23. {
  24. tickCallback_mutex.lock();
  25. tickCallback = c;
  26. tickCallback_mutex.unlock();
  27. }
  28. void* CallbackClock::getTickCallbackData()
  29. {
  30. tickCallbackData_mutex.lock();
  31. void* d = tickCallbackData;
  32. tickCallbackData_mutex.unlock();
  33. return d;
  34. }
  35. void CallbackClock::setTickCallbackData(void* d)
  36. {
  37. tickCallbackData_mutex.lock();
  38. tickCallbackData = d;
  39. tickCallbackData_mutex.unlock();
  40. }
  41. void CallbackClock::tick()
  42. {
  43. TickCallback c = getTickCallback();
  44. if(c) {
  45. c(getTickCallbackData());
  46. }
  47. }
  48. };