I need to change the video hardware in an android system on the fly and I need the system, and any running applications, to recognize any change in video size, format and buffers. I have been browsing the source for the SurfaceFlinger, Clinet, Layer, DisplayHardware and EGLDisplaySurface classes, but have been unable to figure out how to do this. Can anyone give me a hint?
I created a second frame buffer driver in the kernel mapped to /dev/ graphics/fb1 I modified DisplayHardware and EGLDisplaySurface so that EGLDisplaySurface uses a frame buffer based on the screen index that SurfaceFlinger passes to DisplayHardware (i.e. if DisplayHardware is passed 0 for the dpy parameter of its constructor then EGLDisplaySurface will use fb0). I created a second GraphicPlane in SurfaceFlinger using a second DisplayHardware object mapped to fb1 through EGLDisplaySurface . I added a command to SurfaceFlinger's onTransact method to implement the switch. When the command to switch comes in I initialize the second display if it has not been initialized before. Then I enumerate the existing Layer objects calling each of their setSizeChanged and doTransaction methods. I then call DisplayHardware's makeCurrent method for the new display. Am I headed down the wrong path here or am I just missing a step (or two, or ...)? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "android-framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-framework?hl=en -~----------~----~----~----~------~----~------~--~---
