#include "appcore-internal.h"
#include "appcore-efl.h"
+#include <system_info.h>
static pid_t _pid;
static bool resource_reclaiming = TRUE;
Ecore_Timer *mftimer; /* Ecore Timer for memory flushing */
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
struct appcore *app_core;
void (*prepare_to_suspend) (void *data);
void (*exit_from_suspend) (void *data);
-#endif
struct appcore_ops *ops;
void (*mfcb) (void); /* Memory Flushing Callback */
[AE_RESET] = "RESET",
[AE_LOWMEM_POST] = "LOWMEM_POST",
[AE_MEM_FLUSH] = "MEM_FLUSH",
+ [AE_UPDATE_REQUESTED] = "UPDATE_REQUESTED",
};
static const char *_as_name[] = {
__finish_wl();
}
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
static void __appcore_efl_prepare_to_suspend(void *data)
{
struct ui_priv *ui = (struct ui_priv *)data;
}
_DBG("[__SUSPEND__]");
}
-#endif
+
+static void __appcore_efl_update_requested(void *data)
+{
+ struct ui_priv *ui = (struct ui_priv *)data;
+ struct sys_op *op;
+ int dummy = 0;
+
+ if (ui->app_core) {
+ op = &ui->app_core->sops[SE_UPDATE_REQUESTED];
+ if (op && op->func)
+ op->func((void *)&dummy, op->data);
+ }
+ _DBG("[__UPDATE_REQUESTED__]");
+}
#if defined(MEMORY_FLUSH_ACTIVATE)
static Eina_Bool __appcore_memory_flush_cb(void *data)
if (ui)
ui->mftimer = NULL;
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- if (ui && ui->prepare_to_suspend) {
+ if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT && ui && ui->prepare_to_suspend) {
_DBG("[__SUSPEND__] flush case");
ui->prepare_to_suspend(ui);
}
-#endif
return ECORE_CALLBACK_CANCEL;
}
switch (event) {
case AE_RESET:
_DBG("[APP %d] RESET", _pid);
+ if (ui->pending_data)
+ bundle_free(ui->pending_data);
ui->pending_data = bundle_dup(b);
LOG(LOG_DEBUG, "LAUNCH", "[%s:Application:reset:start]", ui->name);
below_app = bundle_get_val(b, AUL_SVC_K_RELOCATE_BELOW);
if (below_app)
ui->below_app = strdup(below_app);
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- if (ui->exit_from_suspend) {
+ if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT && ui->exit_from_suspend) {
_DBG("[__SUSPEND__] reset case");
ui->exit_from_suspend(ui);
}
-#endif
if (ui->ops->reset) {
traceBegin(TTRACE_TAG_APPLICATION_MANAGER,
LOG(LOG_DEBUG, "LAUNCH", "[%s:Application:reset:done]", ui->name);
if (first_launch) {
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- if (ui->app_core->allowed_bg)
+ if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT && ui->app_core->allowed_bg)
__appcore_timer_add(ui);
-#endif
first_launch = FALSE;
} else {
_INFO("[APP %d] App already running, raise the window", _pid);
ui->state = AS_PAUSED;
if (r >= 0 && resource_reclaiming == TRUE)
__appcore_timer_add(ui);
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- else if (r >= 0 && resource_reclaiming == FALSE
+ else if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT && r >= 0 && resource_reclaiming == FALSE
&& ui->prepare_to_suspend) {
_DBG("[__SUSPEND__] pause case");
ui->prepare_to_suspend(ui);
}
-#endif
}
/* TODO : rotation stop */
/* r = appcore_pause_rotation_cb(); */
case AE_RESUME:
LOG(LOG_DEBUG, "LAUNCH", "[%s:Application:resume:start]",
ui->name);
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- if (ui->exit_from_suspend) {
- _DBG("[__SUSPEND__] resume case");
- ui->exit_from_suspend(ui);
+ if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT) {
+ if (ui->exit_from_suspend) {
+ _DBG("[__SUSPEND__] resume case");
+ ui->exit_from_suspend(ui);
+ }
+ if (ui->app_core->allowed_bg)
+ __appcore_timer_del(ui);
}
- if (ui->app_core->allowed_bg)
- __appcore_timer_del(ui);
-#endif
if (ui->state == AS_PAUSED || ui->state == AS_CREATED) {
_DBG("[APP %d] RESUME", _pid);
_DBG("[APP %d] is another state", _pid);
}
break;
+ case AE_UPDATE_REQUESTED:
+ __appcore_efl_update_requested(ui);
+ break;
default:
/* do nothing */
break;
return FALSE;
}
- g_winnode_list = g_slist_remove_link(g_winnode_list, f);
-
t = (struct win_node *)f->data;
t->win = win;
t->bfobscured = bfobscured;
- g_winnode_list = g_slist_concat(g_winnode_list, f);
-
return TRUE;
}
#elif defined(WAYLAND)
return FALSE;
}
- g_winnode_list = g_slist_remove_link(g_winnode_list, f);
-
t = (struct win_node *)f->data;
t->win = win;
if (surf != 0)
t->surf = surf;
t->bfobscured = bfobscured;
- g_winnode_list = g_slist_concat(g_winnode_list, f);
-
return TRUE;
}
#endif
{
int r;
char *hwacc = NULL;
-#if _APPFW_FEATURE_BACKGROUND_MANAGEMENT
struct appcore *ac = NULL;
-#endif
bundle *b;
const char *bg_launch;
r = appcore_init(ui->name, &efl_ops, *argc, *argv);
_retv_if(r == -1, -1);
-#if _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- appcore_get_app_core(&ac);
- ui->app_core = ac;
- SECURE_LOGD("[__SUSPEND__] appcore initialized, appcore addr: #%x", ac);
-#endif
+ if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT) {
+ appcore_get_app_core(&ac);
+ ui->app_core = ac;
+ SECURE_LOGD("[__SUSPEND__] appcore initialized, appcore addr: #%x", ac);
+ }
b = bundle_import_from_argv(*argc, *argv);
if (b) {
__appcore_timer_del(ui);
elm_shutdown();
+
+ /* Check loader case */
+ if (getenv("AUL_LOADER_INIT")) {
+ unsetenv("AUL_LOADER_INIT");
+ elm_shutdown();
+ }
}
static int __set_data(struct ui_priv *ui, const char *name,
ui->rot_cb_data = NULL;
ui->rot_mode = APPCORE_RM_UNKNOWN;
-#ifdef _APPFW_FEATURE_BACKGROUND_MANAGEMENT
- ui->app_core = NULL;
- ui->prepare_to_suspend = __appcore_efl_prepare_to_suspend;
- ui->exit_from_suspend = __appcore_efl_exit_from_suspend;
-#endif
+ if (_APPFW_FEATURE_BACKGROUND_MANAGEMENT) {
+ ui->app_core = NULL;
+ ui->prepare_to_suspend = __appcore_efl_prepare_to_suspend;
+ ui->exit_from_suspend = __appcore_efl_exit_from_suspend;
+ }
return 0;
}
return 0;
}
#endif
+
+tizen_profile_t _get_tizen_profile()
+{
+ static tizen_profile_t profile = TIZEN_PROFILE_UNKNOWN;
+ if (__builtin_expect(profile != TIZEN_PROFILE_UNKNOWN, 1))
+ return profile;
+
+ char *profileName;
+ system_info_get_platform_string("http://tizen.org/feature/profile", &profileName);
+ switch (*profileName) {
+ case 'm':
+ case 'M':
+ profile = TIZEN_PROFILE_MOBILE;
+ break;
+ case 'w':
+ case 'W':
+ profile = TIZEN_PROFILE_WEARABLE;
+ break;
+ case 't':
+ case 'T':
+ profile = TIZEN_PROFILE_TV;
+ break;
+ case 'i':
+ case 'I':
+ profile = TIZEN_PROFILE_IVI;
+ break;
+ default: // common or unTIZEN_nown ==> ALL ARE COMMON.
+ profile = TIZEN_PROFILE_COMMON;
+ }
+ free(profileName);
+
+ return profile;
+}