mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
Ensure consistency when saving the current capture. Closes #2358
* If we save the current capture from a connection window we want to do that via the main window so the UI can be properly updated and so we can save it properly through the replay manager, so the old one can be removed safely.
This commit is contained in:
@@ -801,6 +801,16 @@ void LiveCapture::openCapture(Capture *cap)
|
||||
|
||||
bool LiveCapture::saveCapture(Capture *cap, QString path)
|
||||
{
|
||||
// if this is the current capture, do the save through the main window
|
||||
if(QString(m_Ctx.GetCaptureFilename()) == cap->path)
|
||||
{
|
||||
// if there's no target path, let the main window prompt for save.
|
||||
if(path.isEmpty())
|
||||
return m_Main->PromptSaveCaptureAs();
|
||||
else
|
||||
return m_Main->SaveCurrentCapture(path);
|
||||
}
|
||||
|
||||
if(path.isEmpty())
|
||||
{
|
||||
path = m_Main->GetSavePath();
|
||||
|
||||
@@ -1004,27 +1004,32 @@ bool MainWindow::PromptSaveCaptureAs()
|
||||
QString saveFilename = GetSavePath();
|
||||
|
||||
if(!saveFilename.isEmpty())
|
||||
{
|
||||
QString origFilename = m_Ctx.GetCaptureFilename();
|
||||
|
||||
bool success = m_Ctx.SaveCaptureTo(saveFilename);
|
||||
|
||||
if(!success)
|
||||
return false;
|
||||
|
||||
AddRecentFile(m_Ctx.Config().RecentCaptureFiles, saveFilename);
|
||||
PopulateRecentCaptureFiles();
|
||||
SetTitle(saveFilename);
|
||||
|
||||
for(LiveCapture *live : m_LiveCaptures)
|
||||
live->fileSaved(origFilename, saveFilename);
|
||||
|
||||
return true;
|
||||
}
|
||||
return SaveCurrentCapture(saveFilename);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MainWindow::SaveCurrentCapture(QString saveFilename)
|
||||
{
|
||||
QString origFilename = m_Ctx.GetCaptureFilename();
|
||||
|
||||
bool success = m_Ctx.SaveCaptureTo(saveFilename);
|
||||
|
||||
if(!success)
|
||||
return false;
|
||||
|
||||
AddRecentFile(m_Ctx.Config().RecentCaptureFiles, saveFilename);
|
||||
PopulateRecentCaptureFiles();
|
||||
SetTitle(saveFilename);
|
||||
|
||||
for(LiveCapture *live : m_LiveCaptures)
|
||||
live->fileSaved(origFilename, saveFilename);
|
||||
|
||||
ui->action_Save_Capture_Inplace->setEnabled(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::exportCapture(const CaptureFileFormat &fmt)
|
||||
{
|
||||
if(!m_Ctx.IsCaptureLocal())
|
||||
|
||||
@@ -115,6 +115,10 @@ public:
|
||||
void ShowLiveCapture(LiveCapture *live);
|
||||
void LiveCaptureClosed(LiveCapture *live);
|
||||
|
||||
bool PromptCloseCapture();
|
||||
bool PromptSaveCaptureAs();
|
||||
bool SaveCurrentCapture(QString saveFilename);
|
||||
|
||||
void RemoveRecentCapture(const QString &filename);
|
||||
|
||||
QMenu *GetBaseMenu(WindowMenu base, rdcstr name);
|
||||
@@ -279,8 +283,6 @@ private:
|
||||
void recentCaptureFile(const QString &filename);
|
||||
void recentCaptureSetting(const QString &filename);
|
||||
|
||||
bool PromptCloseCapture();
|
||||
bool PromptSaveCaptureAs();
|
||||
void OpenCaptureConfigFile(const QString &filename, bool exe);
|
||||
|
||||
QVariantMap saveState();
|
||||
|
||||
Reference in New Issue
Block a user