macOS版 起動時に"Unsupported bitmap format"エラーが発生する
App Storeでの却下理由と、#39716の報告のいずれも、macOS Catalina (10.15)で問題が発生している。 しかし、Mac mini Late 2014 に Catalina を導入した環境では、当該事象は発生していない。
起動直後にエラーが発生している前提で、エラーメッセージから判断できる情報は以下の通り。
"MIDITrail"のロゴを表示するため、文字列を描画したビットマップを作成してテクスチャを生成するとき、 ビットマップのピクセルデータフォーマットがサポートしていない値であった。
エラー発生までの処理フローは以下の通り。
(3)において、ビットマップのピクセルデータフォーマットがサポートしていない値であった。 24bit(RGB)または32bit(RGBA)を期待しているところ、64bitになっていたため、 サポート対象でないとしてエラーと判定した。
以下のページで、同様の問題が報告されていた。 こちらはCatalina(10.15)と新しいMacBookの組み合わせで発生している。
NSImage to Texture https://stackoverflow.com/questions/58403209/nsimage-to-texture
MTFontTexture::CreateTexture にて、文字列を描画したビットマップを生成するとき、 NSBitmapImageRep の initWithFocusedViewRect メソッドを利用して、 すでに文字列がレンダリングされた結果からビットマップを生成していた。
pBitmap = [[NSBitmapImageRep alloc] initWithFocusedViewRect:rect];しかし、initWithFocusedViewRect メソッドは非推奨になっており、 OSの仕様変更によって、特定の条件(おそらくMacの機種に依存)で動作結果が変わってしまったと推測する。 エラーを再現できる環境がないため、断定ができない。
MTFontTexture::CreateTexture にて、initWithFocusedViewRect メソッドの利用を取りやめる。
文字列の描画処理の前に、NSBitmapImageRep の initWithBitmapDataPlanes メソッドを用いて、 ピクセルデータフォーマットを指定してビットマップを作成する。 作成したビットマップをカレントコンテキストに指定してから、文字列の描画処理を行う。 これにより、常に期待するピクセルデータフォーマットでビットマップが作成されるようにする。
App Store に Ver.1.3.1 を提出したところ、却下された。
却下の理由は、MIDITrail起動時に以下のエラーが発生するため。
ユーザからも同様の報告があり、チケット登録されている。