e_policy_appinfo: add e_policy_appinfo 78/204378/4
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 23 Apr 2019 04:53:52 +0000 (13:53 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Fri, 26 Apr 2019 01:36:28 +0000 (01:36 +0000)
The e_policy_appinfo provide the interface for the information of
the application information.
The server contains the information from the clients using this inteface.

Change-Id: I60dbdf2804a6d09c12295f2e5bfcae69782bebc9

src/bin/Makefile.mk
src/bin/e_includes.h
src/bin/e_policy_appinfo.c [new file with mode: 0644]
src/bin/e_policy_appinfo.h [new file with mode: 0644]

index 67840251c1affbf0e127ab208a9a9b0dc031c97e..ec7e2245a2956da989b9b7b6e367dd231e6c327f 100644 (file)
@@ -127,6 +127,7 @@ src/bin/e_policy_visibility.h \
 src/bin/e_policy_private_data.h \
 src/bin/e_policy_wl.h \
 src/bin/e_policy_wl_display.h \
+src/bin/e_policy_appinfo.h \
 src/bin/e_magnifier.h \
 src/bin/e_process.h \
 src/bin/e_privilege.h \
@@ -248,6 +249,7 @@ src/bin/e_policy_stack.c  \
 src/bin/e_policy_visibility.c \
 src/bin/e_policy_wl.c \
 src/bin/e_policy_wl_display.c \
+src/bin/e_policy_appinfo.c \
 src/bin/e_magnifier.c \
 src/bin/e_process.c \
 src/bin/e_privilege.c \
index 8abdde2bc32d3008b663e836c5333941c06cc9e0..fed9fb73eaa65daa4597a84b1c9e9b3078779eef 100644 (file)
@@ -70,6 +70,7 @@
 #include "e_policy.h"
 #include "e_policy_conformant.h"
 #include "e_policy_visibility.h"
+#include "e_policy_appinfo.h"
 #include "e_magnifier.h"
 #include "e_process.h"
 #include "e_splitlayout.h"
diff --git a/src/bin/e_policy_appinfo.c b/src/bin/e_policy_appinfo.c
new file mode 100644 (file)
index 0000000..802eccb
--- /dev/null
@@ -0,0 +1,125 @@
+#include "e.h"
+#include "e_policy_appinfo.h"
+
+Eina_List *appinfo_list;
+
+struct _E_Policy_Appinfo
+{
+   pid_t               pid;
+   Eina_Stringshare   *appid;
+   Eina_Bool base_output_available;
+   int base_output_width;
+   int base_output_height;
+};
+
+EINTERN E_Policy_Appinfo *
+e_policy_appinfo_new(void)
+{
+   E_Policy_Appinfo *epai = NULL;
+
+   epai = E_NEW(E_Policy_Appinfo, 1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(epai, NULL);
+
+   appinfo_list = eina_list_append(appinfo_list, epai);
+
+   ELOGF("POL_APPINFO", "appinfo(%p) create", NULL, epai);
+
+   return epai;
+}
+
+EINTERN void
+e_policy_appinfo_del(E_Policy_Appinfo *epai)
+{
+   EINA_SAFETY_ON_NULL_RETURN(epai);
+
+   ELOGF("POL_APPINFO", "appinfo(%p) delete", NULL, epai);
+
+   if (epai->appid)
+     eina_stringshare_del(epai->appid);
+
+   appinfo_list = eina_list_remove(appinfo_list, epai);
+
+   E_FREE(epai);
+}
+
+EINTERN Eina_Bool
+e_policy_appinfo_pid_set(E_Policy_Appinfo *epai, pid_t pid)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(epai, EINA_FALSE);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(pid <= 0, EINA_FALSE);
+
+   epai->pid = pid;
+
+   ELOGF("POL_APPINFO", "appinfo(%p) set pid(%u)", NULL, epai, pid);
+
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_policy_appinfo_appid_set(E_Policy_Appinfo *epai, const char *appid)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(epai, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(appid, EINA_FALSE);
+
+   if (epai->appid)
+     eina_stringshare_del(epai->appid);
+
+   epai->appid = eina_stringshare_add(appid);
+
+   ELOGF("POL_APPINFO", "appinfo(%p) set appid(%s)", NULL, epai, appid);
+
+   return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_policy_appinfo_base_output_resolution_get(E_Policy_Appinfo *epai, int *width, int *height)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(epai, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(width, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(height, EINA_FALSE);
+
+   if (!epai->base_output_available)
+     {
+        *width = 0;
+        *height = 0;
+        return EINA_FALSE;
+     }
+
+   *width = epai->base_output_width;
+   *height = epai->base_output_height;
+
+   return EINA_TRUE;
+}
+
+EINTERN E_Policy_Appinfo *
+e_policy_appinfo_find_with_pid(pid_t pid)
+{
+   E_Policy_Appinfo *epai = NULL;
+   Eina_List *l = NULL;
+
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(pid <= 0, EINA_FALSE);
+
+   EINA_LIST_FOREACH(appinfo_list, l, epai)
+     {
+        if (epai->pid == pid)
+          return epai;
+     }
+
+   return NULL;
+}
+
+EINTERN Eina_Bool
+e_policy_appinfo_base_output_resolution_set(E_Policy_Appinfo *epai, int width, int height)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(epai, EINA_FALSE);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(width < 0, EINA_FALSE);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(height < 0, EINA_FALSE);
+
+   epai->base_output_width = width;
+   epai->base_output_height = height;
+   epai->base_output_available = EINA_TRUE;
+
+   ELOGF("POL_APPINFO", "appinfo(%p) set base_output_resolution(%d, %d):(pid,%u)", NULL, epai, width, height, epai->pid);
+
+   return EINA_TRUE;
+}
diff --git a/src/bin/e_policy_appinfo.h b/src/bin/e_policy_appinfo.h
new file mode 100644 (file)
index 0000000..0ffd8e8
--- /dev/null
@@ -0,0 +1,12 @@
+typedef struct _E_Policy_Appinfo E_Policy_Appinfo;
+
+EINTERN E_Policy_Appinfo *e_policy_appinfo_new(void);
+EINTERN void              e_policy_appinfo_del(E_Policy_Appinfo *epai);
+EINTERN Eina_Bool         e_policy_appinfo_pid_set(E_Policy_Appinfo *epai, pid_t pid);
+EINTERN Eina_Bool         e_policy_appinfo_appid_set(E_Policy_Appinfo *epai, const char *appid);
+EINTERN Eina_Bool         e_policy_appinfo_base_output_resolution_get(E_Policy_Appinfo *epai, int *width, int *height);
+
+EINTERN E_Policy_Appinfo *e_policy_appinfo_find_with_pid(pid_t pid);
+EINTERN Eina_Bool         e_policy_appinfo_base_output_resolution_set(E_Policy_Appinfo *epai, int width, int height);
+
+