| Summary: | Сигнал recordingSaved может отправляться до создания временного файла | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vladislav Glinkin <glinkinvd> |
| Component: | spectacle | Assignee: | Sergey V Turchin <zerg> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | zerg |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
(Ответ для Vladislav Glinkin на комментарий #0) > Если очень быстро записать, сохранить, а потом снова записать и сохранить > видео - может возникнуть ситуация, когда сигнал `recordingSaved` > отправляется раньше, чем создаётся временный файл. Для пользователя проявляется как сообщение об ошибке: "Не удалось экспортировать видео: адресом временного файла должен быть существующий временный файл" |
Версия пакета: spectacle-6.6.5-alt2 Если очень быстро записать, сохранить, а потом снова записать и сохранить видео - может возникнуть ситуация, когда сигнал `recordingSaved` отправляется раньше, чем создаётся временный файл. Предположительные решения: 1) Добавление задержки перед вызовом exportVideo ``` --- a/spectacle/src/SpectacleCore.cpp +++ b/spectacle/src/SpectacleCore.cpp @@ -414,7 +414,9 @@ SpectacleCore::SpectacleCore(QObject *parent) }); connect(videoPlatform, &VideoPlatform::recordingSaved, this, [this](const QUrl &fileUrl) { // Always try to save. Needed to move recordings out of temp dir. - ExportManager::instance()->exportVideo(autoExportActions() | ExportManager::Save, fileUrl, videoOutputUrl()); + QTimer::singleShot(100, this, [this, fileUrl]() { + ExportManager::instance()->exportVideo(autoExportActions() | ExportManager::Save, fileUrl, videoOutputUrl()); + }); }); connect(videoPlatform, &VideoPlatform::recordingCanceled, this, [this] { if (m_startMode != StartMode::Gui || !m_returnToViewer || isGuiNull()) { ``` 2) Где-то в исходном коде отслеживать состояние файла, перед отправкой сигнала `recordingSaved` - https://git.altlinux.org/gears/s/spectacle.git?p=spectacle.git;a=blob;f=spectacle/src/Platforms/VideoPlatformWayland.cpp;hb=42b71504528f324b539b8d3c3bceef3103f4dc1e#l311