This isn't really supported -- with a SurfaceView, the creator/manager of the surface is the window manager, and the app is the one drawing into the surface. When you hand that surface to another process, you end up with two drawing clients, which may or may not work as luck may have it, but is not something that we will guarantee to work at this point and so is best avoided.
Fwiw, processes in the emulator are not fake, it is emulating a real device with a real linux kernel with real processes. For purposes here, the big difference between them is that the emulator doesn't have any graphics hardware acceleration so all drawing is done in software, while the G1 does have an accelerator. This may be what is causing the difference, though I don't know enough about this area of the system to say. On Mon, May 25, 2009 at 1:54 AM, Mick <[email protected]> wrote: > > Hello everyone, > > I'm researching into the Android graphics and am having problems with > the following scenario: > 1. In process A I inherit /SurfaceView/, implement / > SurfaceHolder.Callback/ and override its surfaceCreated() method. > 2. Meanwhile I have another process B registering as a binder service > 3. When /surfaceCreated(SurfaceHolder holder)/ gets called I extract > the surface from the SurfaceHolder, and pass it to the binder service, > in the remote process. > 4. I read the process using /surface->readFromParcel()/ > > At this point, *in the emulator*, the surface I get in process B is > valid, and I manage to write to the screen just fine. > However, when running this on the device I still get that /surface- > >isValid() == true/, but cannot get a /surface->lock()/. Instead, when > attempting to lock(), Iogcat/ddms shows a "cannot map BpMemoryHeap" > error with EINVAL, and some fd value. > > I'm guessing that somehow an fd mapped by the surface's heap is > invalidated when passing the surface via binder, > and that this somehow works in the emulator, since it works with > threads, and not real processes. > > > Any help would be most appreciated > Thanks, > Mick Halsband > > > > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" 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-developers?hl=en -~----------~----~----~----~------~----~------~--~---

