Draft: Allow XDG to be displayed.
authorRomain Forlot <romain.forlot@iot.bzh>
Mon, 27 Nov 2017 13:56:50 +0000 (14:56 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Mon, 27 Nov 2017 13:56:50 +0000 (14:56 +0100)
Change-Id: I962ae2f35ce8af6c4459982b4e8a1e25e9238252
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
layers.json
src/app.cpp
src/app.hpp

index 98d69e0..bf0a6f9 100644 (file)
          "area": { "type": "rect", "rect": { "x": 0, "y": 218, "width": -1, "height": -433 } },
          "comment": "Range of IDs that will always be placed on layer 1001, negative rect values are interpreted as output_size.dimension - $value"
       },
+      {
+        "role": "^XDG$",
+        "name": "xdg-apps",
+        "layer_id": 1002,
+        "area": { "type": "rect", "rect": { "x": 0, "y": 218, "width": -1, "height": -433 } },
+        "comment": "Range of IDs dedicated for XDG apps that will always be placed on layer 1002, negative rect values are interpreted as output_size.dimension - $value"
+      },
       {
          "role": "^OnScreen.*",
          "name": "popups",
index 307217e..324825f 100644 (file)
@@ -596,9 +596,22 @@ void App::api_ping() { this->dispatch_pending_events(); }
 void App::surface_created(uint32_t surface_id) {
    auto layer_id = this->layers.get_layer_id(surface_id);
    if (!layer_id) {
-      HMI_DEBUG("wm", "Newly created surfce %d is not associated with any layer!",
+      HMI_DEBUG("wm", "Newly created surface %d is not associated with any layer! Must be a XDG apps",
                surface_id);
-      return;
+      auto layer_id = this->layers.get_layer_id(XDG_DRAWING_NAME);
+      if(!layer_id)
+      {
+          HMI_DEBUG("wm", "No role found for that XDG App");
+          return;
+      }
+
+      this->layers.add_surface(surface_id, *layer_id);
+      // set the main_surface[_name] here and now
+      if (!this->layers.main_surface_name.empty() &&
+          this->layers.main_surface_name == XDG_DRAWING_NAME) {
+         this->layers.main_surface = surface_id;
+         HMI_DEBUG("wm", "Set main_surface id to %u", surface_id);
+      }
    }
 
    HMI_DEBUG("wm", "surface_id is %u, layer_id is %u", surface_id, *layer_id);
index 413d1c9..41642c1 100644 (file)
@@ -35,6 +35,8 @@
 #include "wayland.hpp"
 #include "hmi-debug.h"
 
+#define XDG_DRAWING_NAME "XDG"
+
 namespace wl {
 struct display;
 }