2011/06/04

SurfaceFlingerが落ちるとmediaserverが落ちる

今、手元で実現できる構成は、こうなっている。
  1. TI-kernel, TI-android : 起動する(DVI)
  2. my-kernel, my-android : 起動する(DisplayLink)
  3. TI-kernel, my-android : 起動しない
  4. my-kernel, TI-android : 起動しない
4は、mediaserverが再起動を繰り返しているためだ。

# ps
media     828   1     16908  4772  ffffffff afd0b6fc S /system/bin/mediaserver

init: untracked pid 828 exited


しかしlogcatを見ると、どうもframebufferまわりらしい。
SurfaceFlingerがエラーを出したら、mediaserverが落ちるんだ、という認識がなかった。

I/SurfaceFlinger(  876): SurfaceFlinger is starting
I/SurfaceFlinger(  876): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...
E/FramebufferNativeWindow(  876): couldn't open framebuffer HAL (No such device)



つまりTI-android環境は、SGXを動かさないと起動しないようなのだ。
mediaserver=ALSA、だと思っていたので、こっちを気にしていたのだ。

Unable to attach mixer to device AndroidPlayback: No such file or directory
Unable to attach mixer to device AndroidCapture: No such file or directory

しかしこいつは、TI環境でも出ていて、ちゃんと起動して動いている。
なので、関係ないようだ。


でもなあ・・・ソースを見ると、単にfb0をオープンしているだけっぽいんだが。
ものはあるし、崩れてはいるがdroid氏もDisplayLinkに出ている(何の画面だ?)。
そしてinit.rcでSGXを起動しないようにしていると、TI-kernelでも同じ現象なのだ。

# ls -l /dev/graphics/fb0

crw-rw---- root graphics 29, 0 2000-01-01 00:00 fb0

つまり、fb0以外のものも使っているということか。
SGXありとなしで/devを比較すると、違いはこれだ。

crw-rw-rw- root     root     250,   0 1970-01-01 00:00 pvrsrvkm

これがないので、SurfaceFlingerが落ちているのだな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。