2
0

PolyThreaded.cpp 787 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "PolyThreaded.h"
  2. #include "PolyCore.h"
  3. using namespace Polycode;
  4. Threaded::Threaded() : EventDispatcher() {
  5. threadRunning = true;
  6. scheduledForRemoval = false;
  7. }
  8. Threaded::~Threaded() {
  9. core->removeThread(this);
  10. }
  11. void Threaded::killThread() {
  12. threadRunning = false;
  13. }
  14. void Threaded::runThread(){
  15. while(threadRunning) {
  16. updateThread();
  17. }
  18. }
  19. void Threaded::dispatchEvent(Event *event, int eventCode) {
  20. core->lockMutex(eventMutex);
  21. event->setEventCode(eventCode);
  22. eventQueue.push_back(event);
  23. core->unlockMutex(eventMutex);
  24. }
  25. void Threaded::dispatchEventNoDelete(Event *event, int eventCode) {
  26. core->lockMutex(eventMutex);
  27. event->setEventCode(eventCode);
  28. event->deleteOnDispatch = false;
  29. eventQueue.push_back(event);
  30. core->unlockMutex(eventMutex);
  31. }