2017-02-26 6 views
1

長い時間のlurker(多くの答えが見つかりました!)、そして最後に私自身の質問で申し込んだ。NSWindowは私の不透明なNSViewの背景を引き継いでいます

VSTオーディオプラグインで作業していて、ホストから渡されたウィンドウに問題があります。階層は次のとおりです:NSWindow - > NSView - > NSView - > myNSViewSubclass、追加されたもの:

[親addSubview:myNSView];

myNSViewSubclassは親NSViewと同様に不透明であると宣言されています。しかし、NSWindowは不透明であるにもかかわらず、その背景を自分の空間に描き続けます。私はNSWindowを不透明ではないものに設定しました。

私は子ウィンドウを試しましたが、同じこともします。私が試したすべてのオーディオホストは同じ動作を示します。 NSWindowの振る舞いによって何かが変わってしまい、バックグラウンドが描画されないようにするための設定が見つからず、子供の不透明度を無視する理由もありません。

私はマーベリックスで、すべてが完全に機能していました。だから、AU版のコードを追加する準備をするために、私はSierraに更新して、今この問題を抱えています。

現時点では、私の回避策はウィンドウ全体を再描画することですが、実行可能な間はCPUが非常に高価です。

ありがとうございます!

答えて

0

この問題の解決策ではありませんが、使用可能な回避策です。私は、NSWindowにneedsDisplayWithRectを処理するために1ピクセルを与えました:そして今、私が汚れているとマークしたrectを更新し続けることができます。

ウィンドウがフォーカスを失ったときなど、ウィンドウ全体を再描画する必要があるときにも、特殊なケースをキャッチする必要がありました。

これは、私が元々持っていたものよりも数%のCPUですが、設定した制限内にあります。

でも、適切なNSWindowの動作を取り戻すことは大好きです。

関連する問題