Skip to content

Commit a72067c

Browse files
committed
AsyncInvoke operations related to embedded dependencies
1 parent 3da3c24 commit a72067c

File tree

2 files changed

+41
-10
lines changed

2 files changed

+41
-10
lines changed

qrenderdoc/Code/CaptureContext.cpp

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2893,7 +2893,22 @@ void CaptureContext::EmbedDependentFiles()
28932893
return;
28942894

28952895
// Always operate on the capture access (local or remote)
2896-
m_Replay.GetCaptureAccess()->EmbedDependenciesIntoCapture();
2896+
QString tag = lit("replayEmbedDependenciesIntoCapture");
2897+
bool done = false;
2898+
2899+
Replay().AsyncInvoke(tag, [this, &done](IReplayController *) {
2900+
m_Replay.GetCaptureAccess()->EmbedDependenciesIntoCapture();
2901+
done = true;
2902+
});
2903+
2904+
// wait a short while before displaying the progress dialog
2905+
for(int i = 0; !done && (i < 100 || m_Replay.GetCurrentProcessingTag().isEmpty() ||
2906+
m_Replay.GetCurrentProcessingTag() == tag);
2907+
i++)
2908+
QThread::msleep(5);
2909+
2910+
ShowProgressDialog(m_MainWindow->Widget(), tr("Please wait, working..."),
2911+
[&done]() { return done; });
28972912

28982913
// Local replay
28992914
if(m_Replay.GetCaptureFile())
@@ -2923,7 +2938,22 @@ void CaptureContext::RemoveDependentFiles()
29232938
return;
29242939

29252940
// Always operate on the capture access (local or remote)
2926-
m_Replay.GetCaptureAccess()->RemoveDependenciesFromCapture();
2941+
QString tag = lit("replayRemoveDependenciesFromCapture");
2942+
bool done = false;
2943+
2944+
Replay().AsyncInvoke(tag, [this, &done](IReplayController *) {
2945+
m_Replay.GetCaptureAccess()->RemoveDependenciesFromCapture();
2946+
done = true;
2947+
});
2948+
2949+
// wait a short while before displaying the progress dialog
2950+
for(int i = 0; !done && (i < 100 || m_Replay.GetCurrentProcessingTag().isEmpty() ||
2951+
m_Replay.GetCurrentProcessingTag() == tag);
2952+
i++)
2953+
QThread::msleep(5);
2954+
2955+
ShowProgressDialog(m_MainWindow->Widget(), tr("Please wait, working..."),
2956+
[&done]() { return done; });
29272957

29282958
// Local replay
29292959
if(m_Replay.GetCaptureFile())

qrenderdoc/Windows/MainWindow.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,17 +3066,18 @@ void MainWindow::loadLayout_triggered()
30663066

30673067
void MainWindow::updateToolsMenuOptions()
30683068
{
3069-
bool hasEmbeddedDependencies = false;
3070-
bool hasPendingDependencies = false;
3071-
30723069
if(m_Ctx.Replay().GetCaptureAccess())
30733070
{
3074-
hasEmbeddedDependencies = m_Ctx.Replay().GetCaptureAccess()->HasEmbeddedDependencies();
3075-
hasPendingDependencies = m_Ctx.Replay().GetCaptureAccess()->HasPendingDependencies();
3076-
}
3071+
m_Ctx.Replay().AsyncInvoke([this](IReplayController *) {
3072+
bool hasEmbeddedDependencies = m_Ctx.Replay().GetCaptureAccess()->HasEmbeddedDependencies();
3073+
bool hasPendingDependencies = m_Ctx.Replay().GetCaptureAccess()->HasPendingDependencies();
30773074

3078-
ui->action_EmbedExternalFiles->setEnabled(!hasEmbeddedDependencies && hasPendingDependencies);
3079-
ui->action_RemoveExternalFiles->setEnabled(hasEmbeddedDependencies);
3075+
GUIInvoke::call(this, [this, hasEmbeddedDependencies, hasPendingDependencies]() {
3076+
ui->action_EmbedExternalFiles->setEnabled(!hasEmbeddedDependencies && hasPendingDependencies);
3077+
ui->action_RemoveExternalFiles->setEnabled(hasEmbeddedDependencies);
3078+
});
3079+
});
3080+
}
30803081
}
30813082

30823083
void MainWindow::closeEvent(QCloseEvent *event)

0 commit comments

Comments
 (0)