From 973dcfb2251fdea882c0da20dc508e68d40f2c6f Mon Sep 17 00:00:00 2001 From: Nobuhiko Tanibata Date: Mon, 17 Feb 2014 14:11:00 +0900 Subject: [PATCH] weston-ivi-shell: implementation to get_native handle Signed-off-by: Nobuhiko Tanibata --- weston-ivi-shell/CMakeLists.txt | 2 +- weston-ivi-shell/src/ivi-controller.c | 45 ++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/weston-ivi-shell/CMakeLists.txt b/weston-ivi-shell/CMakeLists.txt index 506de55..e575385 100644 --- a/weston-ivi-shell/CMakeLists.txt +++ b/weston-ivi-shell/CMakeLists.txt @@ -72,7 +72,7 @@ set(LIBS ${WESTON_LIBRARIES} ) -target_link_libraries(${PROJECT_NAME} ${LIBS}) +target_link_libraries(${PROJECT_NAME} ${LIBS} ${WESTON_LIBDIR}/weston/ivi-shell.so) install ( TARGETS ${PROJECT_NAME} diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c index cd64600..faf9f1b 100755 --- a/weston-ivi-shell/src/ivi-controller.c +++ b/weston-ivi-shell/src/ivi-controller.c @@ -31,6 +31,7 @@ #include "weston/compositor.h" #include "ivi-controller-server-protocol.h" #include "weston/weston-layout.h" +#include "weston/ivi-shell.h" struct ivishell; struct ivilayer; @@ -1160,10 +1161,52 @@ controller_surface_create(struct wl_client *client, } } +static void +controller_get_native_handle(struct wl_client *client, + struct wl_resource *resource, + uint32_t id_process, + const char *title) +{ + struct wl_array surfaces; + ivi_shell_get_shell_surfaces(&surfaces); + struct shell_surface ** surface; + + wl_array_for_each(surface, &surfaces) { + + uint32_t pid = shell_surface_get_process_id(*surface); + if (pid != id_process) { + continue; + } + + if (title) { + char* surface_title = shell_surface_get_title(*surface); + if (strcmp(title, surface_title)) { + continue; + } + } + + struct weston_surface *es = shell_surface_get_surface(*surface); + if (es) { + struct wl_resource *res = wl_resource_create(client, &wl_surface_interface, 1, 0); + wl_resource_set_user_data(res, es); + + ivi_controller_send_native_handle(resource, res); + } + } + + wl_array_release(&surfaces); + + int32_t id_object = 0; + ivi_controller_send_error( + resource, id_object, IVI_CONTROLLER_OBJECT_TYPE_SURFACE, + IVI_CONTROLLER_ERROR_CODE_NATIVE_HANDLE_END, ""); +} + static const struct ivi_controller_interface controller_implementation = { controller_commit_changes, controller_layer_create, - controller_surface_create + controller_surface_create, + controller_get_native_handle }; static void -- 2.7.4