From d56a2f159c189b27361020d1cffc4a4382c9354c Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Thu, 24 Nov 2016 17:03:15 +0900 Subject: [PATCH 01/16] Set default preferred rotation to 0 Some devices set all applications preferred rotation to 90 degree widget app sould not be rotated becasue viewer will be rotated Change-Id: I1ad6204423ee7845c4ccf21614fc8eaae246bc01 Signed-off-by: Hyunho Kang --- src/widget_app.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/widget_app.c b/src/widget_app.c index 8898766..4ee4e2e 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -1362,6 +1362,7 @@ EXPORT_API int widget_app_get_elm_win(widget_context_h context, Ecore_Wl_Window *wl_win; struct wl_surface *surface; char buffer[256]; + int rots[3] = {0}; if (!_is_widget_feature_enabled()) { _E("not supported"); /* LCOV_EXCL_LINE */ @@ -1378,6 +1379,9 @@ EXPORT_API int widget_app_get_elm_win(widget_context_h context, goto fault; /* LCOV_EXCL_LINE */ } + elm_win_wm_rotation_preferred_rotation_set(ret_win, -1); + elm_win_wm_rotation_available_rotations_set(ret_win, rots, 1); + wl_win = elm_win_wl_window_get(ret_win); if (wl_win == NULL) { _E("failed to get wayland window"); /* LCOV_EXCL_LINE */ -- 2.7.4 From e95b5d19521b531da453f48c71d9777f335bdb28 Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Mon, 12 Dec 2016 15:03:39 +0900 Subject: [PATCH 02/16] Replace tbm to screen-connector Change-Id: Icd7d1ae8c78e860fcaf816ee880c7f6ba4d06974 Signed-off-by: Hyunho Kang --- CMakeLists.txt | 1 + packaging/appcore-widget.spec | 1 + src/widget_app.c | 10 ++++------ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2099f82..13129fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ pkg_check_modules(pkg_widget REQUIRED capi-system-info ecore-wayland tizen-remote-surface-client + screen_connector_provider ) FOREACH(flag ${pkg_widget_CFLAGS}) SET(EXTRA_CFLAGS_widget "${EXTRA_CFLAGS_widget} ${flag}") diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 5355ca0..8bdedaa 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -19,6 +19,7 @@ BuildRequires: pkgconfig(widget_service) BuildRequires: pkgconfig(capi-system-info) BuildRequires: pkgconfig(wayland-tbm-client) BuildRequires: pkgconfig(ecore-wayland) +BuildRequires: pkgconfig(screen_connector_provider) BuildRequires: cmake diff --git a/src/widget_app.c b/src/widget_app.c index 4ee4e2e..3b85e32 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include "widget_app.h" #include "widget-log.h" @@ -891,8 +891,7 @@ static int __before_loop(int argc, char **argv) _E("failed to get launch argv"); /* LCOV_EXCL_LINE */ } - aul_rsm_provider_init(); - + screen_connector_provider_init(); elm_init(argc, argv); r = aul_launch_init(__aul_handler, NULL); @@ -963,7 +962,7 @@ static void __after_loop() if (app_ops->terminate) app_ops->terminate(app_user_data); - aul_rsm_provider_fini(); + screen_connector_provider_fini(); _widget_app_free_viewer_endpoint(); _widget_core_unset_appcore_event_cb(); @@ -1393,8 +1392,7 @@ EXPORT_API int widget_app_get_elm_win(widget_context_h context, _E("failed to get surface"); /* LCOV_EXCL_LINE */ goto fault; /* LCOV_EXCL_LINE */ } - - aul_rsm_provider_remote_enable(cxt->id, surface); + screen_connector_provider_remote_enable(cxt->id, surface); ecore_wl_window_class_name_set(wl_win, cxt->id); elm_win_aux_hint_add(ret_win, "wm.policy.win.user.geometry", "1"); -- 2.7.4 From 3be5a3fd119e14a5834a1e946b1298f2a4ed5922 Mon Sep 17 00:00:00 2001 From: Daehyeon Jung Date: Fri, 16 Dec 2016 18:14:20 +0900 Subject: [PATCH 03/16] fix API description Change-Id: Ic83954f5ded30d25949b24e07afb708a9737c6d1 --- doc/appcore-widget_doc.h | 43 ++++++++---------- include/widget_app.h | 115 ++++++++++++++++++++++------------------------- include/widget_app_efl.h | 15 ++++--- 3 files changed, 81 insertions(+), 92 deletions(-) diff --git a/doc/appcore-widget_doc.h b/doc/appcore-widget_doc.h index 1a83d63..99b698c 100755 --- a/doc/appcore-widget_doc.h +++ b/doc/appcore-widget_doc.h @@ -14,28 +14,26 @@ * limitations under the License. */ + /** - * * @ingroup CAPI_WIDGET_FRAMEWORK * @defgroup CAPI_WIDGET_APP_MODULE Widget Application - * @brief Widget application API - * + * @brief Widget application API. * @section CAPI_WIDGET_APP_MODULE_HEADER Required Header - * \#include - * \#include + * \#include + * \#include + * * @section CAPI_WIDGET_APP_MODULE_OVERVIEW Overview * The @ref CAPI_WIDGET_APP_MODULE API provides functions for handling Tizen widget application state changes or system events. Tizen widget application can be shown in the home screen. - * This APIs support making multiple widget instances per an application. - * + * This API supports making multiple widget instances per an application. * This API provides interfaces for the following categories: - * - Starting or exiting the main event loop - * - Registering callbacks for application state change events - * - Registering callbacks for basic system events - * - Registering callbacks for instance state change events + * - Starting or exiting the main event loop. + * - Registering callbacks for application state change events. + * - Registering callbacks for basic system events. + * - Registering callbacks for instance state change events. * * @subsection CAPI_WIDGET_APP_MODULE_STATE_CHANGE_EVENT Registering Callbacks for Application State Change Events - * As for Tizen widget application states, it is very simple and somewhat similer to Tizen service application states. - * + * As for Tizen widget application states, it is very simple and somewhat similar to Tizen service application states. *

* * @@ -46,7 +44,7 @@ * * * @@ -54,24 +52,23 @@ * * * *
widget_app_create_cb()Hook to take necessary actions before the main event loop starts. * Your UI generation code should be placed here so that you do not miss any events from your application UI. - * Please make sure that you should make a class handle and return it. It will be used when the event for creating widget instance is received. + * Please make sure that you make a class handle and return it. It will be used when the event for creating widget instance is received. * You can initialize shared resources for widget instances in this callback function as well. *
widget_app_terminate_cb() Hook to take necessary actions when your application is terminating. * Your application should release all resources, especially any - * allocations and shared resources must be freed here so other running applications can fully use these shared resources. + * allocations and shared resources must be freed here so that other running applications can fully use these shared resources. *
*

- * * Please refer to the following state diagram to see the possible transitions and callbacks that are called while transition. + * * @image html widget_app_lifecycle.png "Widget Application States" * * @subsection CAPI_WIDGET_APP_MODULE_SYSTEM_EVENT Registering Callbacks for System Events - * Tizen widget applications can receive system events with widget_app_add_event_handler() api. + * Tizen widget applications can receive system events with widget_app_add_event_handler() API. * The type of system events that can be received are same as Tizen UI applications except for APP_EVENT_DEVICE_ORIENTATION_CHANGED. * See @ref CAPI_APPLICATION_MODULE. * The event for APP_EVENT_DEVICE_ORIENTATION_CHANGED is not supported in this module. - * + * @subsection CAPI_WIDGET_APP_INSTNACE_STATE_CHANGE_EVENT Registering callbacks for instance state change events - * As for Tizen widget instance states, it is somewhat similer to Tizen application states. - * + * As for Tizen widget instance states, it is somewhat similar to Tizen application states. *

* * @@ -82,7 +79,7 @@ * * * * @@ -117,13 +114,11 @@ * *
widget_instance_create_cb() Called after widget instance is created. * In this callback, you can initialize resources for this instance. - * If parameter 'content' is not NULL, You should restore the pervious status. + * If parameter 'content' is not NULL, you should restore the pervious status. *
*

- * * Please refer to the following state diagram to see the possible transitions and callbacks that are called while transition. + * * @image html widget_obj_lifecycle.png "Widget Instance States" * * @section CAPI_WIDGET_APP_MODULE_RELATED_FEATURES Related Features * This API is related with the following feature: * - http://tizen.org/feature/shell.appwidget - * - * */ diff --git a/include/widget_app.h b/include/widget_app.h index 3cd38a0..da53d6b 100755 --- a/include/widget_app.h +++ b/include/widget_app.h @@ -33,6 +33,7 @@ extern "C" { * @{ */ + /** * @brief Destroy type of widget instance. * @since_tizen 2.3.1 @@ -40,28 +41,29 @@ extern "C" { typedef enum widget_app_destroy_type { WIDGET_APP_DESTROY_TYPE_PERMANENT = 0x00, /**< User deleted this widget from the viewer */ WIDGET_APP_DESTROY_TYPE_TEMPORARY = 0x01, /**< Widget is deleted because of other reasons (e.g. widget process is terminated temporarily by the system) */ -} widget_app_destroy_type_e; +} widget_app_destroy_type_e; /**< Delete type */ + /** - * @brief The handle for widget class. + * @brief The widget class handle. * @since_tizen 2.3.1 */ typedef struct _widget_class *widget_class_h; + /** - * @brief The handle for widget context. + * @brief The widget context handle. * @since_tizen 2.3.1 */ typedef struct _widget_context *widget_context_h; + /** * @brief Called when the widget instance starts. * @since_tizen 2.3.1 - * * @details The callback function is called after widget instance is created. * In this callback, you can initialize resources for this instance. - * - * @param[in] context The context of widget instance. + * @param[in] context The context of widget instance * @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 @@ -72,37 +74,34 @@ typedef struct _widget_context *widget_context_h; */ typedef int (*widget_instance_create_cb)(widget_context_h context, bundle *content, int w, int h, void *user_data); + /** * @brief Called before the widget instance is destroyed. * @since_tizen 2.3.1 - * * @details The callback function is called before widget instance is destroyed. * 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. - * - * @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 + * If reason is not #WIDGET_APP_DESTROY_TYPE_TEMPORARY, it should store the current status by using incoming bundle. * @remark 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. * Consequently, you should not use widget_app_context_set_content_info() api 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 * @return #WIDGET_ERROR_NONE on success, * otherwise an error code (see WIDGET_ERROR_XXX) on failure */ typedef int (*widget_instance_destroy_cb)(widget_context_h context, widget_app_destroy_type_e reason, bundle *content, void *user_data); + /** * @brief Called when the widget is invisible. * @since_tizen 2.3.1 - * * @details The callback function is called when the widget is invisible. * The paused instance may be destroyed by framework. - * * @param[in] context The context of widget instance * @param[in] user_data The user data passed from widget_app_class_create function * @return #WIDGET_ERROR_NONE on success, @@ -110,12 +109,11 @@ typedef int (*widget_instance_destroy_cb)(widget_context_h context, widget_app_d */ typedef int (*widget_instance_pause_cb)(widget_context_h context, void *user_data); + /** * @brief Called when the widget is visible. * @since_tizen 2.3.1 - * * @details The callback function is called when the widget is visible. - * * @param[in] context The context of widget instance * @param[in] user_data The user data passed from widget_app_class_create function * @return #WIDGET_ERROR_NONE on success, @@ -123,12 +121,11 @@ typedef int (*widget_instance_pause_cb)(widget_context_h context, void *user_dat */ typedef int (*widget_instance_resume_cb)(widget_context_h context, void *user_data); + /** * @brief Called before the widget size is changed. * @since_tizen 2.3.1 - * * @details The callback function is called before the widget size is changed. - * * @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 @@ -138,13 +135,12 @@ typedef int (*widget_instance_resume_cb)(widget_context_h context, void *user_da */ typedef int (*widget_instance_resize_cb)(widget_context_h context, int w, int h, void *user_data); + /** * @brief Called when the event for updating widget is received. * @since_tizen 2.3.1 - * * @details The callback function is called when the event for updating widget is received. - * - * @param[in] context The context of widget instance. + * @param[in] context The context of widget instance * @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 @@ -155,6 +151,7 @@ typedef int (*widget_instance_resize_cb)(widget_context_h context, int w, int h, */ typedef int (*widget_instance_update_cb)(widget_context_h context, bundle *content, int force, void *user_data); + /** * @brief The structure for lifecycle of a widget instance. * @since_tizen 2.3.1 @@ -168,14 +165,13 @@ typedef struct { widget_instance_update_cb update; /**< The callback function is called when the event for updating widget is received. */ } widget_instance_lifecycle_callback_s; + /** * @brief Called when the application starts. * @since_tizen 2.3.1 - * * @details The callback function is called before the main loop of the application starts. * In this callback, you can initialize resources which can be shared among widget instances. * This function should return the handle for widget class so that it will be used for making instances of widget. - * * @param[in] user_data The user data passed from the callback registration function * @return The object of widget class * @see widget_app_main() @@ -192,17 +188,18 @@ typedef struct { */ typedef widget_class_h (*widget_app_create_cb)(void *user_data); + /** * @brief Called when the application's main loop exits. * @details This callback function is called once after the main loop of the application exits. * You should release the application's resources in this function. * @since_tizen 2.3.1 - * * @param[in] user_data The user data passed from the callback registration function * @see widget_app_main() */ typedef void (*widget_app_terminate_cb)(void *user_data); + /** * @brief The structure for lifecycle of a widget application. * @since_tizen 2.3.1 @@ -212,31 +209,29 @@ typedef struct { widget_app_terminate_cb terminate; /**< This callback function is called once after the main loop of the application exits. */ } widget_app_lifecycle_callback_s; + /** * @brief Called for each widget context. * @since_tizen 2.3.1 - * * @details This function will be called in the function of widget_app_foreach_context repeatedly. - * * @param[in] context The context for widget instance * @param[in] data The data for caller - * @return true to continue with the next iteration of the loop, - * otherwise false to break out of the loop. + * @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); + /** * @brief Runs the main loop of the application until widget_app_exit() is called. * @since_tizen 2.3.1 - * * @param[in] argc The argument count * @param[in] argv The argument vector * @param[in] callback The set of callback functions to handle application events * @param[in] user_data The user data to be passed to the callback functions - * * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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 @@ -245,13 +240,13 @@ typedef bool (*widget_context_cb)(widget_context_h context, void *data); */ int widget_app_main(int argc, char **argv, widget_app_lifecycle_callback_s *callback, void *user_data); + /** * @brief Exits the main loop of the application. * @details The main loop of the application stops and widget_app_terminate_cb() is invoked. * @since_tizen 2.3.1 - * * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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_FAULT Unrecoverable error @@ -260,14 +255,13 @@ int widget_app_main(int argc, char **argv, widget_app_lifecycle_callback_s *call */ int widget_app_exit(void); + /** * @brief Finishes context for the widget instance. * @since_tizen 2.3.1 - * * @param[in] context The context for widget instance - * * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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 @@ -275,15 +269,14 @@ int widget_app_exit(void); */ int widget_app_terminate_context(widget_context_h context); + /** * @brief Retrieves all widget contexts in this application. * @since_tizen 2.3.1 - * * @param[in] callback The iteration callback function * @param[in] data The data for the callback function - * * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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_CANCELED The iteration is canceled @@ -293,17 +286,16 @@ int widget_app_terminate_context(widget_context_h context); */ int widget_app_foreach_context(widget_context_cb callback, void *data); + /** * @brief Adds the system event handler. * @since_tizen 2.3.1 - * * @param[out] event_handler The event handler * @param[in] event_type The system event type. APP_EVENT_DEVICE_ORIENTATION_CHANGED is not supported * @param[in] callback The callback function * @param[in] user_data The user data to be passed to the callback function - * * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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_OUT_OF_MEMORY Out of memory @@ -319,11 +311,9 @@ int widget_app_add_event_handler(app_event_handler_h *event_handler, app_event_t /** * @brief Removes registered event handler. * @since_tizen 2.3.1 - * * @param[in] event_handler The event handler - * - * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * @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 @@ -332,25 +322,25 @@ int widget_app_add_event_handler(app_event_handler_h *event_handler, app_event_t */ int widget_app_remove_event_handler(app_event_handler_h event_handler); + /** * @brief Gets a widget instance id. * @since_tizen 2.3.1 - * - * @param[in] context The context for widget instance - * * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section. - * @return Widget ID on success, otherwise NULL + * @remark You must not free returned Widget ID + * @param[in] context The context for widget instance + * @return Widget ID on success, + * otherwise NULL * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported * @exception #WIDGET_ERROR_FAULT Unrecoverable error - * @remark You must not free returned Widget ID * @see get_last_result() */ const char *widget_app_get_id(widget_context_h context); + /** * @brief Makes a class for widget instances. * @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. * @param[in] callback The set of lifecycle callbacks * @param[in] user_data The user data to be passed to the callback functions @@ -363,42 +353,42 @@ const char *widget_app_get_id(widget_context_h context); */ widget_class_h widget_app_class_create(widget_instance_lifecycle_callback_s callback, void *user_data); + /** * @brief Sets a tag in the context. * @since_tizen 2.3.1 - * * @param[in] context The context for widget instance * @param[in] tag The value to save - * * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error */ int widget_app_context_set_tag(widget_context_h context, void *tag); + /** * @brief Gets the tag in the context. * @since_tizen 2.3.1 - * * @param[in] context The context for widget instance * @param[out] tag The value to get * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * otherwise an error code (see WIDGET_ERROR_XXX) on failure * @retval #WIDGET_ERROR_NOT_SUPPORTED Not supported * @retval #WIDGET_ERROR_INVALID_PARAMETER Invalid parameter * @retval #WIDGET_ERROR_FAULT Unrecoverable error */ int widget_app_context_get_tag(widget_context_h context, void **tag); + /** * @brief Sets the content info to the widget. * @since_tizen 2.3.1 * @param[in] context The context for widget instance * @param[in] content_info The data set to save * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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 @@ -407,13 +397,14 @@ int widget_app_context_get_tag(widget_context_h context, void **tag); */ int widget_app_context_set_content_info(widget_context_h context, bundle *content_info); + /** * @brief Sends the title to the widget. * @since_tizen 2.3.1 * @param[in] context The context for widget instance * @param[in] title When an accessibility mode is turned on, this string will be read * @return #WIDGET_ERROR_NONE on success, - * otherwise an error code (see WIDGET_ERROR_XXX) on failure + * 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 @@ -422,6 +413,7 @@ int widget_app_context_set_content_info(widget_context_h context, bundle *conten */ int widget_app_context_set_title(widget_context_h context, const char *title); + /** * @brief Adds an additional widget class for multi-class of widget instantiation. * @since_tizen 3.0 @@ -449,4 +441,3 @@ widget_class_h widget_app_class_add(widget_class_h widget_class, const char *cla #endif #endif /* __TIZEN_APPFW_WIDGET_APP_H__ */ - diff --git a/include/widget_app_efl.h b/include/widget_app_efl.h index fd1a0c0..092f195 100644 --- a/include/widget_app_efl.h +++ b/include/widget_app_efl.h @@ -14,6 +14,7 @@ * limitations under the License. */ + #ifndef __TIZEN_APPFW_WIDGET_APP_EFL_H__ #define __TIZEN_APPFW_WIDGET_APP_EFL_H__ @@ -24,30 +25,32 @@ extern "C" { #endif + /** * @addtogroup CAPI_WIDGET_APP_MODULE * @{ */ /** - * @brief Gets a evas object for the widget + * @brief Gets an Evas object for the widget. * @since_tizen 2.3.1 - * * @param[in] context The context for widget instance - * @param[out] win Evas object for window - * - * @return 0 on success, otherwise a negative error value - * @retval #WIDGET_ERROR_NONE Successfull + * @param[out] win evas object for window + * @return 0 on success, + * otherwise a negative error value + * @retval #WIDGET_ERROR_NONE Successful * @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); + /** * @} */ + #ifdef __cplusplus } #endif -- 2.7.4 From 0642934264fd99143a235ea87f70600c74111183 Mon Sep 17 00:00:00 2001 From: Daehyeon Jung Date: Wed, 4 Jan 2017 17:50:03 +0900 Subject: [PATCH 04/16] Fix API description Change-Id: I9184102cc89cd08f654697a2ae67e2d627dfd39c --- include/widget_app.h | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/include/widget_app.h b/include/widget_app.h index da53d6b..4a2068e 100755 --- a/include/widget_app.h +++ b/include/widget_app.h @@ -35,13 +35,13 @@ extern "C" { /** - * @brief Destroy type of widget instance. + * @brief Enumeration for destroy type of widget instance. * @since_tizen 2.3.1 */ typedef enum widget_app_destroy_type { WIDGET_APP_DESTROY_TYPE_PERMANENT = 0x00, /**< User deleted this widget from the viewer */ WIDGET_APP_DESTROY_TYPE_TEMPORARY = 0x01, /**< Widget is deleted because of other reasons (e.g. widget process is terminated temporarily by the system) */ -} widget_app_destroy_type_e; /**< Delete type */ +} widget_app_destroy_type_e; /** @@ -60,9 +60,9 @@ typedef struct _widget_context *widget_context_h; /** * @brief Called when the widget instance starts. - * @since_tizen 2.3.1 * @details The callback function is called after widget instance is created. * In this callback, you can initialize resources for this instance. + * @since_tizen 2.3.1 * @param[in] context The context of widget instance * @param[in] content The data set for the previous status * @param[in] w The pixel value for widget width @@ -77,10 +77,10 @@ typedef int (*widget_instance_create_cb)(widget_context_h context, bundle *conte /** * @brief Called before the widget instance is destroyed. - * @since_tizen 2.3.1 * @details The callback function is called before widget instance is destroyed. * 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. * 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, @@ -99,9 +99,9 @@ typedef int (*widget_instance_destroy_cb)(widget_context_h context, widget_app_d /** * @brief Called when the widget is invisible. - * @since_tizen 2.3.1 * @details The callback function is called when the widget is invisible. * 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 * @return #WIDGET_ERROR_NONE on success, @@ -112,8 +112,8 @@ typedef int (*widget_instance_pause_cb)(widget_context_h context, void *user_dat /** * @brief Called when the widget is visible. - * @since_tizen 2.3.1 * @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 * @return #WIDGET_ERROR_NONE on success, @@ -124,8 +124,8 @@ typedef int (*widget_instance_resume_cb)(widget_context_h context, void *user_da /** * @brief Called before the widget size is changed. - * @since_tizen 2.3.1 * @details The callback function is called before the widget size is changed. + * @since_tizen 2.3.1 * @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 @@ -138,8 +138,8 @@ typedef int (*widget_instance_resize_cb)(widget_context_h context, int w, int h, /** * @brief Called when the event for updating widget is received. - * @since_tizen 2.3.1 * @details The callback function is called when the event for updating widget is received. + * @since_tizen 2.3.1 * @param[in] context The context of widget instance * @param[in] content The data set for updating this widget. It will be provided by requester. * Requester can use widget_service_trigger_update() @@ -153,7 +153,7 @@ typedef int (*widget_instance_update_cb)(widget_context_h context, bundle *conte /** - * @brief The structure for lifecycle of a widget instance. + * @brief The structure type containing the set of callback functions for lifecycle of a widget instance. * @since_tizen 2.3.1 */ typedef struct { @@ -168,10 +168,10 @@ typedef struct { /** * @brief Called when the application starts. - * @since_tizen 2.3.1 * @details The callback function is called before the main loop of the application starts. * In this callback, you can initialize resources which can be shared among widget instances. * This function should return the handle for widget class so that it will be used for making instances of widget. + * @since_tizen 2.3.1 * @param[in] user_data The user data passed from the callback registration function * @return The object of widget class * @see widget_app_main() @@ -212,8 +212,8 @@ typedef struct { /** * @brief Called for each widget context. - * @since_tizen 2.3.1 * @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 * @return @c true to continue with the next iteration of the loop, @@ -312,7 +312,7 @@ int widget_app_add_event_handler(app_event_handler_h *event_handler, app_event_t * @brief Removes registered event handler. * @since_tizen 2.3.1 * @param[in] event_handler The event handler - * @return #WIDGET_ERROR_NONE on success + * @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 @@ -344,7 +344,8 @@ const char *widget_app_get_id(widget_context_h context); * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section. * @param[in] callback The set of lifecycle callbacks * @param[in] user_data The user data to be passed to the callback functions - * @return The new widget class object. NULL on error + * @return The new widget class object, + * NULL on error * @exception #WIDGET_ERROR_NONE Successfully added * @exception #WIDGET_ERROR_INVALID_PARAMETER Not supported * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported @@ -422,7 +423,8 @@ int widget_app_context_set_title(widget_context_h context, const char *title); * @param[in] class_id The class id of provider * @param[in] callback The set of lifecycle callbacks * @param[in] user_data The user data to be passed to the callback functions - * @return The new widget class object. NULL on error + * @return The new widget class object, + * NULL on error * @exception #WIDGET_ERROR_NONE Successfully added * @exception #WIDGET_ERROR_INVALID_PARAMETER Not supported * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported -- 2.7.4 From e123e9a0ee0720d4d84b17dabca59a92cc7ed539 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Fri, 20 Jan 2017 17:30:32 +0900 Subject: [PATCH 05/16] Fix memory leak Change-Id: I6dfa71dd1baebac7c12725badf15459b29b13204 Signed-off-by: Hwankyu Jhun --- src/widget_app.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/widget_app.c b/src/widget_app.c index 3b85e32..b3c18c5 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -973,6 +973,11 @@ static void __after_loop() package_id = NULL; } + if (appid) { + free(appid); + appid = NULL; + } + elm_shutdown(); } @@ -1148,8 +1153,13 @@ EXPORT_API int widget_app_main(int argc, char **argv, app_ops = callback; app_user_data = user_data; r = __before_loop(argc, argv); - if (r < 0) + if (r < 0) { + if (appid) { + free(appid); + appid = NULL; + } return r; + } ecore_main_loop_begin(); aul_status_update(STATUS_DYING); @@ -1538,6 +1548,7 @@ EXPORT_API int widget_app_context_set_content_info(widget_context_h context, else context->content = NULL; + free(raw); if (ret < 0) { /* LCOV_EXCL_START */ _E("failed to send content info: %s of %s (%d)", context->id, -- 2.7.4 From be6863152ed6d4bf9653a3fb44e98397d874cef6 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Tue, 24 Jan 2017 08:13:17 +0900 Subject: [PATCH 06/16] Fix versioning Change-Id: I9e095901a6c52607387d86298836fcdc2c1c47da Signed-off-by: Hwankyu Jhun --- CMakeLists.txt | 10 +++++----- ...idget-application.pc => capi-appfw-widget-application.pc.in | 2 +- packaging/appcore-widget.spec | 4 +--- 3 files changed, 7 insertions(+), 9 deletions(-) rename capi-appfw-widget-application.pc => capi-appfw-widget-application.pc.in (95%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13129fc..f295aae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,7 @@ PROJECT(appcore-widget C) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_PREFIX "\${prefix}") SET(INCLUDEDIR "\${prefix}/include") -SET(VERSION_MAJOR 1) -SET(VERSION "${VERSION_MAJOR}.1") +SET(VERSION ${FULLVER}) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) @@ -45,15 +44,16 @@ ENDFOREACH(flag) AUX_SOURCE_DIRECTORY(src SOURCES) ADD_LIBRARY(${APPCORE_WIDGET} SHARED ${SOURCES}) -SET_TARGET_PROPERTIES(${APPCORE_WIDGET} PROPERTIES SOVERSION ${VERSION_MAJOR}) -SET_TARGET_PROPERTIES(${APPCORE_WIDGET} PROPERTIES VERSION ${VERSION}) +SET_TARGET_PROPERTIES(${APPCORE_WIDGET} PROPERTIES SOVERSION ${MAJORVER}) +SET_TARGET_PROPERTIES(${APPCORE_WIDGET} PROPERTIES VERSION ${FULLVER}) SET_TARGET_PROPERTIES(${APPCORE_WIDGET} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_widget}) TARGET_LINK_LIBRARIES(${APPCORE_WIDGET} ${pkg_widget_LDFLAGS} "-ldl -Wl,--no-undefined") +CONFIGURE_FILE(${APPCORE_WIDGET}.pc.in ${APPCORE_WIDGET}.pc @ONLY) INSTALL(TARGETS ${APPCORE_WIDGET} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${APPCORE_WIDGET}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION include/appfw/ FILES_MATCHING PATTERN "*.h" - ) \ No newline at end of file + ) diff --git a/capi-appfw-widget-application.pc b/capi-appfw-widget-application.pc.in similarity index 95% rename from capi-appfw-widget-application.pc rename to capi-appfw-widget-application.pc.in index e857f73..e1ef14d 100644 --- a/capi-appfw-widget-application.pc +++ b/capi-appfw-widget-application.pc.in @@ -7,7 +7,7 @@ includedir=@INCLUDEDIR@ Name: capi-appfw-widget-application Description: widget application library -Version: 1.1 +Version: @VERSION@ Requires: aul dlog elementary capi-appfw-app-control capi-appfw-app-common widget_service Libs: -L${libdir} -lcapi-appfw-widget-application Cflags: -I${includedir} -I${includedir}/appfw diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 8bdedaa..a340ebe 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -59,9 +59,7 @@ cp LICENSE %{buildroot}/usr/share/license/%{name} %files %manifest appcore-widget.manifest %defattr(-,root,root,-) -%{_libdir}/libcapi-appfw-widget-application.so -%{_libdir}/libcapi-appfw-widget-application.so.1 -%{_libdir}/libcapi-appfw-widget-application.so.1.1 +%{_libdir}/libcapi-appfw-widget-application.so* /usr/share/license/%{name} %files -n capi-appfw-widget-application-devel -- 2.7.4 From 73fd24b43226fc4c1736d8793fa558fd97049f52 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 25 Jan 2017 13:47:24 +0900 Subject: [PATCH 07/16] Release version 1.0.1 Changes: - Fix versioning - Fix memory leak Change-Id: I5e582e84080f70d1e8d8b743b686979773b7d5bc 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 a340ebe..7cc4463 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.0.0.0 +Version: 1.0.1 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From 93a29b50d193051cd3ca8d031be856e8e0164e0e Mon Sep 17 00:00:00 2001 From: Semun Lee Date: Tue, 31 Jan 2017 09:25:30 +0900 Subject: [PATCH 08/16] Fix errata in doxygen comment Change-Id: Ib4c4879cd0c9b2a26e15fec2b678699fbcad51cf Signed-off-by: Semun Lee --- doc/appcore-widget_doc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/appcore-widget_doc.h b/doc/appcore-widget_doc.h index 99b698c..0dbc9a9 100755 --- a/doc/appcore-widget_doc.h +++ b/doc/appcore-widget_doc.h @@ -79,7 +79,7 @@ * widget_instance_create_cb() * Called after widget instance is created. * In this callback, you can initialize resources for this instance. - * If parameter 'content' is not NULL, you should restore the pervious status. + * If parameter 'content' is not NULL, you should restore the previous status. * * * -- 2.7.4 From 48cb35c7092cd696f061bde3fa53b48044bc1b59 Mon Sep 17 00:00:00 2001 From: Junghoon Park Date: Wed, 22 Feb 2017 10:33:32 +0900 Subject: [PATCH 09/16] Send FG/BG signal to resourced - resourced should know the FG/BG status to control oom score Change-Id: Ieab8aa28f9f80bbb087cef1f662c58ad8e4cb3de Signed-off-by: Junghoon Park (cherry picked from commit 0c9faf0db7a4b3776c9a097e6952f8393087f01a) --- src/widget_app.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/widget_app.c b/src/widget_app.c index b3c18c5..3911a6d 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -16,6 +16,7 @@ #include +#include #include #include @@ -50,6 +51,9 @@ #define STR_MAX_BUF 128 #define LOG_TAG "CAPI_WIDGET_APPLICATION" #define K_REASON "__WC_K_REASON__" +#define APP_TYPE_WIDGET "widgetapp" +#define STATUS_FOREGROUND "fg" +#define STATUS_BACKGROUND "bg" typedef enum _widget_obj_state_e { WC_READY = 0, @@ -86,6 +90,7 @@ static char *appid; static widget_class_h class_provider; static int exit_called; static char *package_id; +static bool fg_signal; static void _widget_core_set_appcore_event_cb(void); static void _widget_core_unset_appcore_event_cb(void); @@ -149,6 +154,28 @@ static widget_context_s *__find_context_by_id(const char *id) return ret->data; } +static gint __comp_by_state(gconstpointer a, gconstpointer b) +{ + widget_context_s *wc = (widget_context_s *)a; + + if (wc->state == (widget_obj_state_e)GPOINTER_TO_INT(b)) + return 0; + + return -1; +} + +static widget_context_s *__find_context_by_state(widget_obj_state_e state) +{ + GList *ret; + GList *contexts = _widget_app_get_contexts(); + + ret = g_list_find_custom(contexts, GINT_TO_POINTER((int)state), __comp_by_state); + if (ret == NULL) + return NULL; + + return ret->data; +} + static gint __comp_by_win(gconstpointer a, gconstpointer b) { int win = GPOINTER_TO_INT(b); @@ -283,6 +310,15 @@ static int __instance_resume(widget_class_h handle, const char *id, int send_upd if (send_update) { ret = __send_update_status(handle->classid, wc->id, WIDGET_INSTANCE_EVENT_RESUME, NULL); + if (!fg_signal) { + _D("Send fg signal to resourceD"); + aul_send_app_status_change_signal(getpid(), + appid, + package_id, + STATUS_FOREGROUND, + APP_TYPE_WIDGET); + fg_signal = true; + } } else { ret = 0; } @@ -318,6 +354,16 @@ static int __instance_pause(widget_class_h handle, const char *id, int send_upda if (send_update) { ret = __send_update_status(handle->classid, wc->id, WIDGET_INSTANCE_EVENT_PAUSE, NULL); + wc = __find_context_by_state(WC_RUNNING); + if (!wc && fg_signal) { + _D("Send bg signal to resourceD"); + aul_send_app_status_change_signal(getpid(), + appid, + package_id, + STATUS_BACKGROUND, + APP_TYPE_WIDGET); + fg_signal = false; + } } else { ret = 0; } -- 2.7.4 From 85b92fd555cdf4365e238cf949f50c5e58497c86 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 16 Mar 2017 11:39:08 +0900 Subject: [PATCH 10/16] Add log messages Change-Id: I9cc598c0b9252b16946aa93771290538854ddd68 Signed-off-by: Hwankyu Jhun --- src/widget_app.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/widget_app.c b/src/widget_app.c index 3911a6d..6cedfa8 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -455,8 +455,10 @@ static int __instance_create(widget_class_h handle, const char *id, const char * bundle *content_info = NULL; wc = (widget_context_s *)calloc(1, sizeof(widget_context_s)); - if (!wc) + if (!wc) { + _E("Out of memory"); return WIDGET_ERROR_OUT_OF_MEMORY; + } wc->state = WC_READY; wc->id = strdup(id); @@ -473,6 +475,7 @@ static int __instance_create(widget_class_h handle, const char *id, const char * ret = handle->ops.create(wc, content_info, w, h, handle->user_data); if (ret < 0) { + _W("Create callback resturns error(%d)", ret); /* TODO send abort */ } else { ret = __send_update_status(handle->classid, wc->id, -- 2.7.4 From ae1eeb5eb6e7bec59ed96c4d80f8fa43ee818adb Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 16 Mar 2017 12:59:35 +0900 Subject: [PATCH 11/16] Release version 1.0.2 Changes: - Add log messages - Send FG/BG signal to resourced - Fix errata in doxygen comment Change-Id: I65e2aea56a83ebfb943acdabe8b13e0bb4a89a8b 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 7cc4463..dc9afee 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.0.1 +Version: 1.0.2 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From fcbfa76f54caaff86e2ff9648d420f1338854af8 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Fri, 17 Mar 2017 16:53:20 +0900 Subject: [PATCH 12/16] Send create aborted event to the widget viewer Requires: - https://review.tizen.org/gerrit/119553 Change-Id: Iaac8a02534fd72381a270aa00e00de59756559f0 Signed-off-by: Hwankyu Jhun --- src/widget_app.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/widget_app.c b/src/widget_app.c index 6cedfa8..e25fdd1 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -476,7 +476,17 @@ static int __instance_create(widget_class_h handle, const char *id, const char * ret = handle->ops.create(wc, content_info, w, h, handle->user_data); if (ret < 0) { _W("Create callback resturns error(%d)", ret); - /* TODO send abort */ + ret = __send_update_status(handle->classid, wc->id, + WIDGET_INSTANCE_EVENT_CREATE_ABORTED, NULL); + _widget_app_remove_context(wc); + if (wc->id) + free(wc->id); + if (wc->content) + free(wc->content); + free(wc); + + if (_widget_app_get_contexts() == NULL && !exit_called) + widget_app_exit(); } else { ret = __send_update_status(handle->classid, wc->id, WIDGET_INSTANCE_EVENT_CREATE, NULL); -- 2.7.4 From e14b8629ef2df41c3a018aaed9f2d40a791c03ff Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Fri, 17 Mar 2017 22:59:28 +0900 Subject: [PATCH 13/16] Handle widget resize event Change-Id: I8a6a8cc7be128ebd8720bb2bd6a0794385a2b97a Signed-off-by: Hyunho Kang --- src/widget_app.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/widget_app.c b/src/widget_app.c index e25fdd1..5995238 100755 --- a/src/widget_app.c +++ b/src/widget_app.c @@ -644,6 +644,7 @@ static void __control(bundle *b) __instance_create(handle, id, content, w, h); } else if (strcmp(operation, "resize") == 0) { __resize_window(id, w, h); + __instance_resize(handle, id, w, h); } else if (strcmp(operation, "update") == 0) { if (id) __instance_update(handle, id, force, content); -- 2.7.4 From c21a135e1b7221cef0953ac99cd65448905281ed Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Mon, 20 Mar 2017 14:02:25 +0900 Subject: [PATCH 14/16] Release version 1.0.3 Changes: - Send create aborted event to the widget viewer - Handle widget resize event Change-Id: If1ccaf402f6bf1550748d89bf97a136a53c205f3 Signed-off-by: Hyunho 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 dc9afee..4083dc1 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.0.2 +Version: 1.0.3 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4 From bcaf074b462bc2dceea9a6f8c291d8c02255983c Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Thu, 23 Mar 2017 10:47:57 +0900 Subject: [PATCH 15/16] Set license using %license Change-Id: If5d4a82e5155d2d4395ee1f01189ec62c46c7ca5 Signed-off-by: Hyunho Kang --- packaging/appcore-widget.spec | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packaging/appcore-widget.spec b/packaging/appcore-widget.spec index 4083dc1..7212bdd 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -47,9 +47,6 @@ rm -rf %{buildroot} mkdir -p %{buildroot}%{_libdir}/pkgconfig cp capi-appfw-widget-application.pc %{buildroot}%{_libdir}/pkgconfig -mkdir -p %{buildroot}/usr/share/license -cp LICENSE %{buildroot}/usr/share/license/%{name} - %post -p /sbin/ldconfig @@ -60,7 +57,7 @@ cp LICENSE %{buildroot}/usr/share/license/%{name} %manifest appcore-widget.manifest %defattr(-,root,root,-) %{_libdir}/libcapi-appfw-widget-application.so* -/usr/share/license/%{name} +%license LICENSE %files -n capi-appfw-widget-application-devel /usr/include/appfw/widget_app.h -- 2.7.4 From 5c83778cd7e835307a83001cafb99e089ff99418 Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Thu, 23 Mar 2017 12:55:45 +0900 Subject: [PATCH 16/16] Release version 1.0.4 Changes: - Set license using %license Change-Id: I8ccb83d4ac309405aedfc5b088cec3a50bfbf47b Signed-off-by: Hyunho 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 7212bdd..11bc0bd 100644 --- a/packaging/appcore-widget.spec +++ b/packaging/appcore-widget.spec @@ -1,6 +1,6 @@ Name: appcore-widget Summary: Widget Application -Version: 1.0.3 +Version: 1.0.4 Release: 1 Group: Application Framework/Libraries License: Apache-2.0 -- 2.7.4