ivi-shell: a reference implementation how to use ivi-layout internal APIs

- hmi-controller.so
- introduces hmi-controller.so

The library is used to manage layout of surfaces/layers. Layout change
is triggered by ivi-hmi-controller protocol, ivi-hmi-controller.xml. A
reference how to use the protocol, see ivi-shell-user-interface.c.

In-Vehicle Infotainment system usually manages properties of
surfaces/layers by only a central component which decide where
surfaces/layers shall be. This is differenct use case from desktop
style; each application can request property of its window via xdg-shell
protocol, like fullscreen and set its to top level. In-Vehicle
Infortainment system doesn't allow each application to chagen them from
its application because of safty reasons. The concept of layer is
simillar with a use case of cursor layer of Destop. For In-Vehicle
Infortainment system, it is extended to all applications. For example,
rearview camera application is assigned to a layer to group several
surfaces, e.g. captured image and drawing lines separately. Central
manaegr can control property of the layer of rearview camera.

This reference show examples to implement the central component as a
module of weston.

Default Scene graph of UI is defined in hmi_controller_create. It
consists of
- In the bottom, a base layer to group surfaces of background, panel,
  and buttons
- Next, a application layer to show application surfaces.
- Workspace background layer to show a surface of background image.
- Workspace layer to show launcher to launch application with icons.
  Paths to binary and icon are defined in weston.ini. The width of
  this layer is longer than the size of screen because a workspace
  has several pages and is controlled by motion of input.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Nobuhiko Tanibata 10 years ago committed by Pekka Paalanen
parent 68cfabb89b
commit 4f6853b271
  1. 16
      Makefile.am
  2. 1718
      ivi-shell/hmi-controller.c

@ -726,7 +726,8 @@ if ENABLE_IVI_SHELL
module_LTLIBRARIES += \
$(ivi_layout) \
$(ivi_shell)
$(ivi_shell) \
$(hmi_controller)
ivi_layout = ivi-layout.la
ivi_layout_la_LDFLAGS = -module -avoid-version
@ -752,6 +753,19 @@ nodist_ivi_shell_la_SOURCES = \
BUILT_SOURCES += $(nodist_ivi_shell_la_SOURCES)
hmi_controller = hmi-controller.la
hmi_controller_la_LDFLAGS = -module -avoid-version
hmi_controller_la_LIBADD = $(COMPOSITOR_LIBS) libshared.la
hmi_controller_la_CFLAGS = $(GCC_CFLAGS) $(COMPOSITOR_CFLAGS)
hmi_controller_la_SOURCES = \
ivi-shell/ivi-layout-export.h \
ivi-shell/hmi-controller.c
nodist_hmi_controller_la_SOURCES = \
protocol/ivi-hmi-controller-protocol.c \
protocol/ivi-hmi-controller-server-protocol.h
BUILT_SOURCES += $(nodist_hmi_controller_la_SOURCES)
endif

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save