layout: Migrate the layout save/restore to a more useful place
[src/agl-compositor.git] / src / rba_adapter.cpp
index 120d032..0609ac9 100644 (file)
@@ -28,6 +28,8 @@
 #include <unistd.h>
 
 #include "rba_adapter.h"
+#include "ivi-compositor.h"
+#include <libweston/config-parser.h>
 #include <libweston/libweston.h>
 
 #include "RBAJsonParser.hpp"
@@ -52,27 +54,37 @@ bool rba_adapter_initialize(void)
                        weston_log("RBAmodel is NULL\n");
                        return false;
                }
-               arb = new rba::RBAArbitrator();
+               arb = new rba::RBAArbitrator(model);
                if (arb == nullptr) {
                        weston_log("RBAArbitrator is NULL\n");
                        return false;
                }
-               arb->setModel(model);
                return true;
        }
        weston_log("RBAArbitrator model is already created\n");
        return true;
 }
 
-bool rba_adapter_arbitrate(const char *app_id)
+bool rba_adapter_arbitrate(const char *app_id, struct ivi_compositor *ivi)
 {
+       bool allow_unregistred_app;
+       struct weston_config_section *section;
        string id(app_id);
 
        result = arb->execute(id+ "/NORMAL", true);
+       section = weston_config_get_section(ivi->config, "core", NULL, NULL);
+       weston_config_section_get_bool(section, "allow_unregistred_app",
+                                      &allow_unregistred_app, false);
 
        if (result->getStatusType() == rba::RBAResultStatusType::UNKNOWN_CONTENT_STATE) {
                weston_log("ERROR: Unknown context app: %s\n", app_id);
-               return false;
+               if(allow_unregistred_app) {
+                       result = arb->execute("unknown_app/NORMAL", true);
+                       weston_log("!!! WARNING !!! Allowed unknown application to open as allow_unregistred_app is set to 1 in config file.\n");
+                       weston_log("!!! WARNING !!! allow_unregistred_app should be disabled for release build.\n");
+               } else {
+                       return false;
+               }
        }
        if (result->getStatusType() == rba::RBAResultStatusType::FAILED ||
            result->getStatusType() == rba::RBAResultStatusType::CANCEL_ERROR) {