|
|
@@ -33,9 +33,6 @@ PlayerController::PlayerController(QWidget* parent)
|
|
|
|
|
|
PlayerController::~PlayerController()
|
|
|
{
|
|
|
- if (m_initThread.joinable()) {
|
|
|
- m_initThread.join();
|
|
|
- }
|
|
|
stopPlay();
|
|
|
}
|
|
|
|
|
|
@@ -110,43 +107,13 @@ void PlayerController::startToPlay(const QString& file)
|
|
|
m_state = PlayerState::Initializing;
|
|
|
m_currentFile = file;
|
|
|
|
|
|
- // 启动异步初始化线程
|
|
|
- if (m_initThread.joinable()) {
|
|
|
- m_initThread.join();
|
|
|
- }
|
|
|
- m_initThread = std::thread(&PlayerController::asyncInit, this, file);
|
|
|
+ // 直接进行初始化,无需异步
|
|
|
+ bool success = !file.isEmpty();
|
|
|
+ onAsyncInitFinished(file, success);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void PlayerController::asyncInit(const QString& file)
|
|
|
-{
|
|
|
- bool success = false;
|
|
|
- QElapsedTimer timer;
|
|
|
- timer.start();
|
|
|
- qCDebug(playerControllerLog) << "[Init] asyncInit started";
|
|
|
|
|
|
- // 检查文件有效性
|
|
|
- if (file.isEmpty()) {
|
|
|
- qCWarning(playerControllerLog) << "Filename is invalid. Please select a valid media file.";
|
|
|
- success = false;
|
|
|
- } else {
|
|
|
- // 检查文件是否存在和可访问
|
|
|
- // QFileInfo fileInfo(file);
|
|
|
- // if (!fileInfo.exists() || !fileInfo.isReadable()) {
|
|
|
- // qCWarning(playerControllerLog)
|
|
|
- // << "File does not exist or is not readable:" << toNativePath(file);
|
|
|
- // success = false;
|
|
|
- // } else {
|
|
|
- // qCInfo(playerControllerLog) << "File check passed:" << toNativePath(file);
|
|
|
- // success = true;
|
|
|
- // }
|
|
|
- success = true;
|
|
|
- }
|
|
|
-
|
|
|
- m_initSuccess = success;
|
|
|
- onAsyncInitFinished(file, success);
|
|
|
- qCDebug(playerControllerLog) << "[Init] asyncInit finished in " << timer.elapsed() << " ms";
|
|
|
-}
|
|
|
|
|
|
void PlayerController::onAsyncInitFinished(const QString& file, bool success)
|
|
|
{
|
|
|
@@ -1045,13 +1012,6 @@ void PlayerController::dump() const
|
|
|
qCInfo(playerControllerLog) << "StartPlayThread: null";
|
|
|
}
|
|
|
|
|
|
- // 检查初始化线程
|
|
|
- if (m_initThread.joinable()) {
|
|
|
- qCInfo(playerControllerLog) << "InitThread: joinable (running)";
|
|
|
- } else {
|
|
|
- qCInfo(playerControllerLog) << "InitThread: not joinable (stopped or not started)";
|
|
|
- }
|
|
|
-
|
|
|
// 检查事件线程
|
|
|
if (m_eventThread.joinable()) {
|
|
|
qCInfo(playerControllerLog) << "EventThread: joinable (running)";
|