174257bdf8
It is only possible to remove a layer from the order.layer_list of a screen, when ivi_layout_screen_set_render_order is called with an empty array. Therefore, list of layers are cumulated if the API is called many times with different list of layers. Change how the flags are set: - Introduce the dirty parameter for triggering the render order change. - IVI_NOTIFICATION_REMOVE/ADD flags are set only at commit_screen_list. Checking wl_list_empty() on a link offers no information: if it returns true, wl_list_remove() is safe to do. If it returns false, you still do not know if wl_list_remove() is safe; the link could be part of a list, or the link could be "uninitialized" (e.g. just wl_list_remove()'d). (From Pekka Paalanen's comment at http://lists.freedesktop.org/archives/wayland-devel/2015-August/023987.html). Calling wl_list_init just before wl_list_insert is redundant. Because the links of the list are not read before it is overwritten by wl_list_insert. Use assert to control if the ivilayer->order.surface_list is empty. Signed-off-by: Emre Ucan <eucan@de.adit-jv.com> [Pekka: line-wrapped commit message] Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> |
||
---|---|---|
.. | ||
.gitignore | ||
hmi-controller.c | ||
input-panel-ivi.c | ||
ivi-layout-export.h | ||
ivi-layout-private.h | ||
ivi-layout-transition.c | ||
ivi-layout.c | ||
ivi-shell.c | ||
ivi-shell.h | ||
README | ||
weston.ini.in |
In-vehicle infotainment (information and entertainment) graphical environment support modules for Weston IVI-shell is an alternative shell for Weston, a Wayland display server. Window management and application interaction with the display server are very different to that of a normal desktop, which is why this is a separate shell and not an extension to the desktop-shell suite with xdg_shell. As such, applications need to be specifically written to use IVI-shell. IVI-shell contains two main features: - Common layout library for surface, which allow ivi-shell developer to develop own shell, linking Common layout library. For the time being, the library refers Genivi ilm interface. http://projects.genivi.org/wayland-ivi-extension/ - Extension protocol; ivi-application to tie wl_surface and a given ID. With this ID, shell can identify which wl_surface is drawn by which application. In in-vehicle infortainment system, a shell has to update a property of a wl_surface. E.g. there may be a use case when vehicle starts to move, the wl_surface drawn by Car navigation is expected to move top of surfaces. The actual software components delivered with Weston are: - ivi-application.xml: Wayland protocol extension for IVI-applications; the public shell protocol (the same concept as xdg_shell). Implemented by ivi-shell.so. - ivi-shell.so: A Weston shell module that implements ivi-application.xml interfaces. Loads ivi-layout.so. - ivi-layout.so: Implements the IVI window management concepts: Screen, Layer, Surface, groups of Layers, groups of Surfaces, see: http://projects.genivi.org/ivi-layer-management/node/13 Offers a stable API for writing IVI-controller modules like hmi-controller.so against the IVI concepts. In other words, it offers an API to write IVI window manager modules. - hmi-controller.so: A sample implementation of an IVI-controller module, usually replaced by IVI system vendors. Uses ivi-layout.so to perform essentially window manager tasks. This implementation keeps all window management inside the module, while IVI-systems may use another module that exposes all window management via Wayland or other protocol for an external process to control: http://git.projects.genivi.org/?p=wayland-ivi-extension.git;a=summary - ivi-hmi-controller.xml: Wayland protocol extension for IVI display control; the private shell protocol for weston-ivi-shell-user-interface client (the same concept as desktop-shell.xml). Implemented by hmi-controller.so, and usually replaced by IVI system vendors. - weston-ivi-shell-user-interface: A sample implementation of an IVI shell helper client, usually replaced by IVI system vendors. A helper client for basic display content, similar to weston-desktop-shell. How to compile: same as weston. To disable, use option: --disable-ivi-shell for configure. How to configure weston.ini: reference ini file will be generated in <build_dir>/ivi-shell. How to run: same as weston. exec weston. How to use UI: http://lists.freedesktop.org/archives/wayland-devel/attachments/20140625/abbfc064/attachment-0001.png