View on GitHub

cat-plugin-player

cat-plugin-player

ADR 0004: Shu の Windows CLAP GUI の表示失敗を限定対応する

問題と確認した事実

effect の Shu で Show UI を押すと、一瞬表示された後にウィンドウが消える。 userからは、中身は表示されていたが小さいウィンドウで見切れていたように見えた、との補足があった。

既存の shim DLL とインストール済み Shu を使って再現したところ、GUI作成は成功し、 uh_ui_show() が表示失敗 UH_ERR_SHOW_UI (-4) を返した。 ホストは親ウィンドウを先に表示し、showUI() が失敗するとその親を隠すため、一瞬で消える。

CLAP API の直接呼び出しでも以下を確認した。

CLAP GUI仕様 は show() の成功時に true を返すことを要求する。 Shu の内部ソースは確認していないため、失敗を返す内部原因までは断定しない。

決定

Windows / CLAP / plugin ID audio.mikey.Shu に限定して、showUI() が失敗しても、 ホストの親ウィンドウと、その直下の非ゼロサイズの子ウィンドウが実際に可視なら表示成功と扱う。 GUI作成失敗、子ウィンドウのない場合、他の製品・形式は従来どおりエラーを返して親を隠す。 通常の showUI() が成功した場合は例外処理を使わない。

固有処理は shu_ui.h に集約し、 共通の uh_ui_show() から呼ぶ。HWNDの検査が必要なため、Rustの固有処理とは別に ネイティブの shim/plugin_specific/ を設ける。 依存checkout、UAPMD、プラグイン本体、ユーザー設定・stateは変更しない。

親の表示順序や、取得したサイズをプラグインへ再設定する試行は改善しなかったため撤回した。 サイズ調整は既存のresize通知と getUISize() による親ウィンドウの調整を引き続き使う。 Hide UI・閉じるボタンでは親を隠し、再表示時には同じGUIを使う。

検証・制限・撤去条件