NDK今週は夏ばてのせいなのか頭と喉と首筋が痛いので今回は少し前の事を記事にします。Level9以上(>Android2.3)と言う事になっています。khronosのホームページでeglReleaseThreadのマニュアルを探すとEGLバージョン1.2以上言う事になっています。Level16(Android4.1.2)でEGL1.4でもeglReleaseThreadを使えないのが有りました。Androidではよくある事のような気もするんですけどね。駄目な端末でeglReleaseThreadを呼び出すとそれ以降のEGL関係の呼び出しが軒並みずっこけるみたいです。デバッグしていないのでもしかしたら自分が使い方を間違えているだけなのかもしれないけど。ネットをウロウロすると、非公式にはeglReleaseThreadはAndroid4.2以上と書いてあるところが有りました。ここでも、eglReleaseThreadに関係してそうなクラッシュの話がネットにいっぱいあるんですよね。そもそも、eglReleaseThreadってなんやねん?khronosのWebサイトでマニュアルを斜め読みしたところでは、スレッド毎に保持しているEGLステートをクリアするAPI・・・マルチスレッドでEGLを使うときのクリーンアップ関数みたいです。どのスレッドでもいつでも呼んで良いし、1つのスレッドで複数回呼んでも良い。listsのようなリソースも影響を受けない。・・・と言う事らしいです。コード初期化とかは省略して肝心の終了処理の部分を載せてみます。NDKなのでC/C++ですからね。EGL1.4)が駄目でした。́●)って言う気も・・・この間のMediaCodecInfo#getCapabilitiesForTypeに続けて2連チャンです。GL_INVALID_OPERATIONってのに埋め尽くされました。アプリ自体はハングアップしました。━━(;゚Д゚)━━ン!!あっでもハングアップとエラーメッセージ連発自体はアプリの実装由来かもしれないです。リリース版でコンパイルしたのでEGL/OpenGL|ES関係のエラーチェックは素通りなのが多いので。エラーが返って来た時点で自分で強制終了すればハングアップとエラーメッセージ連発は回避できそうですが、アプリとしては役に立ちません。EGLの終了処理後にスレッド自体も終了して、次使うときにはまた最初から初期化しているのにぃ〜。́●)解決策eglReleaseThreadを呼び出さない。後は仮に前のステートが残ってても問題ないように常にEGL/OpenGL|ESをフルに初期化する事なのかな?でもええのか?グルグル先生に聞いて出てきたeglReleaseThreadに関係してそうなクラッシュの話で解決策が載ってるのはなさそうでした。英語以外のは読んでないけど。Androidのシステム内でも使ってるみたいだし、回避する方法があるとは思うんだよなぁ〜。テスト用のプロジェクトを作ればUSBでadb繋げるからデバッグ出来るんだけど、そこまでの気力が無い・・・まぁ昔は無かった訳だし入れてなかったし気にしないことにしよう(^o^)/誰か詳しい人教えて下さいm(__)mと言う事で、今回はおしまい。reserved.%d人のブロガーが「いいね」をつけました。このサイトでは利便性の向上の為に、機能的なクッキーと外部スクリプトを使用しています。同意しますプライバシー設定広告プライバシー設定このサイトでは利便性の向上の為に、機能的なクッキーと外部スクリプトを使用しています。どのクッキーとスクリプトが使用され、どのように訪問に影響を与えるかを左に示します。設定はいつでも変更できます。あなたの選択はサイトへの訪問に悪い影響を与えません。これらの設定は、現在使用しているブラウザとデバイスにのみ適用されます。広告このサイトでは、サイトや広告を改善するためにCookieを利用することがあります。本サイトを利用することでCookieの仕様に同意するものとします。