// ***********************************************************/ // stopplay_waiting_thread.cpp // // Copy Right @ Steven Huang. All rights reserved. // // Waiting play-stop thread // ***********************************************************/ #include "stopplay_waiting_thread.h" #include "playercontroller.h" StopWaitingThread::StopWaitingThread(PlayerController* parent, const std::string& file) : m_file(file), m_parent(parent) {} StopWaitingThread::~StopWaitingThread() {} void StopWaitingThread::stop() { m_exit = true; m_cv.notify_all(); } void StopWaitingThread::run() { // 这里建议用回调或轮询方式通知主线程 if (!m_parent) return; m_parent->stopPlay(); while (m_parent->isPlaying()) { if (m_exit) break; std::this_thread::sleep_for(std::chrono::milliseconds(2)); } if (!m_exit) { m_parent->startToPlay(m_file.c_str()); } // 可加日志 }