Commit Graph

43 Commits

Author SHA1 Message Date
Nobuhiko Tanibata
4b601e152e ivi-shell: bugfix, add ref_count to ivi_layout_layer
if a controller calls ivi_layout_layer_create_with_demenstion with a ID
which is already created before, the API returns exist ivi_layer.
However addtionally, it shall count up ref count to destroy ivi_layer
when ref count is 0. The previous code will destroy ivi_layer
immediately even if the other code still refers ivi_layer.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:15 +03:00
Nobuhiko Tanibata
680984234a ivi-shell: fix ivi_shell_surface lifetime
ivi_shell_surface lifetime shall follow the ivi_surface protocol object
lifetime, and frees the ivi-id by destroying the ivi_layout_surface
from both wl_surface and ivi_surface destruction as the protocol specifies.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:15 +03:00
Nobuhiko Tanibata
6f6c938996 ivi-shell: make ivi_layout_surface destruction explicit
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:15 +03:00
Nobuhiko Tanibata
0c217cb694 ivi-shell: bugfix, SEVG by adding NULL check in ivi_layout_get_screen_resolution
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:15 +03:00
Nobuhiko Tanibata
e2b8214efd ivi-shell: Fix wrong link of wl_list_for_each() of ivilayer
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:15 +03:00
Nobuhiko Tanibata
7bbacc6165 ivi-shell: bugfix, check limitation of ivi_layout_layer opacity
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:14 +03:00
Nobuhiko Tanibata
a86226c7c4 ivi-shell: bugfix, check limitation of ivi_layout_surface opacity
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-23 15:57:14 +03:00
Jon Cruz
867d50eea7 Unified multiple definitions of container_of() macro.
Removed duplicate definitions of the container_of() macro and
refactored sources to use the single implementation.

Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-15 17:11:58 -07:00
Jon Cruz
35b2eaa989 Moved helper macro to a discrete include file.
To help reduce code duplication and also 'kitchen-sink' includes
the ARRAY_LENGTH macro was moved to a stand-alone file and
referenced from the sources consuming it. Other macros will be
added in subsequent passes.

Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-15 17:11:45 -07:00
Jon Cruz
4678bab13c Remove redundant #include path component.
Using the parent '../' path component in #include statements makes
the codebase more rigid and is redundant due to proper -I use.

Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-15 17:11:09 -07:00
Bryce Harrington
af637c25f2 *-shell: Update boilerplate from MIT X11 license to MIT Expat licenses 2015-06-15 13:04:18 -07:00
Murray Calavera
9a51cd7d10 move text_backend initialization into the shell plugin
Whether a input method is used should be the responsibility
of the shell because some shells may not want to implement
an input method at all

Signed-off-by: Murray Calavera <murray.calavera@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-06-11 12:20:46 +03:00
Michael Vetter
2a18a52844 remove trailing whitespaces
Remove trailing whitespaces because they are not needed and jumping to
the end of al ine should do just that and not jump to the whitespace.
2015-05-15 13:12:32 -07:00
Nobuhiko Tanibata
e259a7a7d2 ivi-shell: set an initial value for ivi-surface.
Especially, the size of destination rectagle is set to (1,1).
This is because the size will be used for caluculating scale and not to
be 0 to avoid 0 dividing.

I also remark this as FIXME. This shall be fixed at ivi-layout-tansition.c.
In new invoded application, its property is initilized by (0,0)
destination rectangle. So transition fucntion always calculates its scale
as inf at first frame of fade-in with new invoked application. To fix this,
restructing transition function is ideally needed.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-04-28 12:59:19 +03:00
Nobuhiko Tanibata
0a19e23356 ivi-shell: remove unnecesary code in ivi_shell_surface_configure
This method should not update weston_view directly. This shall be done by
controller via ivi_layout_*.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-04-28 12:59:19 +03:00
Nobuhiko Tanibata
65160dcade ivi-shell: fit source rectangle of ivi-surface to the size of application content.
When application changes the size of its content, UI shall fit the source
rectangle, view area, to the size of its content to show whole content.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-04-28 12:59:19 +03:00
Nobuhiko Tanibata
bcff632727 ivi-shell: remove unnecesary assignment of fail safe value.
Scale is calculated as float and to be inf. It shall be avoided by,
ivi_layout_surface_set_source/destination_rectangle. So output log and
then return this method to use prevous scale for fail safe.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-04-28 12:59:18 +03:00
Nobuhiko Tanibata
e6cc997097 ivi-shell: remove unnecesary code in ivi_layout_surface_configure
ivi_layout_surface_configure is called from ivi-shell when configure
listener of weston surface is triggered. This function shall do,
- emit signal to hmi-controller to notify the configuration change

Other unnecesary logics are cleaned up.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-04-28 12:59:18 +03:00
Nobuhiko Tanibata
c3fd624e29 ivi-shell: support surface screen shot of ivi_layout by using weston_surface_copy_content
The reason why the result is not output in the method is that it avoids
to have dependency on CAIRO. If user want to output it to file, user
shall link CAIRO on its controller.

ivi_layout_surface_get_size is also supported here because user needs
stride to call ivi_layout_surafce_dump.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-04-21 11:15:29 +03:00
Pekka Paalanen
8cb258766b ivi-shell/weston.ini: fix paths
If you do an out-of-tree build, all the images will be left in the
srcdir. Fix their paths.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-04-07 14:46:08 +03:00
Pekka Paalanen
f3a3453270 build: generate weston-ivi.ini for tests
The ivi-shell / hmi-controller cannot run without a properly populated
config file. Generate a config file especially for tests, which includes
paths to the build dirs.

The generated file will be used by following patches adding ivi-shell
tests.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-04-07 14:46:08 +03:00
Pekka Paalanen
97246c067d ivi-layout: abort without controller_module_init
When loading a controller module, if we do not find a
controller_module_init symbol, return failure to the caller instead of
ignoring the failure.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
2015-04-02 15:04:46 +03:00
Pekka Paalanen
8a005252d1 ivi-shell: add cmdline option for controller module
This will be useful for tests, where we use --no-config, but ivi-shell
needs load the controller module from somewhere.

We are not making hmi-controller.so the default, because this patch
should allow running the tests also with another controller.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
2015-04-02 15:04:33 +03:00
Bryce Harrington
a86c3ee697 Spellcheck fixes
./ivi-shell/README:19: protocal  ==> protocol
./src/compositor.h:596: seperate  ==> separate
./src/version.h.in:33: actualy  ==> actually
./src/cms-helper.h:44: embeded  ==> embedded
./protocol/fullscreen-shell.xml:65: seperate  ==> separate
./protocol/xdg-shell.xml:150: auxilliary  ==> auxiliary
./clients/window.c:1035: preferrably  ==> preferably

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-03-19 17:02:08 +02:00
Pekka Paalanen
6c7a1c7b07 ivi-shell: add exit binding
Let's me easily exit ivi-shell when testing with the DRM-backend.
Only available in ivi-shell developer mode.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-03-02 16:56:02 +02:00
Pekka Paalanen
e35b223342 ivi-shell: developer mode debug key bindings
Add a weston.ini option for ivi-shell to enable "developer mode".

When developer mode is enabled, hook up the debug key bindings.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-03-02 16:56:02 +02:00
Carlos Olmedo Escobar
703f502036 ivi-layout: separate declarations from code
Thanks Pekka for pointing that out.

Signed-off-by: Carlos Olmedo Escobar <carlos.olmedo.e@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-03-02 15:13:25 +02:00
Nobuhiko Tanibata
82cc25b986 ivi-shell: SEGV occurs when multi touch happens in transition
of application launching. This is because cancel callback is mistakenly
set to weston_touch_grab_interface. To fix this issue, add a
callback, touch_move_workspace_grab_frame and set it to the
weston_touch_grab_interface like desktop-shell.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-02-06 16:22:15 -08:00
Carlos Olmedo Escobar
e82ba533e5 ivi-shell-transition: check create_layout_transition() return value.
Signed-off-by: Carlos Olmedo Escobar <carlos.olmedo.e@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: ntanibata@jp.adit-jv.com
2015-01-28 18:51:17 -08:00
Nobuhiko Tanibata
9d86021cac ivi-shell: Fix wrong condition to check return value of controller_module_init
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
2014-12-16 17:45:34 +02:00
Nobuhiko Tanibata
ee8e5830be ivi-shell: rewrite controller API
This fixes the breakage caused by "ivi-shell: make ivi-layout.c as a
part of ivi-shell.so"

hmi-controller.c:
A reference implementation of controller module does not use the layout
functions directly. This get function pointers at controller_module_init
which called by ivi-shell.

ivi-layout-export.h:
Definition of interfaces in a struction: ivi_controller_interface.
function pointers are set at ivi-layout.c.

ivi-layout-private.h:
Definition of some interfaces are remove bucause it is implemented in
ivi-layout.c and set it as function pointer. Several interfaces are kept
here because they are implemented in ivi-layout.c/transition.c but used
in other files.

ivi-layout-transition.c:
remove WL_EXPORT because export is not needed anymore.
remove unnesesary unsed method.

ivi-shell.c:
call controller_module_init of hmi-controller to init it and set
function pointers. If the interface_version is equal or
greater than what hmi_controller was built with, things are pass.
If the interface_version is smaller than what the controller expects,
it has to fail because it cannot work. This is followed the manner,

- never remove a function pointer
- never modify an existing function signature
- additions are allowed at the end of struct ivi_controller_interface
- all function pointers must always be populated and working in
  ivi-shell.so (ivi-layout.c etc.)

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:50:48 +02:00
Nobuhiko Tanibata
28dc18c843 ivi-shell: make ivi-layout.c as a part of ivi-shell.so
ivi-layout.so is separately built and loaded by using dlopen with
RTLD_GLOBAL. This was because these apis defined in ivi-layout.so shall
be used by ivi-modules; e.g. hmi-controller. This shall be improved that
a struct ivi_layout_api contains the whole exported API as function
pointers to be exposed as module_init.

This patch alone builds, but loading controller modules at runtime
failes. This failure will be fixed by following patches.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:43:55 +02:00
Nobuhiko Tanibata
3c6796ff32 ivi-shell: several ivi-layout interfaces moved accross source.
Interfaces for properties setting shall be implemented in ivi-layout.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:31:02 +02:00
Nobuhiko Tanibata
ef6c7864e2 ivi-shell: reordering method in ivi_layout.c
In the future, re-alignmenet of WL_EXPORT per method should be done.
For that work, re-ordering is required to be used by another method.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:29:40 +02:00
Nobuhiko Tanibata
3d7eadb1e0 ivi-shell: clean up unnecesary header
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:27:48 +02:00
Nobuhiko Tanibata
2822136671 ivi-shell: clean-up transition animation code.
ivi_layout_transition_layer_render_order is not necesary called. Remove
the method and methods called by it.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:26:41 +02:00
Ondřej Majerech
4bb9929411 ivi-shell: Say something when configuration is missing
When ivi-module is not set in weston.conf, we probably want to tell the
user about their error instead of just dying.

Signed-off-by: Ondřej Majerech <majerech.o@gmail.com>
[Pekka: include Tanibata's suggestion, fix file name, fix surrounding
coding style]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-15 16:22:45 +02:00
Nobuhiko Tanibata
0038b738ab ivi-shell: reference implementation of input panel for ivi-shell
- introduces ivi-shell/input-panel-ivi.c which is basically copied
  from desktop shell. It shall be improvaded to remove duplicate
  implementation.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-04 17:25:50 +02:00
Nobuhiko Tanibata
45d4cbf15f ivi-shell: a reference of weston.ini for ivi-shell and ivi-hmi-controller.
- introduces ivi-shell/weston.ini.in

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-04 17:25:50 +02:00
Nobuhiko Tanibata
4f6853b271 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>
2014-12-04 17:13:41 +02:00
Nobuhiko Tanibata
487adc4699 ivi-shell: add the shell plugin for In-Vehicle Infotainment system
- ivi-shell.so
- introduces ivi-shell/ivi-shell.[ch]

In-Vehicle Infotainment system traditionally manages surfaces with
global identification. A protocol, ivi_application, supports such a
feature by implementing a request, ivi_application::surface_creation
defined in ivi_application.xml.

The ivi-shell explicitly loads ivi-layout.so and a module to add
business logic like how to layout surfaces by using ivi-layout APIs.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-04 17:13:41 +02:00
Nobuhiko Tanibata
6f9df656e0 ivi-shell: add IVI layout APIs
- ivi-layout.so
- introduces ivi-layout-export.h, ivi-layout.[ch]

API set of controlling properties of surface and layer which groups
surfaces. An unique ID whose type is integer is required to create
surface and layer. With the unique ID, surface and layer are identified
to control them. The API set consists of APIs to control properties of
surface and layers about followings,

- visibility.
- opacity.
- clipping (x,y,width,height).
- position and size of it to be displayed.
- orientation per 90 degree.
- add or remove surfaces to a layer.
- order of surfaces/layers in layer/screen to be displayed.
- commit to apply property changes.
- notifications of property change.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-04 17:13:41 +02:00
Nobuhiko Tanibata
930faee673 ivi-shell: add README for ivi-shell
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-04 17:13:41 +02:00