summaryrefslogtreecommitdiffstats
path: root/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension')
-rw-r--r--meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch202
1 files changed, 202 insertions, 0 deletions
diff --git a/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch b/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch
new file mode 100644
index 000000000..7239f1fb2
--- /dev/null
+++ b/meta-ivi-common/recipes-graphics/wayland/wayland-ivi-extension/apply_weston-1.5.x.patch
@@ -0,0 +1,202 @@
+From fb66405f4f8ee200a443e22d3b4f56a0e917f785 Mon Sep 17 00:00:00 2001
+From: Manuel Bachmann <mbc@iot.bzh>
+Date: Wed, 30 Sep 2015 05:22:25 +0200
+Subject: [PATCH] Backport to Wayland/Weston 1.9.0 > 1.5.0.
+
+Downgrade requirements to Wayland/Weston 1.9.0 > 1.5.0.
+
+"wl_display_roundtrip_queue()" did not exist at the time,
+so just use the wrapper functions instead.
+
+Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
+---
+ .../ilmClient/src/ilm_client_wayland_platform.c | 15 ++-----
+ .../ilmControl/src/ilm_control_wayland_platform.c | 52 +++++++++++++++++++---
+ protocol/CMakeLists.txt | 4 +-
+ weston-ivi-shell/CMakeLists.txt | 4 +-
+ 4 files changed, 53 insertions(+), 22 deletions(-)
+
+diff --git a/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c b/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c
+index 55b1621..8730616 100644
+--- a/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c
++++ b/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c
+@@ -61,7 +61,6 @@ struct ilm_client_context {
+ struct wl_registry *registry;
+ struct wl_compositor *compositor;
+ struct ivi_application *ivi_application;
+- struct wl_event_queue *queue;
+
+ struct wl_list list_surface;
+
+@@ -167,12 +166,6 @@ destroy_client_resouses(void)
+ ctx->ivi_application = NULL;
+ }
+
+- if (ctx->queue)
+- {
+- wl_event_queue_destroy(ctx->queue);
+- ctx->queue = NULL;
+- }
+-
+ if (ctx->registry)
+ {
+ wl_registry_destroy(ctx->registry);
+@@ -203,21 +196,19 @@ init_client(void)
+
+ wl_list_init(&ctx->list_surface);
+
+- ctx->queue = wl_display_create_queue(ctx->display);
+ ctx->registry = wl_display_get_registry(ctx->display);
+ if (ctx->registry == NULL) {
+- wl_event_queue_destroy(ctx->queue);
+ fprintf(stderr, "Failed to get registry\n");
+ return;
+ }
+
+- wl_proxy_set_queue((void*)ctx->registry, ctx->queue);
+ if (wl_registry_add_listener(ctx->registry,
+ &registry_client_listener, ctx)) {
+ fprintf(stderr, "Failed to add registry listener\n");
+ return;
+ }
+- wl_display_roundtrip_queue(ctx->display, ctx->queue);
++ wl_display_dispatch(ctx->display);
++ wl_display_roundtrip(ctx->display);
+
+ if ((ctx->display == NULL) || (ctx->ivi_application == NULL)) {
+ fprintf(stderr, "Failed to connect display at ilm_client\n");
+@@ -239,7 +230,7 @@ get_client_instance(void)
+ exit(0);
+ }
+
+- wl_display_roundtrip_queue(ctx->display, ctx->queue);
++ wl_display_roundtrip(ctx->display);
+
+ return ctx;
+ }
+diff --git a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
+index 8910df5..61bdfc5 100644
+--- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
++++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
+@@ -76,6 +76,46 @@ struct screen_context {
+ struct ilm_control_context *ctx;
+ };
+
++static void roundtrip_done(void *data, struct wl_callback *callback,
++ uint32_t serial)
++{
++ (void) serial;
++
++ *(int *)data = 1;
++
++ wl_callback_destroy(callback);
++}
++
++static struct wl_callback_listener roundtrip_listener = {roundtrip_done};
++
++int display_roundtrip_queue(struct wl_display *display,
++ struct wl_event_queue *queue)
++{
++ int done = 0;
++ int ret = 0;
++ struct wl_callback *callback = wl_display_sync(display);
++
++ if (! callback)
++ {
++ return -1;
++ }
++
++ wl_proxy_set_queue((void *)callback, queue);
++ wl_callback_add_listener(callback, &roundtrip_listener, &done);
++
++ while (ret != -1 && !done)
++ {
++ ret = wl_display_dispatch_queue(display, queue);
++ }
++
++ if (ret == -1 && !done)
++ {
++ wl_callback_destroy(callback);
++ }
++
++ return ret;
++}
++
+ static inline void lock_context(struct ilm_control_context *ctx)
+ {
+ pthread_mutex_lock(&ctx->mutex);
+@@ -1304,11 +1344,11 @@ init_control(void)
+
+ if (
+ // first level objects; ivi_controller
+- wl_display_roundtrip_queue(wl->display, wl->queue) == -1 ||
++ display_roundtrip_queue(wl->display, wl->queue) == -1 ||
+ // second level object: ivi_controller_surfaces/layers
+- wl_display_roundtrip_queue(wl->display, wl->queue) == -1 ||
++ display_roundtrip_queue(wl->display, wl->queue) == -1 ||
+ // third level objects: ivi_controller_surfaces/layers properties
+- wl_display_roundtrip_queue(wl->display, wl->queue) == -1)
++ display_roundtrip_queue(wl->display, wl->queue) == -1)
+ {
+ fprintf(stderr, "Failed to initialize wayland connection: %s\n", strerror(errno));
+ return -1;
+@@ -1349,7 +1389,7 @@ ilmErrorTypes impl_sync_and_acquire_instance(struct ilm_control_context *ctx)
+
+ lock_context(ctx);
+
+- if (wl_display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) == -1) {
++ if (display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) == -1) {
+ int err = wl_display_get_error(ctx->wl.display);
+ fprintf(stderr, "Error communicating with wayland: %s\n", strerror(err));
+ unlock_context(ctx);
+@@ -2454,7 +2494,7 @@ ilm_getPropertiesOfSurface(t_ilm_uint surfaceID,
+ // request statistics for surface
+ ivi_controller_surface_send_stats(ctx_surf->controller);
+ // force submission
+- int ret = wl_display_roundtrip_queue(ctx->wl.display, ctx->wl.queue);
++ int ret = display_roundtrip_queue(ctx->wl.display, ctx->wl.queue);
+
+ // If we got an error here, there is really no sense
+ // in returning the properties as something is fundamentally
+@@ -2567,7 +2607,7 @@ ilm_commitChanges(void)
+ if (ctx->wl.controller != NULL) {
+ ivi_controller_commit_changes(ctx->wl.controller);
+
+- if (wl_display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) != -1)
++ if (display_roundtrip_queue(ctx->wl.display, ctx->wl.queue) != -1)
+ {
+ returnValue = ILM_SUCCESS;
+ }
+diff --git a/protocol/CMakeLists.txt b/protocol/CMakeLists.txt
+index 6842131..207b8f1 100644
+--- a/protocol/CMakeLists.txt
++++ b/protocol/CMakeLists.txt
+@@ -22,8 +22,8 @@ cmake_minimum_required (VERSION 2.6)
+ project(ivi-extension-protocol)
+
+ find_package(PkgConfig REQUIRED)
+-pkg_check_modules(WAYLAND_CLIENT wayland-client>=1.9.0 REQUIRED)
+-pkg_check_modules(WAYLAND_SERVER wayland-server>=1.9.0 REQUIRED)
++pkg_check_modules(WAYLAND_CLIENT wayland-client>=1.5.0 REQUIRED)
++pkg_check_modules(WAYLAND_SERVER wayland-server>=1.5.0 REQUIRED)
+
+ find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
+
+diff --git a/weston-ivi-shell/CMakeLists.txt b/weston-ivi-shell/CMakeLists.txt
+index c2664df..927e3f5 100644
+--- a/weston-ivi-shell/CMakeLists.txt
++++ b/weston-ivi-shell/CMakeLists.txt
+@@ -23,8 +23,8 @@ cmake_minimum_required (VERSION 2.6)
+ project(ivi-controller)
+
+ find_package(PkgConfig REQUIRED)
+-pkg_check_modules(WAYLAND_SERVER wayland-server>=1.9.0 REQUIRED)
+-pkg_check_modules(WESTON weston>=1.9.0 REQUIRED)
++pkg_check_modules(WAYLAND_SERVER wayland-server>=1.5.0 REQUIRED)
++pkg_check_modules(WESTON weston>=1.5.0 REQUIRED)
+ pkg_check_modules(PIXMAN pixman-1 REQUIRED)
+
+ GET_TARGET_PROPERTY(IVI_EXTENSION_INCLUDE_DIRS ivi-extension-protocol INCLUDE_DIRECTORIES)
+--
+1.8.3.1
+