Modified flushing memory logic 14/184514/1
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 18 Jul 2018 10:28:11 +0000 (19:28 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 18 Jul 2018 10:28:11 +0000 (19:28 +0900)
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>
include/widget_base.h
src/base/widget_base.c
src/efl_base/widget_app.c

index bf40ad3..80e1a57 100644 (file)
@@ -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);
index 4272147..0878b87 100644 (file)
@@ -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;
 }
index ba8be44..174195f 100644 (file)
@@ -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;