summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/layers.cpp16
-rw-r--r--src/util.cpp37
-rw-r--r--src/util.hpp12
-rw-r--r--src/window_manager.cpp28
-rw-r--r--src/window_manager.hpp5
5 files changed, 54 insertions, 44 deletions
diff --git a/src/layers.cpp b/src/layers.cpp
index bbe7c09..21d975d 100644
--- a/src/layers.cpp
+++ b/src/layers.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
#include "layers.hpp"
#include "json_helper.hpp"
+#include "util.hpp"
#include "hmi-debug.h"
namespace wm
@@ -210,19 +212,7 @@ int layer_map::loadAreaDb()
{
HMI_DEBUG("wm:lm", "Call");
- // Get afm application installed dir
- char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR");
- HMI_DEBUG("wm:lm", "afm_app_install_dir:%s", afm_app_install_dir);
-
- std::string file_name;
- if (!afm_app_install_dir)
- {
- HMI_ERROR("wm:lm", "AFM_APP_INSTALL_DIR is not defined");
- }
- else
- {
- file_name = std::string(afm_app_install_dir) + std::string("/etc/areas.db");
- }
+ std::string file_name(get_file_path("areas.db"));
// Load area.db
json_object *json_obj;
diff --git a/src/util.cpp b/src/util.cpp
index 672b089..e4cc2ef 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,9 +22,12 @@
#include <cstdio>
#include <cstdlib>
#include <ctime>
+#include <fstream>
#include <unistd.h>
+#include "hmi-debug.h"
+
#ifdef SCOPE_TRACING
thread_local int ScopeTrace::indent = 0;
ScopeTrace::ScopeTrace(char const *func) : f(func)
@@ -93,3 +97,36 @@ void rectangle::set_aspect(double ratio)
}
}
+std::string get_file_path(const char *file_name, const char *log_category)
+{
+ char const *default_base_path = getenv("AFM_APP_INSTALL_DIR");
+ std::string path("");
+
+ if(!file_name) {
+ return path;
+ }
+
+ if (!default_base_path)
+ {
+ HMI_ERROR(log_category, "AFM_APP_INSTALL_DIR is not defined");
+ }
+ else
+ {
+ path = default_base_path;
+ path.append("/etc/");
+ path.append(file_name);
+ }
+
+ // Check for over-ride in /etc/xdg/windowmanager
+ std::string override_path("/etc/xdg/windowmanager/");
+ override_path.append(file_name);
+ std::ifstream i(override_path);
+ if (i.good())
+ {
+ path = override_path;
+ }
+ i.close();
+
+ HMI_INFO(log_category, "Using %s", path.c_str());
+ return path;
+}
diff --git a/src/util.hpp b/src/util.hpp
index 2f17845..8782353 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,16 +21,10 @@
#include <functional>
#include <thread>
#include <vector>
+#include <string>
#include <sys/poll.h>
-#ifndef DO_NOT_USE_AFB
-extern "C"
-{
-#include <afb/afb-binding.h>
-};
-#endif
-
#define CONCAT_(X, Y) X##Y
#define CONCAT(X, Y) CONCAT_(X, Y)
@@ -163,4 +158,7 @@ class rectangle
long _bottom;
};
+// Configuration file path helper
+std::string get_file_path(const char *file_name, const char *log_category = "wm");
+
#endif // !WM_UTIL_HPP
diff --git a/src/window_manager.cpp b/src/window_manager.cpp
index 42930dc..e9cc53a 100644
--- a/src/window_manager.cpp
+++ b/src/window_manager.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
#include "window_manager.hpp"
#include "json_helper.hpp"
+#include "util.hpp"
#include "applist.hpp"
extern "C"
@@ -123,17 +125,7 @@ WindowManager::WindowManager(wl::display *d)
id_alloc{},
pending_events(false)
{
- char const *path_layers_json = getenv("AFM_APP_INSTALL_DIR");
- std::string path;
- if (!path_layers_json)
- {
- HMI_ERROR("wm", "AFM_APP_INSTALL_DIR is not defined");
- path = std::string(path_layers_json);
- }
- else
- {
- path = std::string(path_layers_json) + std::string("/etc/layers.json");
- }
+ std::string path(get_file_path("layers.json"));
try
{
@@ -1371,19 +1363,7 @@ const char* WindowManager::convertRoleOldToNew(char const *old_role)
int WindowManager::loadOldRoleDb()
{
- // Get afm application installed dir
- char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR");
- HMI_DEBUG("wm", "afm_app_install_dir:%s", afm_app_install_dir);
-
- std::string file_name;
- if (!afm_app_install_dir)
- {
- HMI_ERROR("wm", "AFM_APP_INSTALL_DIR is not defined");
- }
- else
- {
- file_name = std::string(afm_app_install_dir) + std::string("/etc/old_roles.db");
- }
+ std::string file_name(get_file_path("old_roles.db"));
// Load old_role.db
json_object* json_obj;
diff --git a/src/window_manager.hpp b/src/window_manager.hpp
index 6cbd355..967a87a 100644
--- a/src/window_manager.hpp
+++ b/src/window_manager.hpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +30,10 @@
#include "hmi-debug.h"
#include "request.hpp"
#include "wm_error.hpp"
+extern "C"
+{
+#include <afb/afb-binding.h>
+}
struct json_object;