From 7ccb64e00ae24d390886697f6d9101c4a082d3bc Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 19 Apr 2017 08:47:18 +0900 Subject: [PATCH] Add a new API to unregister app context status event Adds: - app_manager_unset_app_context_status_cb() Requires: - https://review.tizen.org/gerrit/#/c/125775/ Change-Id: I5ed2330c2f2eb16c74da10ca8a7247f653ee0c9f Signed-off-by: Hwankyu Jhun --- include/app_manager_extension.h | 13 +++++++++++++ src/app_context.c | 18 ++++++++++++++++++ src/app_manager.c | 11 +++++++++++ src/app_manager_internal.h | 2 ++ 4 files changed, 44 insertions(+) diff --git a/include/app_manager_extension.h b/include/app_manager_extension.h index 98b8fc9..74a9c3e 100644 --- a/include/app_manager_extension.h +++ b/include/app_manager_extension.h @@ -167,6 +167,19 @@ int app_manager_attach_window(const char *parent_app_id, const char *child_app_i */ int app_manager_detach_window(const char *app_id); +/* + * @brief Unregisters the callback function. + * @since_tizen 3.0 + * @param[in] callback The registered callback function + * @param[in] appid The registered appid + * @return @c 0 on success, + * otherwise a negative error value + * @retval #APP_MANAGER_ERROR_NONE Successful + * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter + * @see app_manager_app_context_status_cb() + */ +int app_manager_unset_app_context_status_cb(app_manager_app_context_status_cb callback, const char *appid); + /** * @} */ diff --git a/src/app_context.c b/src/app_context.c index c312ced..6929337 100644 --- a/src/app_context.c +++ b/src/app_context.c @@ -817,3 +817,21 @@ int app_context_get_app_context_by_pid(pid_t pid, app_context_h *app_context) return ret; } + +int app_context_unset_status_cb(app_manager_app_context_status_cb callback, const char *appid) +{ + struct status_listen_info *info; + + if (callback == NULL || appid == NULL) + return APP_MANAGER_ERROR_INVALID_PARAMETER; + + info = __find_status_listen_info(callback, appid); + if (info == NULL) + return APP_MANAGER_ERROR_INVALID_PARAMETER; + + status_listen_list = g_list_remove(status_listen_list, info); + aul_ignore_app_status(info->handle); + __destroy_status_listen_info(info); + + return APP_MANAGER_ERROR_NONE; +} diff --git a/src/app_manager.c b/src/app_manager.c index 335fe7e..85a3f1e 100644 --- a/src/app_manager.c +++ b/src/app_manager.c @@ -618,3 +618,14 @@ API int app_manager_detach_window(const char *app_id) return APP_MANAGER_ERROR_NONE; } + +API int app_manager_unset_app_context_status_cb(app_manager_app_context_status_cb callback, const char *appid) +{ + int ret; + + ret = app_context_unset_status_cb(callback, appid); + if (ret != APP_MANAGER_ERROR_NONE) + return app_manager_error(ret, __FUNCTION__, NULL); + + return APP_MANAGER_ERROR_NONE; +} diff --git a/src/app_manager_internal.h b/src/app_manager_internal.h index dd76ef8..1394ad6 100644 --- a/src/app_manager_internal.h +++ b/src/app_manager_internal.h @@ -76,4 +76,6 @@ int convert_status_type(int status_type); void remove_app_manager_event_info_list(app_manager_event_info *head); +int app_context_unset_status_cb(app_manager_app_context_status_cb callback, const char *appid); + #endif /* __TIZEN_APPFW_APP_MANAGER_INTERNAL_H */ -- 2.34.1