From 4c2e75906bbbd812b2dec4b324746b9cfb42fd87 Mon Sep 17 00:00:00 2001 From: hyunho Date: Mon, 16 Jul 2018 10:00:46 +0900 Subject: [PATCH 01/16] Handling instance id duplication Change-Id: I9bdc7ef624e0db2f02104974a6e3a40dabbb72c2 Signed-off-by: hyunho --- src/base/widget_base.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/base/widget_base.c b/src/base/widget_base.c index 2d7d29c..4272147 100644 --- a/src/base/widget_base.c +++ b/src/base/widget_base.c @@ -308,6 +308,11 @@ static void __control_create(const char *class_id, const char *id, bundle *b) widget_base_instance_data *data; char *content = NULL; + if (appcore_multiwindow_base_instance_find(id)) { + LOGE("Already exist id (%s)", id); + return; + } + data = (widget_base_instance_data *) calloc(1, sizeof(widget_base_instance_data)); if (!data) { -- 2.7.4 From 9e400636dde36090666548e386dfb27134684a40 Mon Sep 17 00:00:00 2001 From: hyunho Date: Mon, 16 Jul 2018 10:34:14 +0900 Subject: [PATCH 02/16] Release version 1.2.13 Changes: - Handling instance id duplication Change-Id: I86510ce48bb9357327d7660a1aedb541d51e58c1 Signed-off-by: hyunho --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 7c27134..e26ff5a 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.2.12 +Version: 1.2.13 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From d474326a4a1b8218da23088fa9e3fe8ad53c009e Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 18 Jul 2018 19:28:11 +0900 Subject: [PATCH 03/16] 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 From 3757bb77556f24768a5e5579623a2ea697a1f381 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 25 Jul 2018 13:27:10 +0900 Subject: [PATCH 04/16] Release version 1.3.0 Changes: - Modified flushing memory logic Change-Id: I5b4fcb1a8ff715c0f8a8c2a5823944c72ce6cd16 Signed-off-by: Hwankyu Jhun --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index e26ff5a..2dbac2d 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.2.13 +Version: 1.3.0 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From 2f826977eb4c2ede75899b1281e6bff232a52542 Mon Sep 17 00:00:00 2001 From: hyunho Date: Mon, 23 Jul 2018 17:06:46 +0900 Subject: [PATCH 05/16] Use aul key for end point data Change-Id: I60a5126405c4fe86566d46f8122677fc1267e668 Signed-off-by: hyunho --- src/base/widget_base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/widget_base.c b/src/base/widget_base.c index 0878b87..efa1394 100644 --- a/src/base/widget_base.c +++ b/src/base/widget_base.c @@ -1167,7 +1167,7 @@ EXPORT_API int widget_base_init(widget_base_ops ops, int argc, char **argv, kb = bundle_import_from_argv(argc, argv); if (kb) { - bundle_get_str(kb, WIDGET_K_ENDPOINT, &viewer_endpoint); + bundle_get_str(kb, AUL_K_WIDGET_VIEWER, &viewer_endpoint); if (viewer_endpoint) { LOGD("viewer endpoint :%s", viewer_endpoint); __viewer_endpoint = strdup(viewer_endpoint); -- 2.7.4 From f89e0908ada716a1d3755f8f21968949cbc34af8 Mon Sep 17 00:00:00 2001 From: hyunho Date: Thu, 26 Jul 2018 15:34:47 +0900 Subject: [PATCH 06/16] Release version 1.3.1 Changes: - Use aul key for end point data Change-Id: I76b5728070cec076c1b3874b0c226d4167d6b5f3 Signed-off-by: hyunho --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 2dbac2d..acbad7e 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.3.0 +Version: 1.3.1 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From eaf6c143ac7eae93e312d9bb96ad01ccd91cb08c Mon Sep 17 00:00:00 2001 From: hyunho Date: Mon, 11 Mar 2019 17:57:27 +0900 Subject: [PATCH 07/16] Remove unused codes Change-Id: I340a1292f7f2a208bc666c7786df27a2a0bed856 Signed-off-by: hyunho --- CMakeLists.txt | 2 -- packaging/appcore-widget.spec | 2 -- src/base/widget_base.c | 30 ------------------------------ 3 files changed, 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 369fd82..c3ac5b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,8 +28,6 @@ pkg_check_modules(pkg_widget_base REQUIRED dlog appcore-common capi-appfw-app-common - vconf - vconf-internal-keys widget_service capi-system-info ecore-wl2 diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index acbad7e..794970b 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -8,8 +8,6 @@ Source0: appcore-widget-%{version}.tar.gz BuildRequires: pkgconfig(aul) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(vconf) -BuildRequires: pkgconfig(vconf-internal-keys) BuildRequires: pkgconfig(appcore-common) BuildRequires: pkgconfig(capi-appfw-app-common) BuildRequires: pkgconfig(widget_service) diff --git a/src/base/widget_base.c b/src/base/widget_base.c index efa1394..c443d00 100644 --- a/src/base/widget_base.c +++ b/src/base/widget_base.c @@ -31,8 +31,6 @@ #include #include #include -#include -#include #include #include @@ -154,27 +152,6 @@ static bool __is_widget_feature_enabled(void) return feature; } -/* LCOV_EXCL_START */ -static void __on_poweroff(keynode_t *key, void *data) -{ - int val; - - val = vconf_keynode_get_int(key); - switch (val) { - case VCONFKEY_SYSMAN_POWER_OFF_DIRECT: - case VCONFKEY_SYSMAN_POWER_OFF_RESTART: - LOGI("power off changed: %d", val); - widget_base_exit(); - break; - case VCONFKEY_SYSMAN_POWER_OFF_NONE: - case VCONFKEY_SYSMAN_POWER_OFF_POPUP: - default: - /* DO NOTHING */ - break; - } -} -/* LCOV_EXCL_STOP */ - static void __check_empty_instance(void) { int cnt = appcore_multiwindow_base_instance_get_cnt(); @@ -607,10 +584,6 @@ static int __multiwindow_create(void *data) } screen_connector_provider_init(); - vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, - __on_poweroff, NULL); - - if (__context.ops.create) ret = __context.ops.create(data); @@ -622,9 +595,6 @@ static int __multiwindow_terminate(void *data) { if (__context.ops.terminate) __context.ops.terminate(data); - - vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, - __on_poweroff); screen_connector_provider_fini(); if (__viewer_endpoint) { -- 2.7.4 From 0a2d3f9baea6bee4c1b9e8e499d640fc5931b8ed Mon Sep 17 00:00:00 2001 From: root Date: Tue, 12 Mar 2019 09:53:30 +0900 Subject: [PATCH 08/16] Release version 1.3.2 Changes: - Remove unused codes Change-Id: I552b15f6ddc6d794a1602205409b4b1aaa294c07 Signed-off-by: root --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 794970b..a532a0f 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.3.1 +Version: 1.3.2 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From 08b93b50c0e23df0e3ef749b2a682bfe7b9dfc00 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Mon, 15 Apr 2019 11:39:35 +0900 Subject: [PATCH 09/16] Add an exception handling Before setting the data of the widget instance, we should check whether the instance is running or not. If the create callback function returns a negative error value, the instance is dropped. ASAN Report: ERROR: AddressSanitizer: heap-use-after-free on address 0xaf6ccb90 at pc 0xb54cda33 bp 0xbed9accc sp 0xbed9acc4 WRITE of size 4 at 0xaf6ccb90 thread T0 - #0 0xb54cda31 in __control_create /usr/src/debug/appcore-widget-1.3.1/src/base/widget_base.c:328 - #1 0xb54cda31 in __multiwindow_control /usr/src/debug/appcore-widget-1.3.1/src/base/widget_base.c:672 - #2 0xb47540f1 in appcore_base_on_receive /usr/src/debug/app-core-1.13.0/src/base/appcore_base.c:1178 previously allocated by thread T0 here: - #0 0xb6aa9695 in calloc asan_rtl (discriminator 2) - #1 0xb54cd7a3 in __control_create /usr/src/debug/appcore-widget-1.3.1/src/base/widget_base.c:316 - #2 0xb54cd7a3 in __multiwindow_control /usr/src/debug/appcore-widget-1.3.1/src/base/widget_base.c:672 - #3 0xb47540f1 in appcore_base_on_receive /usr/src/debug/app-core-1.13.0/src/base/appcore_base.c:1178 Change-Id: I88bb7df5a8bc62f9b44ae338fb16663b36fbcd9b Signed-off-by: Hwankyu Jhun --- src/base/widget_base.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/base/widget_base.c b/src/base/widget_base.c index c443d00..71f41a2 100644 --- a/src/base/widget_base.c +++ b/src/base/widget_base.c @@ -302,11 +302,12 @@ static void __control_create(const char *class_id, const char *id, bundle *b) /* call stub create */ appcore_multiwindow_base_instance_run(class_id, id, data); - data->args = NULL; - bundle_get_str(b, WIDGET_K_CONTENT_INFO, &content); - if (content) - data->content = strdup(content); - + if (appcore_multiwindow_base_instance_find(id)) { + data->args = NULL; + bundle_get_str(b, WIDGET_K_CONTENT_INFO, &content); + if (content) + data->content = strdup(content); + } } static void __control_resume(const char *class_id, const char *id, bundle *b) -- 2.7.4 From f6e137a86558dfbd1711aaa46dabc243bd9d783a Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Mon, 15 Apr 2019 13:09:12 +0900 Subject: [PATCH 10/16] Release version 1.3.3 Changes: - Add an exception handling Change-Id: Ief72adae90ecdbf57589f7aed4b24f5e1931d922 Signed-off-by: Hwankyu Jhun --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index a532a0f..83345ed 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.3.2 +Version: 1.3.3 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From 61598b9ad47ab19e07694d7c4317a221a389b7c9 Mon Sep 17 00:00:00 2001 From: "SukHyung, Kang" Date: Thu, 18 Apr 2019 12:46:09 +0900 Subject: [PATCH 11/16] Fix API reference error Change-Id: Iddb04ca105e49573a2821c20e1198a1ccc8adfb6 Signed-off-by: SukHyung, Kang --- include/widget_app.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/widget_app.h b/include/widget_app.h index 9e309d2..35d864d 100755 --- a/include/widget_app.h +++ b/include/widget_app.h @@ -80,7 +80,7 @@ typedef int (*widget_instance_create_cb)(widget_context_h context, bundle *conte * In this callback, you can finalize resources for this instance. * If reason is not #WIDGET_APP_DESTROY_TYPE_TEMPORARY, it should store the current status by using incoming bundle. * @since_tizen 2.3.1 - * @remark Note that the parameter 'content' is used to save the status of the widget instance. + * @remarks Note that the parameter 'content' is used to save the status of the widget instance. * As a input parameter, content contains the saved status of the widget instance. * You can fill the content parameter with the current status in this callback, * then the framework will save the content by receiving it as a output parameter. @@ -326,10 +326,10 @@ int widget_app_remove_event_handler(app_event_handler_h event_handler); * @brief Gets a widget instance id. * @since_tizen 2.3.1 * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section. - * @remark You must not free returned widget instance id - * @remark The returned widget instance id is volatile. If the device reboots or the widget's process restarts, it will be changed.\n + * @remarks You must not free returned widget instance id + * @remarks The returned widget instance id is volatile. If the device reboots or the widget's process restarts, it will be changed.\n * So, you should not assume this value is a persistent one. - * @remark widget_service_trigger_update(), widget_service_change_period(), widget_service_get_content_of_widget_instance()\n + * @remarks widget_service_trigger_update(), widget_service_change_period(), widget_service_get_content_of_widget_instance()\n * can be called with returned instance id. * @param[in] context The context for widget instance * @return widget instance id on success, -- 2.7.4 From c6f02505d9e6a2e026e7c0c5a7d26f872a96f400 Mon Sep 17 00:00:00 2001 From: "SukHyung, Kang" Date: Thu, 18 Apr 2019 13:49:57 +0900 Subject: [PATCH 12/16] Release version 1.3.4 Changes: - Fix API reference error Change-Id: I8e94c62138be9a0fcb19a186b7e2bd6e1c3ee720 Signed-off-by: SukHyung, Kang --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 83345ed..885b060 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.3.3 +Version: 1.3.4 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From d04aa9d7d7541f984fc3a82d28d8be05edd4b28c Mon Sep 17 00:00:00 2001 From: hyunho Date: Fri, 28 Jun 2019 13:32:56 +0900 Subject: [PATCH 13/16] Writing a file log for widget app exit Change-Id: I976f3c07e32c1afa96d4d7c6444b8017e2c851c9 Signed-off-by: hyunho --- src/base/widget_base.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/base/widget_base.c b/src/base/widget_base.c index 71f41a2..c11f0af 100644 --- a/src/base/widget_base.c +++ b/src/base/widget_base.c @@ -758,14 +758,17 @@ static void __multiwindow_trim_memory(void *data) EXPORT_API int widget_base_exit(void) { - int ret; + int ret = 0; + int cnt; appcore_multiwindow_base_exit(); - if (appcore_multiwindow_base_instance_get_cnt() == 0 && __is_permanent) { + cnt = appcore_multiwindow_base_instance_get_cnt(); + if (cnt == 0 && __is_permanent) ret = aul_notify_exit(); - aul_widget_write_log(LOG_TAG, "[%s:%d] permanent exit : %d", - __FUNCTION__, __LINE__, ret); - } + + aul_widget_write_log(LOG_TAG, + "[%s:%d] exit : ret(%d), cnt(%d), permanent(%d)", + __FUNCTION__, __LINE__, ret, cnt, __is_permanent); return 0; } -- 2.7.4 From 649673a14fa2badf6c0ada0a9efe46e749b4ac7f Mon Sep 17 00:00:00 2001 From: hyunho Date: Mon, 1 Jul 2019 10:34:06 +0900 Subject: [PATCH 14/16] Release version 1.3.5 Changes: - Writing a file log for widget app exit Change-Id: I521d6083fd89e7eda971afb06d2073230fbe6c09 Signed-off-by: hyunho --- packaging/appcore-widget.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 885b060..7be64cd 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.3.4 +Version: 1.3.5 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From b1e3bc48a7ce2352771082591b2680c6a3000313 Mon Sep 17 00:00:00 2001 From: hyunho Date: Wed, 10 Jul 2019 14:03:19 +0900 Subject: [PATCH 15/16] Make a gcov package for measuring coverage easier Change-Id: I3358c89372f727a09eb998815fcbf702a7ac3740 Signed-off-by: hyunho --- packaging/appcore-widget.spec | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 7be64cd..8d01f77 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -47,19 +47,45 @@ Requires: %{name} = %{version}-%{release} %description -n capi-appfw-widget-application-devel widget application (development files) +%if 0%{?gcov:1} +%package gcov +Summary: Widget application API(gcov) +Group: Application Framework/Libraries + +%description gcov +gcov objects of a widget application library +%endif + %prep %setup -q %build +%if 0%{?gcov:1} +export CFLAGS+=" -fprofile-arcs -ftest-coverage" +export CXXFLAGS+=" -fprofile-arcs -ftest-coverage" +export FFLAGS+=" -fprofile-arcs -ftest-coverage" +export LDFLAGS+=" -lgcov" +%endif + export CFLAGS+=" -DEFL_BETA_API_SUPPORT " MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` %cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER} %__make %{?jobs:-j%jobs} +%if 0%{?gcov:1} +mkdir -p gcov-obj +find . -name '*.gcno' -exec cp '{}' gcov-obj ';' +%endif + %install rm -rf %{buildroot} %make_install +%if 0%{?gcov:1} +mkdir -p %{buildroot}%{_datadir}/gcov/obj +install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj +%endif + mkdir -p %{buildroot}%{_libdir}/pkgconfig cp capi-appfw-widget-application.pc %{buildroot}%{_libdir}/pkgconfig @@ -92,3 +118,7 @@ cp capi-appfw-widget-application.pc %{buildroot}%{_libdir}/pkgconfig %{_libdir}/pkgconfig/capi-appfw-widget-application.pc %{_libdir}/libcapi-appfw-widget-application.so +%if 0%{?gcov:1} +%files gcov +%{_datadir}/gcov/obj/* +%endif -- 2.7.4 From 251db92c77c0494774d5de43cb3d983cf2199ef7 Mon Sep 17 00:00:00 2001 From: "mk5004.lee" Date: Fri, 18 Oct 2019 13:00:10 +0900 Subject: [PATCH 16/16] Update doxygen Change-Id: I9b1d04a6f4e98005e4954662d797139302b516bd Signed-off-by: mk5004.lee --- include/widget_app.h | 44 ++++++++++++++++++++++++-------------------- include/widget_app_efl.h | 4 ++-- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/include/widget_app.h b/include/widget_app.h index 35d864d..8413c33 100755 --- a/include/widget_app.h +++ b/include/widget_app.h @@ -66,7 +66,7 @@ typedef struct _widget_context *widget_context_h; * @param[in] content The data set for the previous status * @param[in] w The pixel value for widget width * @param[in] h The pixel value for widget height - * @param[in] user_data The user data passed from widget_app_class_create function + * @param[in] user_data The user data passed from widget_app_class_create() function * * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure @@ -84,12 +84,12 @@ typedef int (*widget_instance_create_cb)(widget_context_h context, bundle *conte * As a input parameter, content contains the saved status of the widget instance. * You can fill the content parameter with the current status in this callback, * then the framework will save the content by receiving it as a output parameter. - * Consequently, you should not use widget_app_context_set_content_info() api in this callback. + * Consequently, you should not use widget_app_context_set_content_info() function in this callback. * The content will be overwritten after this callback returns with the 'content' parameter. * @param[in] context The context of widget instance * @param[in] reason The reason for destruction * @param[in,out] content The data set to save - * @param[in] user_data The user data passed from widget_app_class_create function + * @param[in] user_data The user data passed from widget_app_class_create() function * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure */ @@ -102,7 +102,7 @@ typedef int (*widget_instance_destroy_cb)(widget_context_h context, widget_app_d * The paused instance may be destroyed by framework. * @since_tizen 2.3.1 * @param[in] context The context of widget instance - * @param[in] user_data The user data passed from widget_app_class_create function + * @param[in] user_data The user data passed from widget_app_class_create() function * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure */ @@ -114,7 +114,7 @@ typedef int (*widget_instance_pause_cb)(widget_context_h context, void *user_dat * @details The callback function is called when the widget is visible. * @since_tizen 2.3.1 * @param[in] context The context of widget instance - * @param[in] user_data The user data passed from widget_app_class_create function + * @param[in] user_data The user data passed from widget_app_class_create() function * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure */ @@ -128,7 +128,7 @@ typedef int (*widget_instance_resume_cb)(widget_context_h context, void *user_da * @param[in] context The context of widget instance * @param[in] w The pixel value for widget width * @param[in] h The pixel value for widget height - * @param[in] user_data The user data passed from widget_app_class_create function + * @param[in] user_data The user data passed from widget_app_class_create() function * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure */ @@ -143,7 +143,7 @@ typedef int (*widget_instance_resize_cb)(widget_context_h context, int w, int h, * @param[in] content The data set for updating this widget. It will be provided by requester. * Requester can use widget_service_trigger_update() * @param[in] force Although the widget is paused, if it is TRUE, the widget can be updated - * @param[in] user_data The user data passed from widget_app_class_create function + * @param[in] user_data The user data passed from widget_app_class_create() function * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @see widget_service_trigger_update() @@ -211,15 +211,15 @@ typedef struct { /** * @brief Called for each widget context. - * @details This function will be called in the function of widget_app_foreach_context repeatedly. + * @details This function will be called in the function of widget_app_foreach_context() repeatedly. * @since_tizen 2.3.1 * @param[in] context The context for widget instance - * @param[in] data The data for caller + * @param[in] user_data The data for caller * @return @c true to continue with the next iteration of the loop, * otherwise @c false to break out of the loop * @see widget_app_foreach_context() */ -typedef bool (*widget_context_cb)(widget_context_h context, void *data); +typedef bool (*widget_context_cb)(widget_context_h context, void *user_data); /** @@ -232,8 +232,8 @@ typedef bool (*widget_context_cb)(widget_context_h context, void *data); * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successful - * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error * @see widget_app_exit() */ @@ -262,8 +262,8 @@ int widget_app_exit(void); * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successful - * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error */ int widget_app_terminate_context(widget_context_h context); @@ -277,11 +277,11 @@ int widget_app_terminate_context(widget_context_h context); * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successful + * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_CANCELED The iteration is canceled - * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_FAULT Unrecoverable error - * @see widget_app_foreach_context() + * @see widget_context_cb() */ int widget_app_foreach_context(widget_context_cb callback, void *data); @@ -296,9 +296,9 @@ int widget_app_foreach_context(widget_context_cb callback, void *data); * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successful + * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_OUT_OF_MEMORY Out of memory - * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_FAULT Unrecoverable error * @see app_event_type_e * @see app_event_cb() @@ -314,8 +314,8 @@ int widget_app_add_event_handler(app_event_handler_h *event_handler, app_event_t * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successful - * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error * @see watch_app_add_event_handler() */ @@ -334,7 +334,9 @@ int widget_app_remove_event_handler(app_event_handler_h event_handler); * @param[in] context The context for widget instance * @return widget instance id on success, * otherwise NULL + * @exception #WIDGET_ERROR_NONE Successful * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @exception #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @exception #WIDGET_ERROR_FAULT Unrecoverable error * @see get_last_result() * @see widget_service_trigger_update() @@ -353,8 +355,8 @@ const char *widget_app_get_id(widget_context_h context); * @return The new widget class object, * NULL on error * @exception #WIDGET_ERROR_NONE Successfully added - * @exception #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @exception #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @exception #WIDGET_ERROR_OUT_OF_MEMORY Out of memory * @see get_last_result() */ @@ -368,6 +370,7 @@ widget_class_h widget_app_class_create(widget_instance_lifecycle_callback_s call * @param[in] tag The value to save * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * @retval #WIDGET_ERROR_NONE Successful * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error @@ -382,6 +385,7 @@ int widget_app_context_set_tag(widget_context_h context, void *tag); * @param[out] tag The value to get * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * @retval #WIDGET_ERROR_NONE Successful * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error @@ -397,8 +401,8 @@ int widget_app_context_get_tag(widget_context_h context, void **tag); * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successfully sent - * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid argument * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid argument * @retval #WIDGET_ERROR_OUT_OF_MEMORY Out of memory * @retval #WIDGET_ERROR_FAULT Unrecoverable error */ @@ -413,8 +417,8 @@ int widget_app_context_set_content_info(widget_context_h context, bundle *conten * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NONE Successfully sent - * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid argument * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid argument * @retval #WIDGET_ERROR_OUT_OF_MEMORY Out of memory * @retval #WIDGET_ERROR_FAULT Unrecoverable error */ @@ -432,8 +436,8 @@ int widget_app_context_set_title(widget_context_h context, const char *title); * @return The new widget class object, * NULL on error * @exception #WIDGET_ERROR_NONE Successfully added - * @exception #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported + * @exception #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @exception #WIDGET_ERROR_OUT_OF_MEMORY Out of memory * @see get_last_result() */ diff --git a/include/widget_app_efl.h b/include/widget_app_efl.h index 7d65cf3..8817395 100644 --- a/include/widget_app_efl.h +++ b/include/widget_app_efl.h @@ -37,11 +37,11 @@ extern "C" { * @param[in] context The context for widget instance * @param[out] win evas object for window * @return 0 on success, - * otherwise a negative error value + * otherwise a negative error value * @retval #WIDGET_ERROR_NONE Successful + * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Failed to make evas object - * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported */ int widget_app_get_elm_win(widget_context_h context, Evas_Object **win); -- 2.7.4