From d474326a4a1b8218da23088fa9e3fe8ad53c009e Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 18 Jul 2018 19:28:11 +0900 Subject: [PATCH] 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 --- include/widget_base.h | 2 ++ src/base/widget_base.c | 20 ++++++++++++++++++++ src/efl_base/widget_app.c | 8 ++++++++ 3 files changed, 30 insertions(+) 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; -- 2.7.4