layout: Add a fallback for reading activation-area 10/29010/1
authorMarius Vlad <marius.vlad@collabora.com>
Fri, 9 Jun 2023 08:49:36 +0000 (11:49 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Tue, 13 Jun 2023 10:58:12 +0000 (13:58 +0300)
This is a temporary work-around for doing another read of the ini file
for the activation-area in case we detected that we have one set-up but
the activation area is empty. This happens when we're getting the ready()
request from the shell client, when we're initializing the layout.

Bug-AGL: SPEC-4829
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I152e7cba34b74390de2a46df4799c1fb44441d3f

src/compositor.c
src/ivi-compositor.h
src/layout.c

index 9b0ac5f..c0a66c8 100644 (file)
@@ -415,7 +415,7 @@ parse_transform(const char *transform, uint32_t *out)
        return -1;
 }
 
-static int
+int
 parse_activation_area(const char *geometry, struct ivi_output *output)
 {
        int n;
index 30b05e3..207fd82 100644 (file)
@@ -507,4 +507,7 @@ bool
 ivi_surface_count_one(struct ivi_output *ivi_output,
                      enum ivi_surface_role role);
 
+int
+parse_activation_area(const char *geometry, struct ivi_output *output);
+
 #endif
index ea293ca..8c8b4be 100644 (file)
@@ -30,6 +30,7 @@
 #include <assert.h>
 #include <string.h>
 
+#include <libweston/config-parser.h>
 #include <libweston/libweston.h>
 #include <libweston-desktop/libweston-desktop.h>
 
@@ -155,6 +156,23 @@ void
 ivi_layout_init(struct ivi_compositor *ivi, struct ivi_output *output)
 {
        bool use_default_area = true;
+       struct weston_config_section *section = output->config;
+       char *t;
+
+       weston_config_section_get_string(section, "activation-area", &t, NULL);
+       if (t) {
+               if (output->area_activation.width == 0 &&
+                   output->area_activation.height == 0 &&
+                   output->area_activation.x == 0 &&
+                   output->area_activation.y == 0) {
+                       weston_log("WARNING: activation-area set in "
+                                       "configuration file, but yet applied!\n");
+                       if (parse_activation_area(t, output) < 0)
+                               weston_log("Invalid activation-area \"%s\" for output %s\n",
+                                          t, output->name);
+               }
+       }
+       free(t);
 
        ivi_background_init(ivi, output);