diff --git a/src/rtsp_manager.cpp b/src/rtsp_manager.cpp index 6e86520..e8347e2 100644 --- a/src/rtsp_manager.cpp +++ b/src/rtsp_manager.cpp @@ -239,20 +239,20 @@ void RTSPManager::mount_camera(const Camera &cam) g_main_context_invoke(main_context, [](gpointer data) -> gboolean { return RTSPManager::mount_camera_in_main(data); }, camCopy); - - // === ★ 新增:等待 on_media_unprepared 全部完成 === - std::unique_lock lk(stop_mutex); - stop_cv.wait(lk, [&] - { - auto it = stopping_count.find(cam.name); - return it == stopping_count.end() || it->second == 0; }); } void RTSPManager::unmount_camera(const Camera &cam) { Camera *camCopy = new Camera(cam); + g_main_context_invoke(main_context, [](gpointer data) -> gboolean { return RTSPManager::unmount_camera_in_main(data); }, camCopy); + + std::unique_lock lk(stop_mutex); + stop_cv.wait(lk, [&] + { + auto it = stopping_count.find(cam.name); + return it == stopping_count.end() || it->second == 0; }); } // 是否正在流