> I'm not clear on some of the semantics - e.g. what does this do and why does
> it need a surface:
>
> 266 + virtual std::shared_ptr<InternalClient>
> create_internal_client(std::shared_ptr<frontend::Surface> const&) = 0;
>
> But it seems to work without anything that leaps out as ugly.
the drivers need to understand our surfaces to use them internally. With mesa/gbm platform, we can just use the mf::Surface interface directly, because we control those drivers. With Android, we wrap the mf::Surface interface in an interface that driver can understand, and then give that out to our clients. essentially, what the user of this function gets back is a platform-friendly representation of the mf::Surface that they can plug into their egl driver
> I'm not clear on some of the semantics - e.g. what does this do and why does ptr<InternalCli ent> internal_ client( std::shared_ ptr<frontend: :Surface> const&) = 0;
> it need a surface:
>
> 266 + virtual std::shared_
> create_
>
> But it seems to work without anything that leaps out as ugly.
the drivers need to understand our surfaces to use them internally. With mesa/gbm platform, we can just use the mf::Surface interface directly, because we control those drivers. With Android, we wrap the mf::Surface interface in an interface that driver can understand, and then give that out to our clients. essentially, what the user of this function gets back is a platform-friendly representation of the mf::Surface that they can plug into their egl driver