Skip to content

fix: Apple Silicon環境でのGUIスレッドフリーズ修正#13

Open
naolab wants to merge 1 commit into
rotejin:mainfrom
naolab:fix/apple-silicon-gui-threading
Open

fix: Apple Silicon環境でのGUIスレッドフリーズ修正#13
naolab wants to merge 1 commit into
rotejin:mainfrom
naolab:fix/apple-silicon-gui-threading

Conversation

@naolab

@naolab naolab commented Jun 7, 2026

Copy link
Copy Markdown

変更内容

  • macOS (Apple Silicon) 環境でGUIが「解析中」のまま固まる問題を修正
  • UIタスクキュー方式を導入し、バックグラウンドスレッドからのUI更新を安全に処理
  • cv2.VideoCapture のAVFoundationデッドロックを回避
  • 解析進捗をリアルタイムでGUIログに表示するよう改善

変更理由

  • macOS Tkinter の制約により、バックグラウンドスレッドから after(0,...) を呼んでも
    UIが更新されないデッドロックが発生していた
  • Apple Silicon 環境での動作確認・修正

動作確認

  • ローカルで動作確認済み(Apple Silicon / macOS)
  • 解析→キャリブ→mouth_track.json 出力まで完走確認
  • 既存機能に影響なし
  • エラー・警告なし

変更内容:

mouth_track_gui/app.py
- after(0, ...) をスレッドから呼ぶ問題(macOS Tkinter deadlock)を修正
- UIタスクキュー(queue.Queue)を導入し50ms間隔でポーリングする安全な更新機構に変更
- _poll_ui_queue() / _insert_log() を追加
- log(), _show_error(), _progress_*(), _set_running() 等を ui_queue 経由に統一

mouth_sprite_extractor_gui.py
- 解析完了通知を after(0,...) から _poll_analyze_done() ポーリング方式に変更
- 解析開始前にcv2.VideoCaptureを解放しAVFoundationデッドロックを回避

motionpngtuber/mouth_sprite_extractor.py
- _run_face_detector() をsubprocess.run からPopen に変更し
  解析進捗をリアルタイムでGUIログに流せるよう改善

Co-authored-by: Gemini <gemini@google.com>
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.

1 participant