diff options
| -rw-r--r-- | GUI/GUI/GUI/Frame.cpp | 19 | ||||
| -rw-r--r-- | GUI/GUI/GUI/Frame.h | 1 |
2 files changed, 18 insertions, 2 deletions
diff --git a/GUI/GUI/GUI/Frame.cpp b/GUI/GUI/GUI/Frame.cpp index 2a143d1..a4c186b 100644 --- a/GUI/GUI/GUI/Frame.cpp +++ b/GUI/GUI/GUI/Frame.cpp @@ -1391,7 +1391,7 @@ Frame::Frame() app_c_ = std::make_unique<AppConfig>(transcribe_out_);
app_c_->Deserialize(AppConfig::kConfigPath);
- Bind(wxEVT_CLOSE_WINDOW, &Frame::OnExit, this, wxID_EXIT);
+ Bind(wxEVT_CLOSE_WINDOW, &Frame::OnExit, this);
Bind(wxEVT_BUTTON, &Frame::OnNavbarTranscribe, this,
ID_NAVBAR_BUTTON_TRANSCRIBE);
Bind(wxEVT_BUTTON, &Frame::OnNavbarUnity, this, ID_NAVBAR_BUTTON_UNITY);
@@ -1573,6 +1573,9 @@ void Frame::ApplyConfigToInputFields() void Frame::OnExit(wxCloseEvent& event)
{
OnAppStop();
+ OnUnityAutoRefreshStop();
+ // Allow default close processing to continue.
+ event.Skip();
}
void Frame::OnNavbarTranscribe(wxCommandEvent& event)
@@ -1915,8 +1918,20 @@ void Frame::OnUnityAutoRefresh(wxCommandEvent& event) }));
}
-void Frame::OnUnityAutoRefreshStop(wxCommandEvent& event) {
+void Frame::OnUnityAutoRefreshStop() {
run_unity_auto_refresh_ = false;
+ auto status = unity_auto_refresh_.wait_for(std::chrono::seconds(0));
+ if (status == std::future_status::ready) {
+ Log(transcribe_out_, "Auto-refresh thread already stopped.\n");
+ }
+ else {
+ unity_auto_refresh_.wait();
+ Log(transcribe_out_, "Stopped transcription engine\n");
+ }
+}
+
+void Frame::OnUnityAutoRefreshStop(wxCommandEvent& event) {
+ OnUnityAutoRefreshStop();
}
void Frame::OnListPip(wxCommandEvent& event)
diff --git a/GUI/GUI/GUI/Frame.h b/GUI/GUI/GUI/Frame.h index d8b13f4..2a538b4 100644 --- a/GUI/GUI/GUI/Frame.h +++ b/GUI/GUI/GUI/Frame.h @@ -106,6 +106,7 @@ private: void OnAppDrain(wxTimerEvent& event);
void OnGenerateFX(wxCommandEvent& event);
void OnUnityAutoRefresh(wxCommandEvent& event);
+ void OnUnityAutoRefreshStop();
void OnUnityAutoRefreshStop(wxCommandEvent& event);
void OnUnityParamChangeImpl();
void OnUnityParamChange(wxCommandEvent& event);
|
