summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2018-07-18 19:28:11 +0900
committerHwankyu Jhun <h.jhun@samsung.com>2018-07-18 19:28:11 +0900
commitd474326a4a1b8218da23088fa9e3fe8ad53c009e (patch)
treeb4d60a8bbcb3d3bc9f44af74bf69bc6328837478
parent9e400636dde36090666548e386dfb27134684a40 (diff)
downloadappcore-widget-d474326a4a1b8218da23088fa9e3fe8ad53c009e.tar.gz
appcore-widget-d474326a4a1b8218da23088fa9e3fe8ad53c009e.tar.bz2
appcore-widget-d474326a4a1b8218da23088fa9e3fe8ad53c009e.zip
Modified flushing memory logic
elm_cache_all_flush() is separated from appcore_base_flush_memory(). This patch adds trim_memory() callback function type to add entry point. Change-Id: I94dfcd3e31bc151630e8a78b61d1e25f5dcfe502 Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rw-r--r--include/widget_base.h2
-rw-r--r--src/base/widget_base.c20
-rw-r--r--src/efl_base/widget_app.c8
3 files changed, 30 insertions, 0 deletions
diff --git a/include/widget_base.h b/include/widget_base.h
index bf40ad3..80e1a57 100644
--- a/include/widget_base.h
+++ b/include/widget_base.h
@@ -75,6 +75,7 @@ typedef struct _widget_base_ops {
void (*finish)(void);
void (*run)(void *data);
void (*exit)(void *data);
+ void (*trim_memory)(void *data);
} widget_base_ops;
typedef struct _widget_base_class {
@@ -108,6 +109,7 @@ int widget_base_on_init(int argc, char **argv);
void widget_base_on_finish(void);
void widget_base_on_run(void);
void widget_base_on_exit(void);
+int widget_base_on_trim_memory(void);
widget_base_ops widget_base_get_default_ops(void);
void widget_base_fini(void);
int widget_base_exit(void);
diff --git a/src/base/widget_base.c b/src/base/widget_base.c
index 4272147..0878b87 100644
--- a/src/base/widget_base.c
+++ b/src/base/widget_base.c
@@ -779,6 +779,12 @@ static void __multiwindow_exit(void *data)
__context.ops.exit(data);
}
+static void __multiwindow_trim_memory(void *data)
+{
+ if (__context.ops.trim_memory)
+ __context.ops.trim_memory(data);
+}
+
EXPORT_API int widget_base_exit(void)
{
int ret;
@@ -1152,6 +1158,7 @@ EXPORT_API int widget_base_init(widget_base_ops ops, int argc, char **argv,
raw_ops.base.finish = __multiwindow_finish;
raw_ops.base.run = __multiwindow_run;
raw_ops.base.exit = __multiwindow_exit;
+ raw_ops.base.trim_memory = __multiwindow_trim_memory;
if (!__is_widget_feature_enabled()) {
LOGE("not supported"); /* LCOV_EXCL_LINE */
@@ -1210,6 +1217,11 @@ static void __on_exit(void *data)
widget_base_on_exit();
}
+static void __on_trim_memory(void *data)
+{
+ widget_base_on_trim_memory();
+}
+
EXPORT_API int widget_base_on_create(void)
{
appcore_multiwindow_base_on_create();
@@ -1241,6 +1253,13 @@ EXPORT_API void widget_base_on_exit(void)
{
}
+EXPORT_API int widget_base_on_trim_memory(void)
+{
+ appcore_multiwindow_base_on_trim_memory();
+
+ return 0;
+}
+
EXPORT_API widget_base_ops widget_base_get_default_ops(void)
{
widget_base_ops ops;
@@ -1252,6 +1271,7 @@ EXPORT_API widget_base_ops widget_base_get_default_ops(void)
ops.finish = __on_finish;
ops.run = __on_run;
ops.exit = __on_exit;
+ ops.trim_memory = __on_trim_memory;
return ops;
}
diff --git a/src/efl_base/widget_app.c b/src/efl_base/widget_app.c
index ba8be44..174195f 100644
--- a/src/efl_base/widget_app.c
+++ b/src/efl_base/widget_app.c
@@ -288,6 +288,13 @@ static void __widget_app_exit(void *data)
elm_exit();
}
+static void __widget_app_trim_memory(void *data)
+{
+ _D("Trim memory");
+ elm_cache_all_flush();
+ widget_base_on_trim_memory();
+}
+
EXPORT_API int widget_app_main(int argc, char **argv,
widget_app_lifecycle_callback_s *callback, void *user_data)
{
@@ -311,6 +318,7 @@ EXPORT_API int widget_app_main(int argc, char **argv,
ops.finish = __widget_app_finish;
ops.run = __widget_app_run;
ops.exit = __widget_app_exit;
+ ops.trim_memory = __widget_app_trim_memory;
cb_info.callback = callback;
cb_info.user_data = user_data;