Skip to content

Comments

[WIP] Fix UI freeze during cancel and retry actions#90

Closed
Copilot wants to merge 1 commit intomasterfrom
copilot/fix-ui-freeze-on-cancel-retry
Closed

[WIP] Fix UI freeze during cancel and retry actions#90
Copilot wants to merge 1 commit intomasterfrom
copilot/fix-ui-freeze-on-cancel-retry

Conversation

Copy link
Contributor

Copilot AI commented Jan 22, 2026

Thanks for asking me to work on this. I will get started on it and keep this PR's description up to date as I form a plan and make progress.

Original prompt

問題

生成中にキャンセルや再試行ボタンを押すと、UIが5秒間フリーズしてしまいます。

原因

複数のキャ��セルダイアログクラスのDoCancel()およびDoRetry()メソッドで、以下のコードが不要な5秒の待機を引き起こしています:

m_cancellation_manager.SetCompleted();
// スレッドを待つ(タイムアウト付き)。
if (!m_cancellation_manager.WaitForCompletion(5000)) {
    // タイムアウトの場合は通常の待機。
    XgWaitForThreads();
}

このWaitForCompletion(5000)5秒のタイムアウトを持ち、その間UIがブロックされます。

解決策

WaitForCompletion(5000)の呼び出しは実質的に不要です。理由:

  1. タイムアウトした場合、結局XgWaitForThreads()が呼ばれる
  2. 成功した場合も、その後すぐにXgCloseThreads()でスレッドを閉じる
  3. キャンセルフラグ(xg_bCancelled)を設定した後は、直接XgWaitForThreads()を呼べば十分

修正対象ファイル

以下のファイルで同じパターンの修正が必要です:

  1. XG_CancelSolveDialog.hpp

    • DoCancel()メソッド
    • DoRetry()メソッド
  2. XG_CancelSmartSolveDialog.hpp

    • DoCancel()メソッド
    • DoRetry()メソッド
  3. XG_CancelGenBlacksDialog.hpp

    • DoCancel()メソッド
  4. XG_CancelSolveNoAddBlackDialog.hpp (存在する場合)

    • DoCancel()メソッド
    • DoRetry()メソッド

修正内容

各ファイルで、以下の行を削除:

m_cancellation_manager.SetCompleted();
// スレッドを待つ(タイムアウト付き)。
if (!m_cancellation_manager.WaitForCompletion(5000)) {
    // タイムアウトの場合は通常の待機。
    XgWaitForThreads();
}

これを以下に置き換え:

// スレッドを待つ。
XgWaitForThreads();

期待される効果

  • キャンセル・再試行ボタン押下時のUIフリーズが解消される
  • ユーザー体験が大幅に向上する
  • コードがシンプルになり保守性が向上する

注意事項

XG_CancellationManagerクラス自体は他の用途(RestoreOnCancel()など)で使用されているため、削除せず残しておいてください。WaitForCompletion()メソッドの呼び出しのみを削除します。

This pull request was created from Copilot chat.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants