summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/CMakeLists.txt2
-rw-r--r--client/ug-client.c108
-rwxr-xr-xclient/ug-client.h2
-rwxr-xr-xinclude/SLP_UI_Gadget_PG.h3
-rw-r--r--include/ug-module.h1
-rwxr-xr-xinclude/ug.h9
-rwxr-xr-xinclude/ui-gadget-engine.h5
-rw-r--r--include/ui-gadget.h2
-rw-r--r--packaging/ui-gadget-1.spec9
-rw-r--r--src/manager.c262
-rw-r--r--src/module.c73
-rwxr-xr-xug-efl-engine/ug-efl-engine.c155
-rw-r--r--ui-gadget-1.rule159
13 files changed, 542 insertions, 248 deletions
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index 875d87f..3bb2d21 100644
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -7,7 +7,7 @@ SET(CLIENT_LOCALEDIR /usr/share/locale)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
INCLUDE(FindPkgConfig)
-SET(CLIENT_PKGS_CHECK_MODULES "capi-appfw-application capi-system-runtime-info appcore-efl appsvc bundle edje dlog elementary evas")
+SET(CLIENT_PKGS_CHECK_MODULES "capi-appfw-application capi-system-runtime-info appcore-efl appsvc bundle edje dlog elementary evas vconf")
IF (with_x)
PKG_CHECK_MODULES(CLIENT_PKGS REQUIRED ${CLIENT_PKGS_CHECK_MODULES} ecore-x x11)
diff --git a/client/ug-client.c b/client/ug-client.c
index ecaf16b..0c79d1e 100644
--- a/client/ug-client.c
+++ b/client/ug-client.c
@@ -29,9 +29,8 @@
#include <dlog.h>
#include <aul.h>
-#include <appsvc.h>
#include <app.h>
-#include <runtime_info.h>
+#include <vconf.h>
#include "ug-client.h"
@@ -151,26 +150,61 @@ void _ug_client_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
}
}
-void _ug_client_result_cb(ui_gadget_h ug, service_h result, void *priv)
+void _ug_client_result_cb(ui_gadget_h ug, service_h reply, void *priv)
{
- struct appdata *ad;
+ struct appdata *ad = NULL;
int ret;
+ char* value = NULL;
+ int result;
if (!ug || !priv)
return;
+
+ ret = service_get_extra_data (reply, UG_SERVICE_DATA_RESULT, &value);
+ if((ret == SERVICE_ERROR_NONE) && (value)) {
+ result = atoi(value);
+ LOGD("reply result is %d", result);
+ } else {
+ LOGW("get reply result error(%d) . result will be SERVICE_RESULT_SUCCEEDED", ret);
+ result = SERVICE_RESULT_SUCCEEDED;
+ }
+
ad = priv;
+ if (!ad) {
+ LOGE("appdata is null");
+ return;
+ }
- ret = service_reply_to_launch_request(result, ad->request, SERVICE_RESULT_SUCCEEDED);
+ ret = service_reply_to_launch_request(reply, ad->request, (service_result_e)result);
if (ret != SERVICE_ERROR_NONE)
LOGE("service_reply_to_launch_request failed, %d", ret);
}
void _ug_client_destroy_cb(ui_gadget_h ug, void *priv)
{
+ struct appdata *ad = NULL;
+
if (!ug)
return;
- ug_destroy(ug);
+ ad = priv;
+ if (!ad) {
+ LOGE("appdata is null. win lower is fail");
+ } else {
+ LOGD("window lower");
+ elm_win_lower(ad->win);
+ }
+
+ elm_exit();
+}
+
+void _ug_client_end_cb(ui_gadget_h ug, void *priv)
+{
+ if (!ug)
+ return;
+
+ LOGD("_ug_client_end_cb invoked");
+
elm_exit();
}
@@ -181,7 +215,7 @@ static void profile_changed_cb(void *data, Evas_Object * obj, void *event)
LOGE("!!! profile_changed_cb(%s) !!!", profile);
if (strcmp(profile, "desktop") == 0)
- elm_win_indicator_mode_set (obj, ELM_WIN_INDICATOR_HIDE);
+ elm_win_indicator_mode_set(obj, ELM_WIN_INDICATOR_HIDE);
}
static Evas_Object *create_win(const char *name)
@@ -201,6 +235,8 @@ static Evas_Object *create_win(const char *name)
ee = ecore_evas_ecore_evas_get(evas_object_evas_get(eo));
evas_output_size_get(ee, &w, &h);
evas_object_resize(eo, w, h);
+
+ elm_win_indicator_mode_set(eo,ELM_WIN_INDICATOR_SHOW);
}
return eo;
@@ -237,13 +273,43 @@ static int low_battery(void *data)
static int lang_changed(void *data)
{
+ char* lang = NULL;
+
+ lang = vconf_get_str(VCONFKEY_LANGSET);
+ if(lang) {
+ LOGD("lang : %s", lang);
+ elm_language_set((const char*)lang);
+ free(lang);
+ } else {
+ LOGW("language get error");
+ }
+
return ug_send_event(UG_EVENT_LANG_CHANGE);
}
+static int region_changed(void *data)
+{
+ return ug_send_event(UG_EVENT_REGION_CHANGE);
+}
+
+static void _home_screen_top_cb(keynode_t* node, void *data)
+{
+ struct appdata *ad = data;
+
+ if (!node) {
+ LOGE("home screen top cb node value is null");
+ return;
+ }
+
+ if ((node->value.i == VCONFKEY_IDLE_SCREEN_TOP_TRUE) && (!ad->is_transient)) {
+ LOGW("home key pressed. window is not transient. ug client will be terminated");
+ elm_exit();
+ }
+}
+
static int app_create(void *data)
{
struct appdata *ad = data;
- enum appcore_rm rm;
Evas_Object *win;
Evas_Object *ly;
Evas_Object *conform;
@@ -279,7 +345,6 @@ static int app_create(void *data)
edje_object_signal_callback_add(elm_layout_edje_get(ly),
"EXIT", "*", main_quit_cb, NULL);
ad->ly_main = ly;
- elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW);
lang_changed(ad);
/* rotate notice */
@@ -305,6 +370,7 @@ static int app_create(void *data)
appcore_set_event_callback(APPCORE_EVENT_LOW_MEMORY, low_memory, ad);
appcore_set_event_callback(APPCORE_EVENT_LOW_BATTERY, low_battery, ad);
appcore_set_event_callback(APPCORE_EVENT_LANG_CHANGE, lang_changed, ad);
+ appcore_set_event_callback(APPCORE_EVENT_REGION_CHANGE, region_changed, ad);
return 0;
}
@@ -329,6 +395,14 @@ static int app_terminate(void *data)
ad->win = NULL;
}
+ service_destroy(ad->request);
+
+ if (ad->name) {
+ free(ad->name);
+ }
+
+ LOGD("app_terminate end");
+
return 0;
}
@@ -339,10 +413,14 @@ static int app_pause(void *data)
LOGD("app_pause called");
ug_pause();
+
+#if ENABLE_TRANSIENT_SUB_MODE
if (!ad->is_transient) {
LOGD("app_pause received. close ug service");
elm_exit();
}
+#endif
+
return 0;
}
@@ -369,10 +447,15 @@ static int app_reset(bundle *b, void *data)
ret = appsvc_request_transient_app(b, id2, svc_cb, "svc test");
- if (ret)
+ if (ret) {
LOGD("fail to request transient app: return value(%d)", ret);
- else
+ if(vconf_notify_key_changed(VCONFKEY_IDLE_SCREEN_TOP, _home_screen_top_cb, ad) != 0) {
+ LOGW("home screen vconf key changed cb error");
+ }
+ } else {
+ /* check home screen raise */
ad->is_transient = 1;
+ }
if (ad->win) {
elm_win_activate(ad->win);
@@ -392,6 +475,7 @@ static int app_reset(bundle *b, void *data)
cbs.layout_cb = _ug_client_layout_cb;
cbs.destroy_cb = _ug_client_destroy_cb;
cbs.result_cb = _ug_client_result_cb;
+ cbs.end_cb = _ug_client_end_cb;
cbs.priv = ad;
mode = ad->is_frameview ? UG_MODE_FRAMEVIEW : UG_MODE_FULLVIEW;
@@ -414,8 +498,6 @@ static int update_argument(const char *optarg, struct appdata *ad)
return -1;
val = optarg + strlen(key) + 1;
- if (!val)
- return -1;
if (!ad->data)
ad->data = bundle_create();
diff --git a/client/ug-client.h b/client/ug-client.h
index af62743..ab6ee0c 100755
--- a/client/ug-client.h
+++ b/client/ug-client.h
@@ -48,7 +48,7 @@ struct appdata {
Evas_Object *conform;
ui_gadget_h ug;
- const char *name;
+ char *name;
int is_frameview;
int is_transient;
diff --git a/include/SLP_UI_Gadget_PG.h b/include/SLP_UI_Gadget_PG.h
index 70387f2..08f683d 100755
--- a/include/SLP_UI_Gadget_PG.h
+++ b/include/SLP_UI_Gadget_PG.h
@@ -189,8 +189,6 @@ UG_OPT_INDICATOR_LANDSCAPE_ONLY
UG_OPT_INDICATOR_DISABLE
// current indicator status will be held
UG_OPT_INDICATOR_MANUAL
-// Enable indicator overlap
-UG_OPT_OVERLAP_ENABLE
@endcode
\note <b>struct ug_data</b> is a user defined private data structure describing base layout, own UI gadget handler, and whatever you need:
@@ -509,7 +507,6 @@ Available options are as following:
- UG_OPT_LANDSCAPE_ONLY
- UG_OPT_INDICATOR_DISABLE
- UG_OPT_INDICATOR_MANUAL
-- UG_OPT_OVERLAP_ENABLE
And we used UG_OPT_INDICATOR_POTRAIT_ONLY in "helloUG-efl"
diff --git a/include/ug-module.h b/include/ug-module.h
index 7d7bf5e..2db135f 100644
--- a/include/ug-module.h
+++ b/include/ug-module.h
@@ -28,6 +28,7 @@ struct ug_module {
void *handle;
char *module_name;
struct ug_module_ops ops;
+ char *addr;
};
struct ug_module *ug_module_load(const char *name);
diff --git a/include/ug.h b/include/ug.h
index fe3be22..eb2ae64 100755
--- a/include/ug.h
+++ b/include/ug.h
@@ -22,18 +22,16 @@
#ifndef __UG_H__
#define __UG_H__
-#include <bundle.h>
#include "ug-module.h"
#include "ui-gadget.h"
-struct ug_child;
-
enum ug_state {
UG_STATE_READY = 0x00,
UG_STATE_CREATED,
UG_STATE_RUNNING,
UG_STATE_STOPPED,
UG_STATE_DESTROYING,
+ UG_STATE_PENDING_DESTROY,
UG_STATE_DESTROYED,
UG_STATE_INVALID,
UG_STATE_MAX
@@ -50,6 +48,11 @@ enum ug_layout_state {
UG_LAYOUT_MAX
};
+enum ug_ui_req {
+ UG_UI_REQ_GET_CONFORMANT = 0x00,
+ UG_UI_REQ_MAX
+};
+
struct ui_gadget_s {
const char *name;
void *layout;
diff --git a/include/ui-gadget-engine.h b/include/ui-gadget-engine.h
index 13986cf..7581256 100755
--- a/include/ui-gadget-engine.h
+++ b/include/ui-gadget-engine.h
@@ -38,7 +38,6 @@
* @{
*/
-#include <bundle.h>
#include "ui-gadget.h"
#ifdef __cplusplus
@@ -54,8 +53,10 @@ struct ug_engine_ops {
void *(*create)(void *win, ui_gadget_h ug, void(*show_end_cb)(void *data));
/** destroy operation */
void (*destroy)(ui_gadget_h ug, ui_gadget_h fv_top, void(*hide_end_cb)(void *data));
+ /** request operation */
+ void *(*request)(void *data, ui_gadget_h ug, int req);
/** reserved operations */
- void *reserved[4];
+ void *reserved[3];
};
#ifdef __cplusplus
diff --git a/include/ui-gadget.h b/include/ui-gadget.h
index fbad11d..41f5637 100644
--- a/include/ui-gadget.h
+++ b/include/ui-gadget.h
@@ -131,7 +131,7 @@ enum ug_option {
/**< Indicator option:
Indicator will be handled manually */
UG_OPT_OVERLAP_ENABLE = 0x08,
- /**< Overlap option: Enable indicator overlap */
+ /**< Overlap option: Enable indicator overlap */
UG_OPT_MAX
};
diff --git a/packaging/ui-gadget-1.spec b/packaging/ui-gadget-1.spec
index baa0a30..3c084a9 100644
--- a/packaging/ui-gadget-1.spec
+++ b/packaging/ui-gadget-1.spec
@@ -3,7 +3,7 @@
Name: ui-gadget-1
Summary: UI Gadget Library
-Version: 0.1.25
+Version: 0.1.30
Release: 1
Group: System/Libraries
License: Apache License, Version 2.0
@@ -21,8 +21,8 @@ BuildRequires: pkgconfig(x11)
%endif
BuildRequires: pkgconfig(appsvc)
BuildRequires: pkgconfig(capi-appfw-application)
-BuildRequires: pkgconfig(capi-system-runtime-info)
BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(vconf)
BuildRequires: cmake
BuildRequires: edje-bin
BuildRequires: pkgconfig(libtzplatform-config)
@@ -59,8 +59,10 @@ make %{?jobs:-j%jobs}
%install
rm -rf %{buildroot}
%make_install
+mkdir -p %{buildroot}/usr/share/license
+install LICENSE %{buildroot}/usr/share/license/%{name}
-%post
+%post
/sbin/ldconfig
ln -sf %{TZ_SYS_BIN}/ug-client %{TZ_SYS_BIN}/ug-launcher
@@ -75,6 +77,7 @@ ln -sf %{TZ_SYS_BIN}/ug-client %{TZ_SYS_BIN}/ug-launcher
%{_bindir}/ug-client
/usr/share/edje/ug-client/*.edj
%{TZ_SYS_ETC}/smack/accesses.d/ui-gadget-1.rule
+/usr/share/license/%{name}
%files devel
%manifest %{name}.manifest
diff --git a/src/manager.c b/src/manager.c
index c96d5b2..015e1eb 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -38,6 +38,11 @@
#include "ug-engine.h"
#include "ug-dbg.h"
+#define Idle_Cb Ecore_Cb
+
+#define ugman_idler_add(func, data) \
+ ecore_job_add((Ecore_Cb) func, (void *)data);
+
struct ug_manager {
ui_gadget_h root;
ui_gadget_h fv_top;
@@ -85,12 +90,19 @@ static int ug_relation_del(ui_gadget_h ug)
p = ug->parent;
if (!p) {
- _ERR("ug_relation_del failed: no parent");
+ _WRN("ug_relation_del failed: no parent");
return -1;
}
- p->children = g_slist_remove(p->children, ug);
- if (ug->children)
+
+ if(p->children) {
+ p->children = g_slist_remove(p->children, ug);
+ }
+
+ if (ug->children) {
g_slist_free(ug->children);
+ ug->children = NULL;
+ }
+
ug->parent = NULL;
return 0;
@@ -242,10 +254,11 @@ static void ugman_tree_dump(ui_gadget_h ug)
while (child) {
c = child->data;
- _DBG("[%d] %s [%c] (%p) (PARENT: %s)",
+ _DBG("[%d] %s [%c] (mem : %s) (ug : %p) (PARENT: %s)",
lv,
c && c->name ? c->name : "NO CHILD INFO FIXIT!!!",
- c && c->mode == UG_MODE_FULLVIEW ? 'F' : 'f', c, name);
+ c && c->mode == UG_MODE_FULLVIEW ? 'F' : 'f',
+ c->module->addr, c, name);
ugman_tree_dump(c);
child = g_slist_next(child);
}
@@ -279,7 +292,7 @@ static void ugman_ug_start(void *data)
_ERR("ug is null");
return;
} else if (ug->state != UG_STATE_CREATED) {
- _ERR("ug(%p) state(%d) is error", ug, ug->state);
+ _DBG("start cb will be not invoked because ug(%p) state(%d) is not created", ug, ug->state);
return;
}
@@ -339,6 +352,8 @@ static int ugman_ug_resume(void *data)
if (!ug)
goto end;
+ _DBG("ug(%p)->state : %d", ug, ug->state);
+
switch (ug->state) {
case UG_STATE_CREATED:
ugman_ug_start(ug);
@@ -401,36 +416,40 @@ static int ugman_indicator_update(enum ug_option opt, enum ug_event event)
_DBG("indicator update opt(%d) cur_state(%d)", opt, cur_state);
+#ifndef ENABLE_UG_HANDLE_INDICATOR_HIDE
+ enable = 1;
+#else
switch (GET_OPT_INDICATOR_VAL(opt)) {
- case UG_OPT_INDICATOR_ENABLE:
- if (event == UG_EVENT_NONE)
- enable = 1;
- else
- enable = cur_state ? 1 : 0;
- break;
- case UG_OPT_INDICATOR_PORTRAIT_ONLY:
- enable = ug_man.is_landscape ? 0 : 1;
- break;
- case UG_OPT_INDICATOR_LANDSCAPE_ONLY:
- enable = ug_man.is_landscape ? 1 : 0;
- break;
- case UG_OPT_INDICATOR_DISABLE:
- enable = 0;
- break;
- case UG_OPT_INDICATOR_MANUAL:
- return 0;
- default:
- _ERR("update failed: Invalid opt(%d)", opt);
- return -1;
+ case UG_OPT_INDICATOR_ENABLE:
+ if (event == UG_EVENT_NONE)
+ enable = 1;
+ else
+ enable = cur_state ? 1 : 0;
+ break;
+ case UG_OPT_INDICATOR_PORTRAIT_ONLY:
+ enable = ug_man.is_landscape ? 0 : 1;
+ break;
+ case UG_OPT_INDICATOR_LANDSCAPE_ONLY:
+ enable = ug_man.is_landscape ? 1 : 0;
+ break;
+ case UG_OPT_INDICATOR_DISABLE:
+ enable = 0;
+ break;
+ case UG_OPT_INDICATOR_MANUAL:
+ return 0;
+ default:
+ _ERR("update failed: Invalid opt(%d)", opt);
+ return -1;
}
+#endif
if(cur_state != enable) {
_DBG("set indicator as %d", enable);
-
#ifndef WAYLAND
utilx_enable_indicator(ug_man.disp, ug_man.win_id, enable);
#endif
}
+
return 0;
}
@@ -479,38 +498,31 @@ static int ugman_ug_destroy(void *data)
{
ui_gadget_h ug = data;
struct ug_module_ops *ops = NULL;
- GSList *child, *trail;
+ struct ug_cbs *cbs;
job_start();
if (!ug)
goto end;
- _DBG("ugman_ug_destroy ug(%p) state(%d)", ug, ug->state);
+ _DBG("ug(%p) state(%d)", ug, ug->state);
switch (ug->state) {
- case UG_STATE_CREATED:
- case UG_STATE_RUNNING:
- case UG_STATE_STOPPED:
- case UG_STATE_DESTROYING:
- break;
- default:
- goto end;
+ case UG_STATE_CREATED:
+ case UG_STATE_RUNNING:
+ case UG_STATE_STOPPED:
+ case UG_STATE_DESTROYING:
+ case UG_STATE_PENDING_DESTROY:
+ break;
+ default:
+ _WRN("ug(%p) state is already destroyed", ug);
+ goto end;
}
ug->state = UG_STATE_DESTROYED;
- if (ug->children) {
- child = ug->children;
- _DBG("ug_destroy ug(%p) has child(%p)", ug, child->data);
- while (child) {
- trail = g_slist_next(child);
- ugman_ug_destroy(child->data);
- child = trail;
- }
- }
-
if((ug != ug_man.root) && (ug->layout) &&
+ (ug->mode == UG_MODE_FULLVIEW) &&
(ug->layout_state != UG_LAYOUT_DESTROY)) {
/* ug_destroy_all case */
struct ug_engine_ops *eng_ops = NULL;
@@ -530,13 +542,29 @@ static int ugman_ug_destroy(void *data)
ops->destroy(ug, ug->service, ops->priv);
}
+ cbs = &ug->cbs;
+ if (cbs && cbs->end_cb) {
+ _DBG("ug(%p) end cb will be invoked", ug);
+ cbs->end_cb(ug, cbs->priv);
+ }
+
+ if((ug->parent) && (ug->parent->state == UG_STATE_PENDING_DESTROY)) {
+ if((ug->parent->children) && (g_slist_length(ug->parent->children) == 1)) {
+ _WRN("pended parent ug(%p) destroy job is added to loop", ug->parent);
+ ugman_idler_add((Idle_Cb)ugman_ug_destroy, ug->parent);
+ } else {
+ _WRN("pended parent ug(%p) will be destroyed after another children is destroyed", ug->parent);
+ }
+ }
+
if (ug != ug_man.root)
ug_relation_del(ug);
if (ug->mode == UG_MODE_FULLVIEW) {
if (ug_man.fv_top == ug) {
ug_fvlist_del(ug);
- ugman_ug_getopt(ug_man.fv_top);
+ if(!ug_man.destroy_all)
+ ugman_ug_getopt(ug_man.fv_top);
} else {
ug_fvlist_del(ug);
}
@@ -558,7 +586,12 @@ static int ugman_ug_destroy(void *data)
static void ug_hide_end_cb(void *data)
{
ui_gadget_h ug = data;
- ecore_idler_add((Ecore_Task_Cb)ugman_ug_destroy, ug);
+ if (ug->children) {
+ _WRN("child ug is still destroying. parent ug(%p) will be destroyed later", ug);
+ ug->state = UG_STATE_PENDING_DESTROY;
+ } else {
+ ugman_idler_add((Idle_Cb)ugman_ug_destroy, (void *)ug);
+ }
}
static int ugman_ug_create(void *data)
@@ -590,8 +623,9 @@ static int ugman_ug_create(void *data)
}
if (ug->mode == UG_MODE_FULLVIEW) {
if (eng_ops && eng_ops->create) {
- //change start cb function call after transition,finished for fullview
ug_man.conform = eng_ops->create(ug_man.win, ug, ugman_ug_start);
+ if(!ug_man.conform)
+ return -1;
}
}
cbs = &ug->cbs;
@@ -642,8 +676,18 @@ int ugman_ug_add(ui_gadget_h parent, ui_gadget_h ug)
ug_fvlist_add(ug_man.root);
}
- if (!parent)
+ if (!parent) {
parent = ug_man.root;
+ } else {
+ switch (parent->state) {
+ case UG_STATE_DESTROYING:
+ case UG_STATE_PENDING_DESTROY:
+ case UG_STATE_DESTROYED:
+ _WRN("parent(%p) state(%d) error", parent, parent->state);
+ return -1;
+ default:;
+ }
+ }
if (ug_relation_add(parent, ug)) {
_ERR("failed : ug_relation_add fail");
@@ -707,7 +751,8 @@ ui_gadget_h ugman_ug_load(ui_gadget_h parent,
int ugman_ug_destroying(ui_gadget_h ug)
{
struct ug_module_ops *ops = NULL;
- GSList *child, *trail;
+
+ _DBG("ugman_ug_destroying");
ug->destroy_me = 1;
ug->state = UG_STATE_DESTROYING;
@@ -715,15 +760,6 @@ int ugman_ug_destroying(ui_gadget_h ug)
if (ug->module)
ops = &ug->module->ops;
- if (ug->children) {
- child = ug->children;
- while (child) {
- trail = g_slist_next(child);
- ugman_ug_destroying(child->data);
- child = trail;
- }
- }
-
if (ops && ops->destroying)
ops->destroying(ug, ug->service, ops->priv);
@@ -743,12 +779,12 @@ int ugman_ug_del(ui_gadget_h ug)
_DBG("ugman_ug_del start ug(%p)", ug);
if (ug->destroy_me) {
- _ERR("ugman_ug_del failed: ug is alreay on destroying");
+ _WRN("ugman_ug_del failed: ug is alreay on destroying");
return -1;
}
if (!ug_man.is_initted) {
- _ERR("ugman_ug_del failed: manager is not initted");
+ _WRN("ugman_ug_del failed: manager is not initted");
return -1;
}
@@ -757,6 +793,18 @@ int ugman_ug_del(ui_gadget_h ug)
return -1;
}
+ if (ug->children) {
+ GSList *child, *trail;
+
+ child = ug->children;
+ _DBG("ugman_ug_del ug(%p) has child(%p)", ug, child->data);
+ while (child) {
+ trail = g_slist_next(child);
+ ugman_ug_del(child->data);
+ child = trail;
+ }
+ }
+
ugman_ug_destroying(ug);
/* pre call for indicator update time issue */
@@ -776,6 +824,7 @@ int ugman_ug_del(ui_gadget_h ug)
}
}
}
+
if((is_update)&&(t)) {
ugman_ug_getopt(t);
}
@@ -783,14 +832,37 @@ int ugman_ug_del(ui_gadget_h ug)
if (ug_man.engine)
eng_ops = &ug_man.engine->ops;
- if (eng_ops && eng_ops->destroy)
- if (ug->mode == UG_MODE_FULLVIEW)
+ if (ug->mode == UG_MODE_FULLVIEW) {
+ if (eng_ops && eng_ops->destroy)
eng_ops->destroy(ug, ug_man.fv_top, ug_hide_end_cb);
- else {
- eng_ops->destroy(ug, NULL, ug_hide_end_cb);
+ else
+ ugman_idler_add((Idle_Cb)ugman_ug_destroy, ug);
+ } else {
+ _DBG("ug(%p) mode is frameview", ug);
+ ug_hide_end_cb(ug);
+ }
+
+ _DBG("ugman_ug_del(%p) end", ug);
+
+ return 0;
+}
+
+
+int ugman_ug_del_child(ui_gadget_h ug)
+{
+ GSList *child, *trail;
+
+ if (ug->children) {
+ child = ug->children;
+ _DBG("ug destroy all. ug(%p) has child(%p)", ug, child->data);
+ while (child) {
+ trail = g_slist_next(child);
+ ugman_ug_del_child(child->data);
+ child = trail;
}
- else
- ecore_idler_add((Ecore_Task_Cb)ugman_ug_destroy, ug);
+ }
+
+ ugman_ug_destroy(ug);
return 0;
}
@@ -810,10 +882,11 @@ int ugman_ug_del_all(void)
_DBG("ug_del_all. root(%p) walking(%d) ", ug_man.root, ug_man.walking);
- if (ug_man.walking > 0)
+ if (ug_man.walking > 0) {
ug_man.destroy_all = 1;
- else
- ugman_ug_destroy(ug_man.root);
+ } else {
+ ugman_ug_del_child(ug_man.root);
+ }
return 0;
}
@@ -821,13 +894,17 @@ int ugman_ug_del_all(void)
#ifndef WAYLAND
int ugman_init(Display *disp, Window xid, void *win, enum ug_option opt)
{
- ug_man.is_initted = 1;
ug_man.win = win;
ug_man.disp = disp;
ug_man.win_id = xid;
ug_man.base_opt = opt;
ug_man.last_rotate_evt = UG_EVENT_NONE;
- ug_man.engine = ug_engine_load();
+
+ if (!ug_man.is_initted) {
+ ug_man.engine = ug_engine_load();
+ }
+
+ ug_man.is_initted = 1;
return 0;
}
@@ -848,7 +925,7 @@ int ugman_resume(void)
_DBG("ugman_resume called");
- ecore_idler_add((Ecore_Task_Cb)ugman_ug_resume, ug_man.root);
+ ugman_idler_add((Idle_Cb)ugman_ug_resume, ug_man.root);
return 0;
}
@@ -862,13 +939,13 @@ int ugman_pause(void)
}
if (!ug_man.root) {
- _ERR("ugman_pause failed: no root");
+ _WRN("ugman_pause failed: no root");
return -1;
}
_DBG("ugman_pause called");
- ecore_idler_add((Ecore_Task_Cb)ugman_ug_pause, ug_man.root);
+ ugman_idler_add((Idle_Cb)ugman_ug_pause, ug_man.root);
return 0;
}
@@ -915,7 +992,7 @@ int ugman_send_event(enum ug_event event)
is_rotation = 0;
}
- ecore_idler_add((Ecore_Task_Cb)ugman_send_event_pre, (void *)event);
+ ugman_idler_add((Idle_Cb)ugman_send_event_pre, (void *)event);
if (is_rotation && ug_man.fv_top)
ugman_indicator_update(ug_man.fv_top->opt, event);
@@ -993,9 +1070,30 @@ void *ugman_get_window(void)
void *ugman_get_conformant(void)
{
- return ug_man.conform;
-}
+ struct ug_engine_ops *eng_ops = NULL;
+ void* ret = NULL;
+
+ if(ug_man.conform) {
+ _DBG("return cached conform(%p) info", ug_man.conform);
+ return ug_man.conform;
+ }
+
+ if (ug_man.engine) {
+ eng_ops = &ug_man.engine->ops;
+ } else {
+ _WRN("ui engine is not loaded");
+ return NULL;
+ }
+ if (eng_ops && eng_ops->create) {
+ ret = eng_ops->request(ug_man.win, NULL, UG_UI_REQ_GET_CONFORMANT);
+ ug_man.conform = ret;
+ } else {
+ _WRN("ui engine is not loaded");
+ }
+
+ return ret;
+}
static inline void job_start(void)
{
@@ -1008,8 +1106,10 @@ static inline void job_end(void)
if (!ug_man.walking && ug_man.destroy_all) {
ug_man.destroy_all = 0;
- if (ug_man.root)
- ugman_ug_destroy(ug_man.root);
+ if (ug_man.root) {
+ _DBG("ug_destroy_all pneding job exist. ug_destroy_all begin");
+ ugman_ug_del_all();
+ }
}
if (ug_man.walking < 0)
diff --git a/src/module.c b/src/module.c
index 8307325..e07291e 100644
--- a/src/module.c
+++ b/src/module.c
@@ -38,6 +38,9 @@
#define UG_MODULE_INIT_SYM "UG_MODULE_INIT"
#define UG_MODULE_EXIT_SYM "UG_MODULE_EXIT"
+#define MEM_ADDR_LEN 8
+#define MEM_ADDR_TOT_LEN 17
+
static int file_exist(const char *filename)
{
FILE *file;
@@ -49,6 +52,66 @@ static int file_exist(const char *filename)
return 0;
}
+static char *__ug_module_get_addr(const char *ug_so)
+{
+ FILE *file;
+ int ret;
+ char buf[PATH_MAX] = {0,};
+ char mem[PATH_MAX] = {0,};
+
+ char *token_param = NULL;
+ char *saveptr = NULL;
+ int cnt = 0;
+
+ if(ug_so == NULL)
+ goto func_out;
+
+ snprintf(buf, sizeof(buf), "/proc/%d/maps", getpid());
+
+ file = fopen(buf, "r");
+ if (file == NULL) {
+ _WRN("proc open fail(%d)", errno);
+ goto func_out;
+ }
+
+ memset(buf, 0x00, PATH_MAX);
+
+ while(fgets(buf, PATH_MAX, file) != NULL)
+ {
+ if(strstr(buf, ug_so)) {
+ token_param = strtok_r(buf," ", &saveptr);
+ if((token_param == NULL) || (strlen(token_param) > MEM_ADDR_TOT_LEN)) {
+ _ERR("proc token param(%s) error", token_param);
+ goto close_out;
+ }
+
+ if(cnt > 0) {
+ memcpy((void *)(mem+MEM_ADDR_LEN+1),
+ (const void *)(token_param+MEM_ADDR_LEN+1), MEM_ADDR_LEN);
+ } else {
+ memcpy((void *)mem, (const void *)token_param, strlen(token_param));
+ cnt++;
+ }
+ } else {
+ if(cnt > 0)
+ goto close_out;
+ }
+
+ memset(buf, 0x00, PATH_MAX);
+ saveptr = NULL;
+ }
+
+close_out:
+ fclose(file);
+ file = NULL;
+
+func_out:
+ if(strlen(mem) > 0)
+ return strdup(mem);
+ else
+ return NULL;
+}
+
struct ug_module *ug_module_load(const char *name)
{
void *handle;
@@ -78,6 +141,9 @@ struct ug_module *ug_module_load(const char *name)
snprintf(ug_file, PATH_MAX, "/usr/ug/lib/libug-%s.so", name);
if (file_exist(ug_file))
break;
+ snprintf(ug_file, PATH_MAX, "/opt/ug/lib/libug-%s.so", name);
+ if (file_exist(ug_file))
+ break;
snprintf(ug_file, PATH_MAX, "/opt/usr/ug/lib/libug-%s.so", name);
if (file_exist(ug_file))
break;
@@ -105,6 +171,9 @@ struct ug_module *ug_module_load(const char *name)
module->handle = handle;
module->module_name = strdup(name);
+
+ module->addr = __ug_module_get_addr(ug_file);
+
return module;
module_dlclose:
@@ -131,6 +200,7 @@ int ug_module_unload(struct ug_module *module)
else
_ERR("dlsym failed: %s", dlerror());
+ _DBG("dlclose(%s)", module->module_name);
dlclose(module->handle);
module->handle = NULL;
}
@@ -138,6 +208,9 @@ int ug_module_unload(struct ug_module *module)
if(module->module_name)
free(module->module_name);
+ if(module->addr)
+ free(module->addr);
+
free(module);
return 0;
}
diff --git a/ug-efl-engine/ug-efl-engine.c b/ug-efl-engine/ug-efl-engine.c
index 1faefb8..88ff163 100755
--- a/ug-efl-engine/ug-efl-engine.c
+++ b/ug-efl-engine/ug-efl-engine.c
@@ -36,49 +36,39 @@ static Evas_Object *conform = NULL;
static void on_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void (*show_end_cb)(void* data) = NULL;
static void (*hide_end_cb)(void* data) = NULL;
+static void __show_finished(void *data, Evas_Object *obj, void *event_info);
-static void _layout_del_cb(void *data, Evas_Object *obj, void *event_info)
+static Evas_Object *_get_win_conformant(Evas_Object *win)
{
- ui_gadget_h ug = (ui_gadget_h)data;
- if (!ug)
- return;
+ Evas_Object *con = NULL;
- _WRN("ug(%p) layout is deleted by abnormal path", ug);
+ if (!win) {
+ _WRN("\t Invalid param error");
+ return NULL;
+ }
- evas_object_event_callback_del(ug->layout, EVAS_CALLBACK_DEL, _layout_del_cb);
+ con = evas_object_data_get(win, "\377 elm,conformant");
+ if (con)
+ _DBG("\t success to get conformant");
+ else
+ _WRN("\t fail to get conformant");
- ug->layout_state = UG_LAYOUT_DESTROY;
- ug->layout = NULL;
+ return con;
}
-static Eina_Bool __destroy_end_cb(void *data)
+static void _layout_del_cb(void *data, Evas_Object *obj, void *event_info)
{
- GSList *child;
ui_gadget_h ug = (ui_gadget_h)data;
+ if (!ug)
+ return;
- _DBG("\t __destroy_end_cb ug=%p", ug);
-
- if (ug->children) {
- child = ug->children;
- //_DBG("\t ug(%p) has children(%p)", ug, child);
- while (child) {
- if(!child->data) {
- _ERR("child->data is null");
- return ECORE_CALLBACK_CANCEL;
- }
-
- //_DBG("\t child(%p) layout_state(%d)", child, ((ui_gadget_h)child->data)->layout_state);
+ _WRN("ug(%p) layout is deleted by abnormal path", ug);
- if( ((ui_gadget_h)child->data)->layout_state == UG_LAYOUT_HIDEEFFECT) {
- //_DBG("\t wait hideeffect child(%p)", ug);
- return ECORE_CALLBACK_RENEW;
- }
- child = g_slist_next(child);
- }
- }
+ evas_object_event_callback_del(ug->layout, EVAS_CALLBACK_DEL,
+ (Evas_Object_Event_Cb)_layout_del_cb);
- hide_end_cb(ug);
- return ECORE_CALLBACK_CANCEL;
+ ug->layout_state = UG_LAYOUT_DESTROY;
+ ug->layout = NULL;
}
static void __del_effect_end(ui_gadget_h ug)
@@ -94,12 +84,13 @@ static void __del_effect_end(ui_gadget_h ug)
}
if (ug->layout) {
evas_object_hide(ug->layout);
- evas_object_event_callback_del(ug->layout, EVAS_CALLBACK_DEL, _layout_del_cb);
+ evas_object_event_callback_del(ug->layout, EVAS_CALLBACK_DEL,
+ (Evas_Object_Event_Cb)_layout_del_cb);
}
- ecore_idler_add((Ecore_Task_Cb)__destroy_end_cb, (void *)ug);
-
ug->layout_state = UG_LAYOUT_DESTROY;
+
+ hide_end_cb(ug);
}
static void __del_finished(void *data, Evas_Object *obj, void *event_info)
@@ -131,39 +122,19 @@ static void __del_effect_top_layout(ui_gadget_h ug)
static void __del_effect_layout(ui_gadget_h ug, ui_gadget_h t_ug)
{
- GSList *child;
-
if (!ug)
return;
_DBG("\t ug=%p state=%d , t_ug=%p", ug, ug->layout_state, t_ug);
- if (ug->children) {
- child = ug->children;
- _DBG("\t ug(%p) has children(%p)", ug, child);
- while (child) {
- __del_effect_layout(child->data, t_ug);
- child = g_slist_next(child);
- }
- }
-
- if((ug == t_ug)&&(ug->layout_state != UG_LAYOUT_NOEFFECT)){
- if (ug->layout_state != UG_LAYOUT_HIDEEFFECT) {
- __del_effect_top_layout(ug);
- } else {
- _ERR("\t top ug(%p) state is hideeffect.");
- return;
- }
- } else {
- _DBG("\t remove navi item: ug=%p state=%d", ug, ug->layout_state);
- elm_object_item_del(ug->effect_layout);
- ug->effect_layout = NULL;
- }
+ _DBG("\t remove navi item: ug=%p state=%d", ug, ug->layout_state);
+ elm_object_item_del(ug->effect_layout);
+ ug->effect_layout = NULL;
__del_effect_end(ug);
}
-static void __hide_effect_end(ui_gadget_h ug)
+static void __hide_end(ui_gadget_h ug)
{
if (navi) {
Elm_Object_Item *t = elm_naviframe_top_item_get(navi);
@@ -178,6 +149,11 @@ static void __hide_effect_end(ui_gadget_h ug)
if (ug->layout) {
evas_object_hide(ug->layout);
}
+}
+
+static void __hide_effect_end(ui_gadget_h ug)
+{
+ __hide_end(ug);
ug->layout_state = UG_LAYOUT_HIDE;
}
@@ -220,7 +196,8 @@ static void __on_hideonly_cb(void *data, Evas_Object *obj)
return;
}
- if (elm_naviframe_top_item_get(navi) == ug->effect_layout) {
+ if ((elm_naviframe_top_item_get(navi) == ug->effect_layout)
+ && (ug->layout_state != UG_LAYOUT_NOEFFECT)) {
_DBG("\t cb transition add ug=%p", ug);
evas_object_smart_callback_add(navi, "transition,finished",
__hide_finished, ug);
@@ -228,7 +205,7 @@ static void __on_hideonly_cb(void *data, Evas_Object *obj)
ug->layout_state = UG_LAYOUT_HIDEEFFECT;
} else {
elm_object_item_del(ug->effect_layout);
- __hide_effect_end(ug);
+ __hide_end(ug);
}
ug->effect_layout = NULL;
@@ -239,14 +216,15 @@ static void on_destroy(ui_gadget_h ug, ui_gadget_h t_ug,
{
if (!ug)
return;
- _DBG("\t ug=%p tug=%p state=%d", ug, t_ug, ug->layout_state);
+ _DBG("\t ug=%p tug=%p layout_state=%d", ug, t_ug, ug->layout_state);
evas_object_intercept_hide_callback_del(ug->layout,
__on_hideonly_cb);
if(hide_cb == NULL) {
/* ug_destroy_all case */
- evas_object_event_callback_del(ug->layout, EVAS_CALLBACK_DEL, _layout_del_cb);
+ evas_object_event_callback_del(ug->layout, EVAS_CALLBACK_DEL,
+ (Evas_Object_Event_Cb)_layout_del_cb);
return;
}
@@ -261,29 +239,21 @@ static void on_destroy(ui_gadget_h ug, ui_gadget_h t_ug,
if(ug->layout_state == UG_LAYOUT_SHOW) {
__del_effect_top_layout(ug);
+ } else if (ug->layout_state == UG_LAYOUT_SHOWEFFECT) {
+ evas_object_smart_callback_del(navi, "transition,finished",
+ __show_finished);
+ __del_effect_top_layout(ug);
} else if (ug->layout_state == UG_LAYOUT_HIDE
- || ug->layout_state == UG_LAYOUT_NOEFFECT
- || ug->layout_state == UG_LAYOUT_SHOWEFFECT) {
+ || ug->layout_state == UG_LAYOUT_NOEFFECT) {
__del_effect_layout(ug, t_ug);
} else if (ug->layout_state == UG_LAYOUT_HIDEEFFECT) {
;
} else {
- _WRN("[UG Effect Plug-in] : layout state error!!");
+ _WRN("[UG Effect Plug-in] : layout state(%p) error!!", ug->layout_state);
__del_effect_end(ug);
}
}
-static void __update_indicator_overlap(int opt)
-{
- if (GET_OPT_OVERLAP_VAL(opt)) {
- _DBG("\t this is Overlap UG. Send overlap sig on_show_cb");
- elm_object_signal_emit(conform, "elm,state,indicator,overlap", "");
- } else {
- _DBG("\t this is no overlap UG. Send no overlap sig on_show_cb");
- elm_object_signal_emit(conform, "elm,state,indicator,nooverlap", "");
- }
-}
-
static void __show_finished(void *data, Evas_Object *obj, void *event_info)
{
ui_gadget_h ug = (ui_gadget_h)data;
@@ -330,17 +300,12 @@ static void on_show_cb(void *data, Evas *e, Evas_Object *obj,
_DBG("\t UG_LAYOUT_Init(%d) obj=%p", ug->layout_state, obj);
ug->layout_state = UG_LAYOUT_SHOWEFFECT;
- __update_indicator_overlap(ug->opt);
-
evas_object_smart_callback_add(navi, "transition,finished",
__show_finished, ug);
ug->effect_layout = elm_naviframe_item_push(navi, NULL, NULL, NULL,
ug->layout, NULL);
} else if (ug->layout_state == UG_LAYOUT_NOEFFECT) {
_DBG("\t UG_LAYOUT_NOEFFECT obj=%p", obj);
-
- __update_indicator_overlap(ug->opt);
-
Elm_Object_Item *navi_top = elm_naviframe_top_item_get(navi);
ug->effect_layout = elm_naviframe_item_insert_after(navi,
navi_top, NULL, NULL, NULL, ug->layout, NULL);
@@ -368,9 +333,10 @@ static void *on_create(void *win, ui_gadget_h ug,
if (con) {
conform = con;
_DBG("\t There is conformant");
+ } else {
+ _ERR("\t There is no conformant");
+ return NULL;
}
- else
- _DBG("\t There is NO conformant");
if (!navi) {
navi = elm_naviframe_add(conform);
@@ -392,13 +358,33 @@ static void *on_create(void *win, ui_gadget_h ug,
evas_object_hide(ug->layout);
evas_object_event_callback_add(ug->layout, EVAS_CALLBACK_SHOW, on_show_cb, ug);
- evas_object_event_callback_add(ug->layout, EVAS_CALLBACK_DEL, _layout_del_cb, ug);
+ evas_object_event_callback_add(ug->layout, EVAS_CALLBACK_DEL,
+ (Evas_Object_Event_Cb)_layout_del_cb, ug);
ug->layout_state = UG_LAYOUT_INIT;
return conform;
}
+static void *on_request(void *data, ui_gadget_h ug, int req)
+{
+ void *ret;
+
+ _DBG("on_request ug(%p) req(%d)", ug, req);
+
+ switch(req)
+ {
+ case UG_UI_REQ_GET_CONFORMANT :
+ ret = (void *)_get_win_conformant((Evas_Object *)data);
+ break;
+ default :
+ _WRN("wrong req id(%d)", req);
+ return NULL;
+ }
+
+ return ret;
+}
+
UG_ENGINE_API int UG_ENGINE_INIT(struct ug_engine_ops *ops)
{
if (!ops)
@@ -406,6 +392,7 @@ UG_ENGINE_API int UG_ENGINE_INIT(struct ug_engine_ops *ops)
ops->create = on_create;
ops->destroy = on_destroy;
+ ops->request = on_request;
return 0;
}
diff --git a/ui-gadget-1.rule b/ui-gadget-1.rule
index ae18ea8..6898151 100644
--- a/ui-gadget-1.rule
+++ b/ui-gadget-1.rule
@@ -7,47 +7,56 @@ ui-gadget::client sys-assert::core rwxat
e17 ui-gadget::client rwx--
stest-service ui-gadget::client r-x--
ui-gadget::client stest-service -w---
-ui-gadget::client system::vconf_setting r----
-ui-gadget::client system::vconf_inhouse r----
-ui-gadget::client system::vconf_privacy r----
-ui-gadget::client system::vconf_system r----
-ui-gadget::client system::vconf_multimedia r----
-ui-gadget::client system::vconf_network r----
-ui-gadget::client system::vconf_misc r----
+ui-gadget::client system::vconf_setting rwxat
+ui-gadget::client system::vconf_inhouse rwxat
+ui-gadget::client system::vconf_privacy rwxat
+ui-gadget::client system::vconf_system rwxat
+ui-gadget::client system::vconf_multimedia rwxat
+ui-gadget::client system::vconf_network rwxat
+ui-gadget::client system::vconf_misc rwxat
ui-gadget::client system::pulseaudio rwxat
-com.samsung.app-tray ui-gadget::client r-xat
+org.tizen.app-tray ui-gadget::client r-x--
ui-gadget::client isf rwx--
-ui-gadget::client com.samsung.indicator rwx--
+ui-gadget::client org.tizen.indicator rwx--
ui-gadget::client activesync-ui::eas-appsvc rw---
ui-gadget::client eas-engine rwx--
ui-gadget::client eas-engine::db rw---
ui-gadget::client csc-manager rwx--
ui-gadget::client secure-storage rwx--
-ui-gadget::client com.samsung.setting rwx--
+ui-gadget::client org.tizen.setting rwx--
ui-gadget::client cert-svc rwx--
ui-gadget::client pkgmgr::db rw---
+ui-gadget::client secure-storage::activesync rw---
ui-gadget::client email-service rwx--
ui-gadget::client email-service::db rw---
-ui-gadget::client com.samsung.gallery rwxa-
-ui-gadget::client com.samsung.email::db rw---
+ui-gadget::client org.tizen.gallery rwxa-
+ui-gadget::client org.tizen.email::db rw---
+ui-gadget::client org.tizen.setting::default-resources r-x--
+ui-gadget::client xorg::screencapture r----
ui-gadget::client ug_bluetooth r-x--
ui-gadget::client syspopup::db rwx--
+ui-gadget::client bt-service::admin -w---
+ui-gadget::client bt-service::gap -w---
+ui-gadget::client bt-service::manager -w---
ui-gadget::client system::home rwxat
ui-gadget::client device::app_logging -w---
ui-gadget::client media-data::db rw---
ui-gadget::client ail::db rw---
-ui-gadget::client com.samsung.gallery::web-media.db rwx--
-ui-gadget::client com.samsung.gallery::gallery-media.db rwx--
-ui-gadget::client com.samsung.gallery-service rwx--
-ui-gadget::client com.samsung.contacts rwx--
-ui-gadget::client com.samsung.cluster-home rwx--
+ui-gadget::client org.tizen.gallery::web-media.db rwx--
+ui-gadget::client org.tizen.gallery::gallery-media.db rwx--
+ui-gadget::client org.tizen.gallery-service rwx--
+ui-gadget::client org.tizen.contacts rwx--
+ui-gadget::client org.tizen.cluster-home rwx--
ui-gadget::client media-server rwx--
ui-gadget::client ug-image-viewer-efl rwxat
ui-gadget::client download-provider rw---
ui-gadget::client drmfw rw---
ui-gadget::client contacts-service rwx--
ui-gadget::client cbhm rwx--
-ui-gadget::client data-provider-master rwx--
+ui-gadget::client data-provider-master rw---
+ui-gadget::client data-provider-master::shortcut rw---
+ui-gadget::client data-provider-master::utility rw---
+ui-gadget::client data-provider-master::notification rw---
ui-gadget::client allshare::svc rwx--
ui-gadget::client sound_server rwx--
ui-gadget::client net-config r-x--
@@ -58,7 +67,7 @@ ui-gadget::client system::use_internet rwxat
ui-gadget::client system-server rwxa-
ui-gadget::client deviced rwxa-
ui-gadget::client dbus rwxat
-ui-gadget::client com.samsung.myfile rw---
+ui-gadget::client org.tizen.myfile rw---
ui-gadget::client dali rwxat
ui-gadget::client crash-worker --x--
ui-gadget::client msg-service rwx--
@@ -66,37 +75,51 @@ ui-gadget::client cloud-content-sync::db rw---
ui-gadget::client cloud-content-sync rwx--
ui-gadget::client device::video rw---
ui-gadget::client device::hwcodec rw---
-ui-gadget::client com.samsung.gallery::face-svc.db rwx--
+ui-gadget::client org.tizen.gallery::face-svc.db rwx--
ui-gadget::client ug-email-viewer-efl rwx--
ui-gadget::client ug-email-docsearch-efl --x--
+ui-gadget::client camera-external-engine rw---
+ui-gadget::client system::vconf_inouse r----
aul ui-gadget::client rwx--
isf ui-gadget::client r----
-com.samsung.gallery-service ui-gadget::client rwx--
-com.samsung.cluster-home ug-image-viewer-efl r-x--
-com.samsung.lockscreen ug-image-viewer-efl r-x--
-ui-gadget::client contacts-service::db rw---
-ui-gadget::client com.samsung.smemo rwx--
+org.tizen.gallery-service ui-gadget::client rwx--
+org.tizen.cluster-home ug-image-viewer-efl r-x--
+org.tizen.lockscreen ug-image-viewer-efl r-x--
+ui-gadget::client contacts-service::db rwx--
+ui-gadget::client org.tizen.smemo rwx--
ui-gadget::client ims-service::db rw---
ui-gadget::client app-svc::db rw---
-ui-gadget::client com.samsung.message rwx--
+ui-gadget::client org.tizen.message rwx--
ui-gadget::client mdm-server rwx--
-ui-gadget::client ug-msg-composer-efl rwxat
media-server ui-gadget::client -w---
+ui-gadget::client contacts-service::svc rwx--
+ui-gadget::client contacts-service::phonelog rw---
+ui-gadget::client msg-service::read rw---
+ui-gadget::client msg-service::write rw---
+ui-gadget::client msg-service::wappush rw---
+ui-gadget::client telephony_framework::api_manager r----
+ui-gadget::client telephony_framework::api_modem -w---
ui-gadget::client smemo::db rw---
-ui-gadget::client com.samsung.browser rw---
-ui-gadget::client com.samsung.image-editor r----
-ui-gadget::client com.samsung.email rwx--
-ui-gadget::client com.samsung.calendar rwx--
+ui-gadget::client org.tizen.browser rw---
+ui-gadget::client org.tizen.image-editor r----
+ui-gadget::client org.tizen.email rwx--
+ui-gadget::client org.tizen.calendar rwx--
ui-gadget::client calendar-service rwx--
ui-gadget::client device::sys_logging -w---
ui-gadget::client webkit2-efl r-x--
+ui-gadget::client data-provider-master::badge rw---
ui-gadget::client resman::db rw---
ui-gadget::client map-efl rwxat
ui-gadget::client ug-email-composer-efl rwxat
+ui-gadget::client ui-gadget::client r-x--
+ui-gadget::client secure-storage::pkcs12 r----
+ui-gadget::client email-service::write rw---
+ui-gadget::client calendar-service::svc rw---
ui-gadget::client system::app_logging -w---
ui-gadget::client svi-data rwxat
ui-gadget::client immvibed rwx--
ui-gadget::client libaccounts-svc::db rw---
+ui-gadget::client org.tizen.volume rwx--
ui-gadget::client device::camera rw---
ui-gadget::client device::mdnie rw---
ui-gadget::client pkgmer::db r----
@@ -107,14 +130,14 @@ ui-gadget::client ug-camera-efl rwxat
ui-gadget::client vcs-server rwx--
ui-gadget::client image-filter-d::db rw---
ui-gadget::client location_fw::db rw---
-ui-gadget::client com.samsung.svoice rwxat
-ui-gadget::client com.samsung.dropbox r----
-ui-gadget::client com.samsung.facebook r-x--
+ui-gadget::client org.tizen.svoice rwx--
+ui-gadget::client org.tizen.dropbox r-x--
+ui-gadget::client org.tizen.facebook r-x--
ui-gadget::client oma-ds-agent rwx--
oma-ds-agent ui-gadget::client rwx--
ui-gadget::client oma-ds-agent::cfg rwxat
-com.samsung.setting ui-gadget::client r-x--
-com.samsung.setting oma-ds-agent::cfg rwx--
+org.tizen.setting ui-gadget::client r-x--
+org.tizen.setting oma-ds-agent::cfg rwx--
system::use_internet oma-ds-agent rwx--
oma-ds-agent system::use_internet rwx--
ui-gadget::client syslogd rwx--
@@ -128,8 +151,8 @@ ui-gadget::client starter r-x--
ui-gadget::client osp-app-service r-x--
ui-gadget::client osp-security-service r-x--
ui-gadget::client osp-channel-service r-x--
-ui-gadget::client com.samsung.app-tray r-x--
-ui-gadget::client com.samsung.quickpanel r-x--
+ui-gadget::client org.tizen.app-tray r-x--
+ui-gadget::client org.tizen.quickpanel r-x--
ui-gadget::client connman rwx--
ui-gadget::client mobicore-daemon r-x--
ui-gadget::client alarm-server rwx--
@@ -137,42 +160,66 @@ ui-gadget::client brcm_daemon r-x--
ui-gadget::client resman r-x--
ui-gadget::client osp-connectivity-service rwx--
ui-gadget::client push-service rwx--
-ui-gadget::client com.samsung.data-provider-slave rwx--
+ui-gadget::client org.tizen.data-provider-slave rwx--
+ui-gadget::client org.tizen.data-provider-slave rwx--
ui-gadget::client usb-server rwx--
ui-gadget::client mtp-responder rwx--
ui-gadget::client sdbd rwx--
-ui-gadget::client com.samsung.volume rwx--
+ui-gadget::client oma-ds-agent::svc rw---
ui-gadget::client samsung-account-front r-x--
+ui-gadget::client worldclock::db rw---
ui-gadget::client thumb-server r----
+ui-gadget::client data-provider-master::shortcut.shortcut -w---
+ui-gadget::client data-provider-master::notification.client -w---
context-service ui-gadget::client r-x--
ui-gadget::client location_fw::client rwx--
-ui-gadget::client com.samsung.smartsearch --x--
+ui-gadget::client org.tizen.smartsearch --x--
ui-gadget::client ug-map-efl rwxat
system::use_internet ui-gadget::client -w---
ui-gadget::client obexd r-x--
ui-gadget::client phone-misc::db rw---
ui-gadget::client msg-service::db rw---
-ui-gadget::client ug-msg-viewer-efl rwxat
-ui-gadget::client com.samsung.fileshare-service rwxat
+ui-gadget::client org.tizen.fileshare-service rwxat
ui-gadget::client wifi_direct_manager rw---
-com.samsung.fileshare-service ui-gadget::client r----
+org.tizen.fileshare-service ui-gadget::client r-x--
ui-gadget::client nfc-manager rwx--
ui-gadget::client nfc-manager::p2p rwx--
ui-gadget::client nfc-manager::admin rwx--
-com.samsung.cluster-home ui-gadget::client r-x--
-ui-gadget::client com.samsung.pwlock r----
+ui-gadget::client ug-setting-gallery-efl rwxat
+ui-gadget::client org.tizen.music-player --x--
+org.tizen.cluster-home ui-gadget::client r-x--
+ui-gadget::client org.tizen.pwlock r----
ui-gadget::client ug-worldclock-efl r----
-ui-gadget::client worldclock::db rw---
-ui-gadget::client com.samsung.camera-app r----
-ui-gadget::client com.samsung.music-player --x--
-ui-gadget::client com.samsung.phone rw---
-com.samsung.gallery ui-gadget::client r-x--
-ui-gadget::client ui-gadget::client r----
+ui-gadget::client org.tizen.camera-app r----
+ui-gadget::client app-selector --x--
+org.tizen.app-selector ui-gadget::client --x--
+ui-gadget::client org.tizen.phone rw---
+org.tizen.gallery ui-gadget::client r-x--
+ui-gadget::client ug-setting-call-efl rwxat
+ui-gadget::client system::camera rw-at
+ui-gadget::client org.tizen.add-viewer r-x--
+ui-gadget::client org.tizen.call-eq-analyzer rwx--
+ui-gadget::client intl-dial::db rw---
+ui-gadget::client intl-dial --x--
+ui-gadget::client org.tizen.vtmain --x--
+ui-gadget::client telephony_framework::api_sim r-x--
+ui-gadget::client telephony_framework::api_phonebook rwx--
+ui-gadget::client telephony_framework::api_ss rwx--
+ui-gadget::client telephony_framework::vconf rwx--
+ui-gadget::client ug-setting-call-efl::vconf rw---
+ui-gadget::client testmode r-x--
ui-gadget::client device::led rw---
ui-gadget::client notification::db rw---
ui-gadget::client data-provider-master::share --x--
ui-gadget::client secure-storage-client r----
-ui-gadget::client com.samsung.videos rwx--
-com.samsung.videos ui-gadget::client rwx--
-ui-gadget::client com.samsung.dailybriefing-accuweather rwx--
-ui-gadget::client com.samsung.dailybriefing-common rwx--
+ui-gadget::client org.tizen.videos rwx--
+ui-gadget::client org.tizen.video-player rwx--
+ui-gadget::client device::bklight rw---
+ui-gadget::client secure-storage::divx-fragment rw---
+org.tizen.videos ui-gadget::client rwx--
+ui-gadget::client org.tizen.dailybriefing-accuweather rwx--
+ui-gadget::client org.tizen.dailybriefing-common rwx--
+ui-gadget::client secure-storage::tethering rw---
+ui-gadget::client ug-setting-mobileap-efl rw---
+ui-gadget::client org.tizen.dailybriefing-yfinance rwx--
+ui-gadget::client 57r43275q7::db rw---