stopplay_waiting_thread.cpp 751 B

123456789101112131415161718192021222324252627
  1. #include "stopplay_waiting_thread.h"
  2. #include "playercontroller.h"
  3. #include <QLoggingCategory>
  4. Q_LOGGING_CATEGORY(playerControllerStopWaitingThread, "player.controller.StopWaitingThread")
  5. StopWaitingThread::StopWaitingThread(PlayerController* parent, const std::string& file)
  6. : m_file(file), m_parent(parent)
  7. {}
  8. StopWaitingThread::~StopWaitingThread() {}
  9. void StopWaitingThread::run()
  10. {
  11. // 这里建议用回调或轮询方式通知主线程
  12. if (!m_parent) return;
  13. m_parent->stopPlay();
  14. while (m_parent->isPlaying()) {
  15. if (isExit())
  16. break;
  17. std::this_thread::sleep_for(std::chrono::milliseconds(2));
  18. }
  19. if (!m_exit) {
  20. m_parent->startToPlay(m_file.c_str());
  21. }
  22. // 可加日志
  23. }