Merge "Enable fallback, then display applications" into eel 5.0.2 eel/5.0.2 eel_5.0.2
authorJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Mon, 26 Mar 2018 23:56:09 +0000 (23:56 +0000)
committerGerrit Code Review <gerrit@automotivelinux.org>
Mon, 26 Mar 2018 23:56:09 +0000 (23:56 +0000)
layers.json
layers.json.split
src/app.cpp

index 8a04d7b..cf7ed34 100644 (file)
@@ -22,7 +22,7 @@
          "comment": "Single layer map for the HomeScreen"
       },
       {
-         "role": "Music|Video|WebBrowser|MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer",
+         "role": "Music|Video|WebBrowser|MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer|Fallback",
          "name": "apps",
          "layer_id": 1001,
          "area": { "type": "rect", "rect": { "x": 0, "y": 218, "width": -1, "height": -433 } },
index 91e563d..ec20b33 100644 (file)
@@ -22,7 +22,7 @@
          "comment": "Single layer map for the HomeScreen"
       },
       {
-         "role": "Music|Video|WebBrowser|MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer",
+         "role": "Music|Video|WebBrowser|MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer|Fallback",
          "name": "apps",
          "layer_id": 1001,
          "area": { "type": "rect", "rect": { "x": 0, "y": 218, "width": -1, "height": -433 } },
index 8806850..e9d79f5 100644 (file)
@@ -712,8 +712,14 @@ void App::emit_visible(char const *label) { return emit_visible(label, true); }
 result<int> App::api_request_surface(char const *drawing_name) {
    auto lid = this->layers.get_layer_id(std::string(drawing_name));
    if (!lid) {
-      // TODO: Do we need to put these applications on the App layer?
-      return Err<int>("Drawing name does not match any role");
+      /**
+       * register drawing_name as fallback and make it displayed.
+       */
+      lid = this->layers.get_layer_id(std::string("Fallback"));
+      HMI_DEBUG("wm", "%s is not registered in layers.json, then fallback as normal app", drawing_name);
+      if(!lid){
+          return Err<int>("Drawing name does not match any role, Fallback is disabled");
+      }
    }
 
    auto rname = this->lookup_id(drawing_name);
@@ -744,7 +750,14 @@ char const *App::api_request_surface(char const *drawing_name,
    unsigned sid = std::stol(ivi_id);
 
    if (!lid) {
-       return "Drawing name does not match any role";
+      /**
+       * register drawing_name as fallback and make it displayed.
+       */
+      lid = this->layers.get_layer_id(std::string("Fallback"));
+      HMI_DEBUG("wm", "%s is not registered in layers.json, then fallback as normal app", drawing_name);
+      if(!lid){
+          return "Drawing name does not match any role, Fallback is disabled";
+      }
    }
 
    auto rname = this->lookup_id(drawing_name);