diff options
author | Michael Teyfel <mteyfel@de.adit-jv.com> | 2018-08-08 17:18:05 +0200 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2018-10-17 21:09:51 +0000 |
commit | 22c95375e2ab1ab229b68ef9607f6a503dc44ccc (patch) | |
tree | 06365ff7f1977a3d6f3590d9ccdef7136edd0d87 /recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-for-2.0.2.patch | |
parent | 1509176b7b160d9e64f41d3de9d6b6ba996df5b5 (diff) |
wayland-ivi-extension: Added ivi-id-agent by mtey
As explained in further discussions, the simple-id-agent
is a basic example for reference. This commit adds the
ivi-id-agent [1]. It is still a reference implementation
but already offers more features (like configurations)
that should be desirable for AGL.
[1] https://github.com/mtey/wayland-ivi-extension/commits/xdg_support_ivi_id_agent
Change-Id: I041b81b480be8fd49fded9d9c9824a0dbb3b568f
Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
Diffstat (limited to 'recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-for-2.0.2.patch')
-rw-r--r-- | recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-for-2.0.2.patch | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-for-2.0.2.patch b/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-for-2.0.2.patch deleted file mode 100644 index 24bf8394f..000000000 --- a/recipes-graphics/wayland/wayland-ivi-extension/0001-simple-id-agent-for-2.0.2.patch +++ /dev/null @@ -1,294 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index c82136e..eeed7a6 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -35,6 +35,7 @@ add_subdirectory(ivi-layermanagement-api/ilmClient) - add_subdirectory(ivi-layermanagement-api/ilmControl) - add_subdirectory(ivi-layermanagement-api/test) - add_subdirectory(ivi-layermanagement-examples) -+add_subdirectory(id-agent-modules/simple-id-agent) - - if(WITH_ILM_INPUT) - add_subdirectory(ivi-input-api/ilmInput) -diff --git a/id-agent-modules/simple-id-agent/CMakeLists.txt b/id-agent-modules/simple-id-agent/CMakeLists.txt -new file mode 100644 -index 0000000..8290722 ---- /dev/null -+++ b/id-agent-modules/simple-id-agent/CMakeLists.txt -@@ -0,0 +1,72 @@ -+############################################################################ -+# -+# Copyright (C) 2013 DENSO CORPORATION -+# Copyright 2014 BMW Car IT GmbH -+# -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+# See the License for the specific language governing permissions and -+# limitations under the License. -+# -+############################################################################ -+ -+cmake_minimum_required (VERSION 2.6) -+ -+project(simple-id-agent) -+ -+find_package(PkgConfig REQUIRED) -+pkg_check_modules(WAYLAND_SERVER wayland-server>=1.13.0 REQUIRED) -+pkg_check_modules(WESTON weston>=2.0.0 REQUIRED) -+pkg_check_modules(PIXMAN pixman-1 REQUIRED) -+ -+find_package(Threads REQUIRED) -+ -+GET_TARGET_PROPERTY(IVI_EXTENSION_INCLUDE_DIRS ivi-extension-protocol INCLUDE_DIRECTORIES) -+ -+include_directories( -+ src -+ ${IVI_EXTENSION_INCLUDE_DIRS} -+ ${WAYLAND_SERVER_INCLUDE_DIRS} -+ ${WESTON_INCLUDE_DIRS} -+ ${PIXMAN_INCLUDE_DIRS} -+) -+ -+link_directories( -+ ${WAYLAND_SERVER_LIBRARY_DIRS} -+ ${PIXMAN_LIBRARY_DIRS} -+) -+ -+add_library(${PROJECT_NAME} MODULE -+ src/simple-id-agent.c -+) -+ -+set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") -+ -+add_dependencies(${PROJECT_NAME} -+ ivi-extension-protocol -+ ${WAYLAND_SERVER_LIBRARIES} -+ ${PIXMAN_LIBRARIES} -+) -+ -+set(LIBS -+ ${LIBS} -+ ivi-extension-protocol -+ ${WAYLAND_SERVER_LIBRARIES} -+) -+ -+set(CMAKE_C_LDFLAGS "-module -avoid-version") -+ -+target_link_libraries(${PROJECT_NAME} ${LIBS}) -+ -+install ( -+ TARGETS ${PROJECT_NAME} -+ LIBRARY DESTINATION lib${LIB_SUFFIX}/weston -+) -diff --git a/id-agent-modules/simple-id-agent/src/simple-id-agent.c b/id-agent-modules/simple-id-agent/src/simple-id-agent.c -new file mode 100644 -index 0000000..3c9e989 ---- /dev/null -+++ b/id-agent-modules/simple-id-agent/src/simple-id-agent.c -@@ -0,0 +1,124 @@ -+/* -+ * Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and -+ * its documentation for any purpose is hereby granted without fee, provided -+ * that the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation, and that the name of the copyright holders not be used in -+ * advertising or publicity pertaining to distribution of the software -+ * without specific, written prior permission. The copyright holders make -+ * no representations about the suitability of this software for any -+ * purpose. It is provided "as is" without express or implied warranty. -+ * -+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#include <stdlib.h> -+#include <stdio.h> -+#include <string.h> -+#include <limits.h> -+ -+#include <weston.h> -+#include <weston/ivi-layout-export.h> -+ -+struct ivi_id_agent -+{ -+ uint32_t default_id_offset; -+ uint32_t last_assigned_id; -+ struct weston_compositor *compositor; -+ const struct ivi_layout_interface *interface; -+ struct wl_listener desktop_surface_configured; -+}; -+ -+static void -+desktop_surface_event_configure(struct wl_listener *listener, -+ void *data) -+{ -+ struct ivi_id_agent *ida = wl_container_of(listener, ida, -+ desktop_surface_configured); -+ struct ivi_layout_surface *layout_surface = -+ (struct ivi_layout_surface *) data; -+ uint32_t tmp_id; -+ -+ tmp_id = ++ida->last_assigned_id; -+ -+ /* Find an unused id */ -+ while(ida->interface->get_surface_from_id(tmp_id)) { -+ weston_log("simple-id-agent: surface id: %d is already used\n", tmp_id); -+ tmp_id++; -+ } -+ -+ ida->last_assigned_id = tmp_id; -+ -+ if (ida->interface->surface_set_id(layout_surface, ida->last_assigned_id) != 0) -+ weston_log("simple-id-agent: failed to set surface id :%d\n", ida->last_assigned_id); -+} -+ -+static void -+deinit(struct ivi_id_agent *ida) -+{ -+ wl_list_remove(&ida->desktop_surface_configured.link); -+ free(ida); -+} -+ -+static int32_t -+read_config(struct ivi_id_agent *ida) -+{ -+ struct weston_config *config = NULL; -+ struct weston_config_section *section = NULL; -+ const char *name = NULL; -+ -+ config = wet_get_config(ida->compositor); -+ if (!config) -+ return -1; -+ -+ section = weston_config_get_section(config, "id-agent", NULL, NULL); -+ -+ if (section) { -+ -+ weston_config_section_get_uint(section, "default-id-offset", -+ &ida->default_id_offset, 0); -+ -+ } else { -+ ida->default_id_offset = 0; -+ } -+ -+ return 0; -+} -+ -+WL_EXPORT int32_t -+id_agent_module_init(struct weston_compositor *ec, -+ const struct ivi_layout_interface *interface, -+ size_t interface_version) -+{ -+ struct ivi_id_agent *ida; -+ -+ ida = calloc(1, sizeof *ida); -+ if (ida == NULL) { -+ weston_log("failed to allocate ivi_id_agent\n"); -+ return -1; -+ } -+ -+ ida->compositor = ec; -+ ida->interface = interface; -+ ida->desktop_surface_configured.notify = desktop_surface_event_configure; -+ ida->interface->add_listener_configure_desktop_surface(&ida->desktop_surface_configured); -+ -+ if(read_config(ida) != 0) { -+ deinit(ida); -+ return -1; -+ } -+ -+ ida->last_assigned_id = ida->default_id_offset; -+ -+ weston_log("id_agent_module_init: success\n"); -+ -+ return 0; -+} -diff --git a/id-agent-modules/simple-id-agent/weston.ini.in b/id-agent-modules/simple-id-agent/weston.ini.in -new file mode 100644 -index 0000000..b5e5fa1 ---- /dev/null -+++ b/id-agent-modules/simple-id-agent/weston.ini.in -@@ -0,0 +1,11 @@ -+[core] -+shell=ivi-shell.so -+require-input=false -+ -+[ivi-shell] -+ivi-module=ivi-controller.so -+ivi-input-module=ivi-input-controller.so -+id-agent-module=simple-id-agent.so -+ -+[id-agent] -+default-id-offset=10 -diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c -index 6d95c88..5e61e76 100644 ---- a/weston-ivi-shell/src/ivi-controller.c -+++ b/weston-ivi-shell/src/ivi-controller.c -@@ -2164,6 +2164,40 @@ load_input_module(struct ivishell *shell) - return 0; - } - -+static int load_id_agent_module(struct weston_compositor *ec, -+ const struct ivi_layout_interface *interface, -+ size_t interface_version) -+{ -+ struct weston_config *config = wet_get_config(ec); -+ struct weston_config_section *section; -+ char *id_agent_module = NULL; -+ -+ int (*id_agent_module_init)(struct weston_compositor *ec, -+ const struct ivi_layout_interface *interface, -+ size_t interface_version); -+ -+ section = weston_config_get_section(config, "ivi-shell", NULL, NULL); -+ -+ if (weston_config_section_get_string(section, "id-agent-module", -+ &id_agent_module, NULL) < 0) { -+ weston_log("ivi-controller: No id-agent-module set\n"); -+ return 0; -+ } -+ -+ id_agent_module_init = wet_load_module_entrypoint(id_agent_module, "id_agent_module_init"); -+ if (!id_agent_module_init) -+ return -1; -+ -+ if (id_agent_module_init(ec, interface, -+ sizeof(struct ivi_layout_interface)) != 0) { -+ weston_log("ivi-controller: Initialization of id agent module fails\n"); -+ return -1; -+ } -+ -+ free(id_agent_module); -+ return 0; -+} -+ - static void - launch_client_process(void *data) - { -@@ -2229,6 +2263,11 @@ controller_module_init(struct weston_compositor *compositor, - return -1; - } - -+ if (load_id_agent_module(compositor, interface, interface_version) < 0) { -+ free(shell); -+ return -1; -+ } -+ - if (shell->bkgnd_surface_id && shell->ivi_client_name) { - loop = wl_display_get_event_loop(compositor->wl_display); - wl_event_loop_add_idle(loop, launch_client_process, shell); |