diff options
author | Kyuho Jo <kyuho.jo@samsung.com> | 2015-11-05 10:07:48 +0900 |
---|---|---|
committer | Kyuho Jo <kyuho.jo@samsung.com> | 2015-11-05 10:46:47 +0900 |
commit | 9f58f609204fcc8192d97ce4d8d91b69948777af (patch) | |
tree | fd4acc597020adf85a8d1f6da2b8e66cea1ab3e5 | |
parent | 053c4f8234de9bf598be7bc8dc5909173492b80b (diff) | |
download | minicontrol-9f58f609204fcc8192d97ce4d8d91b69948777af.tar.gz minicontrol-9f58f609204fcc8192d97ce4d8d91b69948777af.tar.bz2 minicontrol-9f58f609204fcc8192d97ce4d8d91b69948777af.zip |
Merge from tizen 2.4 latestsubmit/tizen/20151105.055633accepted/tizen/wearable/20151105.084221accepted/tizen/tv/20151105.084200accepted/tizen/mobile/20151105.084146
Change-Id: I678a82358881ad9ca62f0b1f059bcd484c71e0f7
Signed-off-by: Kyuho Jo <kyuho.jo@samsung.com>
-rwxr-xr-x | include/minicontrol-internal.h | 6 | ||||
-rwxr-xr-x | include/minicontrol-type.h | 20 | ||||
-rwxr-xr-x | include/minicontrol-viewer.h | 4 | ||||
-rwxr-xr-x | src/minicontrol-internal.c | 10 | ||||
-rwxr-xr-x | src/minicontrol-provider.c | 35 | ||||
-rwxr-xr-x | src/minicontrol-viewer.c | 37 |
6 files changed, 74 insertions, 38 deletions
diff --git a/include/minicontrol-internal.h b/include/minicontrol-internal.h index a41c217..da75883 100755 --- a/include/minicontrol-internal.h +++ b/include/minicontrol-internal.h @@ -77,6 +77,10 @@ typedef enum _minicontrol_action { MINICONTROL_ACTION_REQUEST, /**< the viewer of the minicontrol object is asked to do something */ } minicontrol_action_e; +typedef enum { + MINICONTROL_EVENT_REQUEST_LOCK = 1001, /**< A minicontrol object should not be removed by user */ +} minicontrol_internal_provider_event_e; + typedef struct _minictrl_sig_handle minictrl_sig_handle; int _minictrl_provider_message_send(int event, const char *minicontrol_name, unsigned int witdh, unsigned int height, minicontrol_priority_e priority); @@ -92,7 +96,7 @@ void _minictrl_dbus_sig_handle_dettach(minictrl_sig_handle *handle); int _minictrl_provider_proc_send(int type); /* new */ -int _minictrl_send_event(const char *signal_name, const char *provider_app_id, int event, bundle *signal_arg); +int _minictrl_send_event(const char *signal_name, const char *minicontrol_name, int event, bundle *signal_arg); #endif /* _MINICTRL_INTERNAL_H_ */ diff --git a/include/minicontrol-type.h b/include/minicontrol-type.h index 18d04d4..8a9de09 100755 --- a/include/minicontrol-type.h +++ b/include/minicontrol-type.h @@ -77,6 +77,18 @@ <TD></TD><TD></TD> <TD></TD><TD></TD> </TR> +<TR> +<TD>MINICONTROL_VIEWER_EVENT_SHOW</TD><TD>viewer</TD> +<TD></TD><TD></TD> +<TD></TD><TD></TD> +<TD></TD><TD></TD> +</TR> +<TR> +<TD>MINICONTROL_VIEWER_EVENT_HIDE</TD><TD>viewer</TD> +<TD></TD><TD></TD> +<TD></TD><TD></TD> +<TD></TD><TD></TD> +</TR> </TABLE> */ @@ -108,6 +120,8 @@ typedef enum { */ typedef enum { MINICONTROL_VIEWER_EVENT_REPORT_ANGLE = MINICONTROL_EVENT_REPORT_ANGLE, /**< Reports the current angle of the minicontrol viewer. Required argument : Angle of minicontrol viewer, Bundle Key : "angle", Bundle Value Type : string.*/ + MINICONTROL_VIEWER_EVENT_SHOW = 201, /**< The minicontrol viewer is shown. Required argument : NULL.*/ + MINICONTROL_VIEWER_EVENT_HIDE = 202, /**< The minicontrol viewer is hidden. Required argument : NULL.*/ } minicontrol_viewer_event_e; /** @@ -115,9 +129,9 @@ typedef enum { * @since_tizen 2.4 */ typedef enum { - MINICONTROL_TARGET_VIEWER_QUICK_PANEL = 0x0001, /* Request to place the minicontrol on the quickpanel */ - MINICONTROL_TARGET_VIEWER_STOCK_LOCK_SCREEN = 0x0002, /* Request to place the minicontrol on the stock lock screen */ - MINICONTROL_TARGET_VIEWER_CUSTOM_LOCK_SCREEN = 0x0004, /* Request to place the minicontrol on a lock screen replacement application */ + MINICONTROL_TARGET_VIEWER_QUICK_PANEL = 0x0001, /**< Request to place the minicontrol on the quickpanel */ + MINICONTROL_TARGET_VIEWER_STOCK_LOCK_SCREEN = 0x0002, /**< Request to place the minicontrol on the stock lock screen */ + MINICONTROL_TARGET_VIEWER_CUSTOM_LOCK_SCREEN = 0x0004, /**< Request to place the minicontrol on a lock screen replacement application */ } minicontrol_target_viewer_e; /** diff --git a/include/minicontrol-viewer.h b/include/minicontrol-viewer.h index 6629c0f..67e87a3 100755 --- a/include/minicontrol-viewer.h +++ b/include/minicontrol-viewer.h @@ -50,7 +50,7 @@ Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol /** * @brief Sends a event to the provider. * @since_tizen 2.4 - * @param[in] provider_app_id Application id of the minicontrol provider + * @param[in] minicontrol_name The name of the minicontrol window * @param[in] event Type of the event * @param[in] event_arg A bundle of arguments * @return #MINICONTROL_ERROR_NONE on success, @@ -58,7 +58,7 @@ Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument * @see #minicontrol_viewer_event_e */ -int minicontrol_viewer_send_event(const char *provider_app_id, minicontrol_viewer_event_e event, bundle *event_arg); +int minicontrol_viewer_send_event(const char *minicontrol_name, minicontrol_viewer_event_e event, bundle *event_arg); /** * @brief Called when a event comes from the provider diff --git a/src/minicontrol-internal.c b/src/minicontrol-internal.c index b414169..25ceb4a 100755 --- a/src/minicontrol-internal.c +++ b/src/minicontrol-internal.c @@ -138,7 +138,7 @@ release_n_return: } -int _minictrl_send_event(const char *signal_name, const char *provider_app_id, int event, bundle *signal_arg) +int _minictrl_send_event(const char *signal_name, const char *minicontrol_name, int event, bundle *signal_arg) { DBusConnection *connection = NULL; DBusMessage *message = NULL; @@ -148,7 +148,7 @@ int _minictrl_send_event(const char *signal_name, const char *provider_app_id, i unsigned int serialized_arg_length = 0; int ret = MINICONTROL_ERROR_NONE; - if (provider_app_id == NULL) { + if (minicontrol_name == NULL) { ERR("Invaild parameter"); return MINICONTROL_ERROR_INVALID_PARAMETER; } @@ -182,14 +182,14 @@ int _minictrl_send_event(const char *signal_name, const char *provider_app_id, i } dbus_ret = dbus_message_append_args(message, - DBUS_TYPE_STRING, &provider_app_id, + DBUS_TYPE_STRING, &minicontrol_name, DBUS_TYPE_INT32, &event, DBUS_TYPE_STRING, &serialized_arg, DBUS_TYPE_UINT32, &serialized_arg_length, DBUS_TYPE_INVALID); if (!dbus_ret) { - ERR("fail to append arguments to dbus message : [%s][%d]", provider_app_id, event); + ERR("fail to append arguments to dbus message : [%s][%d]", minicontrol_name, event); ret = MINICONTROL_ERROR_OUT_OF_MEMORY; goto release_n_return; } @@ -197,7 +197,7 @@ int _minictrl_send_event(const char *signal_name, const char *provider_app_id, i dbus_ret = dbus_connection_send(connection, message, NULL); if (!dbus_ret) { - ERR("fail to send dbus message : %s", provider_app_id); + ERR("fail to send dbus message : %s", minicontrol_name); ret = MINICONTROL_ERROR_IPC_FAILURE; goto release_n_return; } diff --git a/src/minicontrol-provider.c b/src/minicontrol-provider.c index 706c721..c444e3d 100755 --- a/src/minicontrol-provider.c +++ b/src/minicontrol-provider.c @@ -85,7 +85,7 @@ static void _sig_to_provider_handler_cb(void *data, DBusMessage *msg) { struct _minicontrol_provider *pd; DBusError err; - char *provider_app_id = NULL; + char *minicontrol_name = NULL; minicontrol_viewer_event_e event; dbus_bool_t dbus_ret; bundle *event_arg_bundle = NULL; @@ -102,7 +102,7 @@ static void _sig_to_provider_handler_cb(void *data, DBusMessage *msg) dbus_error_init(&err); /* Does not allocate any memory. the error only needs to be freed if it is set at some point. */ dbus_ret = dbus_message_get_args(msg, &err, - DBUS_TYPE_STRING, &provider_app_id, + DBUS_TYPE_STRING, &minicontrol_name, DBUS_TYPE_INT32, &event, DBUS_TYPE_STRING, &serialized_arg, DBUS_TYPE_UINT32, &serialized_arg_length, @@ -114,15 +114,26 @@ static void _sig_to_provider_handler_cb(void *data, DBusMessage *msg) return; } - event_arg_bundle = bundle_decode(serialized_arg, serialized_arg_length); + INFO("minicontrol_name[%s] event[%d] pd->name[%s]", minicontrol_name, event, pd->name); - if (event_arg_bundle == NULL) { - ERR("fail to deserialize arguments"); - return; - } + if (minicontrol_name && pd->name && strcmp(minicontrol_name, pd->name) == 0) { + event_arg_bundle = bundle_decode(serialized_arg, serialized_arg_length); + /* event argument can be null */ + + if (event == MINICONTROL_VIEWER_EVENT_SHOW) { + Evas_Coord width; + Evas_Coord height; + evas_object_geometry_get (pd->obj, NULL, NULL, &width, &height); + INFO("width[%d] height[%d]", width, height); + _minictrl_provider_message_send(MINICONTROL_EVENT_RESIZE, pd->name, width, height, 0); + } - if (pd->event_callback) - pd->event_callback(event, event_arg_bundle); + if (pd->event_callback) + pd->event_callback(event, event_arg_bundle); + + if (event_arg_bundle) + bundle_free(event_arg_bundle); + } } @@ -171,6 +182,7 @@ static void _access_changed_cb(void *data, Evas_Object *obj, void *event_info) EXPORT_API Evas_Object* minicontrol_create_window(const char *name, minicontrol_target_viewer_e target_viewer, minicontrol_event_cb event_callback) { + int err_from_elm; Evas_Object *win = NULL; char *name_inter = NULL; struct _minicontrol_provider *pd; @@ -207,8 +219,9 @@ EXPORT_API Evas_Object* minicontrol_create_window(const char *name, minicontrol_ return NULL; } - if (!elm_win_socket_listen(win, name_inter, 0, EINA_TRUE)) { - ERR("Fail to elm win socket listen"); + err_from_elm = elm_win_socket_listen(win, name_inter, 0, EINA_TRUE); + if (!err_from_elm) { + ERR("Fail to elm win socket listen [%d]", err_from_elm); set_last_result(MINICONTROL_ERROR_ELM_FAILURE); evas_object_del(win); free(name_inter); diff --git a/src/minicontrol-viewer.c b/src/minicontrol-viewer.c index 8205108..4d024f4 100755 --- a/src/minicontrol-viewer.c +++ b/src/minicontrol-viewer.c @@ -33,16 +33,16 @@ struct _minicontrol_viewer { static struct _minicontrol_viewer *g_minicontrol_viewer_h = NULL; -EXPORT_API int minicontrol_viewer_send_event(const char *provider_app_id, minicontrol_viewer_event_e event, bundle *event_arg) +EXPORT_API int minicontrol_viewer_send_event(const char *minicontrol_name, minicontrol_viewer_event_e event, bundle *event_arg) { int ret = MINICONTROL_ERROR_NONE; - if (provider_app_id == NULL) { + if (minicontrol_name == NULL) { ERR("appid is NULL, invaild parameter"); return MINICONTROL_ERROR_INVALID_PARAMETER; } - ret = _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, provider_app_id, event, event_arg); + ret = _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, minicontrol_name, event, event_arg); return ret; } @@ -51,7 +51,7 @@ EXPORT_API int minicontrol_viewer_send_event(const char *provider_app_id, minico static void _sig_to_viewer_handler_cb(void *data, DBusMessage *msg) { DBusError err; - char *provider_app_id = NULL; + char *minicontrol_name = NULL; minicontrol_event_e event; dbus_bool_t dbus_ret; bundle *event_arg_bundle = NULL; @@ -61,7 +61,7 @@ static void _sig_to_viewer_handler_cb(void *data, DBusMessage *msg) dbus_error_init(&err); /* Does not allocate any memory. the error only needs to be freed if it is set at some point. */ dbus_ret = dbus_message_get_args(msg, &err, - DBUS_TYPE_STRING, &provider_app_id, + DBUS_TYPE_STRING, &minicontrol_name, DBUS_TYPE_INT32, &event, DBUS_TYPE_STRING, &serialized_arg, DBUS_TYPE_UINT32, &serialized_arg_length, @@ -83,7 +83,7 @@ static void _sig_to_viewer_handler_cb(void *data, DBusMessage *msg) } if (g_minicontrol_viewer_h->callback) - g_minicontrol_viewer_h->callback(event, provider_app_id, event_arg_bundle, g_minicontrol_viewer_h->user_data); + g_minicontrol_viewer_h->callback(event, minicontrol_name, event_arg_bundle, g_minicontrol_viewer_h->user_data); bundle_free(event_arg_bundle); dbus_error_free(&err); @@ -153,25 +153,30 @@ static void _minictrl_plug_server_del(Ecore_Evas *ee) INFO("server - %s is deleted", minicontrol_name); - /* send message to remve plug */ + /* To avoid retrying to free minicontrol_name again, set MINICTRL_PLUG_DATA_KEY as NULL */ + ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, NULL); + + /* send message to remove plug */ _minictrl_provider_message_send(MINICONTROL_EVENT_STOP, minicontrol_name, 0, 0, MINICONTROL_PRIORITY_LOW); _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_INCLUDE); + free(minicontrol_name); } static void _minictrl_plug_del(void *data, Evas *e, Evas_Object *obj, void *event_info) { - Ecore_Evas *ee = NULL; + Ecore_Evas *ee = data; char *minicontrol_name = NULL; - ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj)); if (!ee) return; minicontrol_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY); - if (minicontrol_name) - free(minicontrol_name); - ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, NULL); + if (minicontrol_name) { + /* Sending an event 'MINICONTROL_EVENT_REQUEST_HIDE' should be done by minicontrol viewer manually */ + free(minicontrol_name); + ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, NULL); + } } EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol_name) @@ -207,7 +212,7 @@ EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char * ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, strdup(minicontrol_name)); ecore_evas_callback_delete_request_set(ee, _minictrl_plug_server_del); - evas_object_event_callback_add(plug, EVAS_CALLBACK_DEL, _minictrl_plug_del, plug); + evas_object_event_callback_add(plug, EVAS_CALLBACK_DEL, _minictrl_plug_del, ee); return plug; } @@ -217,14 +222,14 @@ EXPORT_API Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *o return elm_plug_image_object_get(obj); } -EXPORT_API int minicontrol_viewer_request(const char *appid, minicontrol_request_e request, int value) +EXPORT_API int minicontrol_viewer_request(const char *minicontrol_name, minicontrol_request_e request, int value) { int ret = MINICONTROL_ERROR_NONE; minicontrol_viewer_event_e event = 0; bundle *event_arg_bundle = NULL; char bundle_value_buffer[BUNDLE_BUFFER_LENGTH] = { 0, }; - if (appid == NULL) { + if (minicontrol_name == NULL) { ERR("appid is NULL, invaild parameter"); return MINICONTROL_ERROR_INVALID_PARAMETER; } @@ -255,7 +260,7 @@ EXPORT_API int minicontrol_viewer_request(const char *appid, minicontrol_request goto out; } - _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, appid, event, event_arg_bundle); + _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, minicontrol_name, event, event_arg_bundle); out: if (event_arg_bundle) |