In this chapter, the ongoing problems and limitations of Wayland IVI Extension are discussed, and some solutions to these problems are proposed.
Dependence between ilmClient and ilmControl
It is not possible to use ilmClient and IlmControl separetely. An application must link both of them. There are two sub-problems which cause this issue:
Initialization problem
An application (client or HMI) initializes Wayland IVI Extension with ilm_init or ilm_initWithNativedisplay APIs. Then, these APIs initializes ilmClient and ilmControl. Therefore, it is not possible to separately initialize ilmClient or ilmControl.
Header files problem
Some APIs are declared in ilm_client.h, but they are implemented at ilmControl. These are:
- ilm_surfaceGetVisibility
- ilm_surfaceGetDimension
- ilm_layerRemoveSurface
- ilm_layerAddSurface
- ilm_getPropertiesOfSurface
- ilm_surfaceSetSourceRectangle
Furthermore, some of these APIs are required at both sides with different behavior. A client should get visibility of its surface, but it should not get visibility of a surface of another client. On the other hand, a HMI may also create or remove surfaces.
Missing Functionality
- Multi-screen support is missing.
- Inconsistent Error Handling & Missing Error logging
- Some APIs do not work at all. Some do not work as intended. Some others have dependency to weston and hardware, which we cannot control.
- Missing APIs
Not Working at all
We have to discuss to remove or implement them:
- ilm_takeLayerScreenshot
- ilm_getNativeHandle
- ilm_surfaceRemoveNativeContent
- ilm_surfaceSetNativeContent
- ilm_surfaceInitialize
Not Working as intended
These problems should be fixed:
- Source clipping is not working by ilm_surfaceSetSourceRectangle.
- A surface cannot be removed with ilm_surfaceRemove, if the application has not created it.
- A surface cannot be removed from the rendering order of a layer with ilm_layerSetRenderOrder.
- A layer cannot be removed from the rendering order of a screen with ilm_displaySetRenderOrder.
- Orientation APIs do not work as described at http://projects.genivi.org/wayland-ivi-extension/layer-manager-apis
Weston depended APIs
Users should be informed about these limitations, e.g.:
- Orientation APIs do not work at all, if weston is used with framebuffer backend.
- Multiple input focus does not work, if weston is used with x11 backend.
Missing APIs
ilm_setSynchronizedSurfaces and ilm_removeSynchronizedSurfaces are neither declared nor implemented in Wayland IVI Extension. They are used to couple surfaces in the given list, thereby surfaces are composited synchronously.
In my opinion, these APIs have valid use cases, and they should be implemented. They can be realized with weston subsurfaces feature.