From e4fe37276106211dde7365addcd2778beb898dd3 Mon Sep 17 00:00:00 2001 From: Daehyeon Jung Date: Wed, 29 Jun 2016 19:53:27 +0900 Subject: [PATCH] apply widget_instance API changes Change-Id: I433fdbc2bc058826f7a5578a70614b2feaff7a81 Signed-off-by: Daehyeon Jung --- .../internal/widget_view/widget_view_impl.cpp | 59 ++------ widget_viewer_evas/src/widget_viewer_evas.c | 156 +++++++-------------- 2 files changed, 64 insertions(+), 151 deletions(-) diff --git a/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp index 5c7159b..448e8d9 100644 --- a/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp +++ b/widget_viewer_dali/internal/widget_view/widget_view_impl.cpp @@ -100,11 +100,11 @@ WidgetView::~WidgetView() { if( !mWidgetId.empty() && !mInstanceId.empty() ) { - widget_instance_terminate( mWidgetId.c_str(), mInstanceId.c_str() ); + widget_instance_terminate( mInstanceId.c_str() ); if( mPermanentDelete ) { - widget_instance_destroy( mWidgetId.c_str(), mInstanceId.c_str() ); + widget_instance_destroy( mInstanceId.c_str() ); } } @@ -116,7 +116,7 @@ WidgetView::~WidgetView() bool WidgetView::PauseWidget() { - int ret = widget_instance_pause( mWidgetId.c_str(), mInstanceId.c_str() ); + int ret = widget_instance_pause( mInstanceId.c_str() ); if( ret < 0 ) { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::PauseWidget: Fail to pause widget(%s, %s) [%d]\n", mWidgetId.c_str(), mInstanceId.c_str(), ret ); @@ -130,7 +130,7 @@ bool WidgetView::PauseWidget() bool WidgetView::ResumeWidget() { - int ret = widget_instance_resume( mWidgetId.c_str(), mInstanceId.c_str() ); + int ret = widget_instance_resume( mInstanceId.c_str() ); if( ret < 0 ) { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ResumeWidget: Fail to resume widget(%s, %s) [%d]\n", mWidgetId.c_str(), mInstanceId.c_str(), ret ); @@ -155,9 +155,7 @@ const std::string& WidgetView::GetInstanceId() const const std::string& WidgetView::GetContentInfo() { widget_instance_h instance; - bundle* bundle = NULL; - bundle_raw* contentInfo = NULL; - int contentLength = 0; + char* contentInfo = NULL; mContentInfo.clear(); @@ -174,24 +172,12 @@ const std::string& WidgetView::GetContentInfo() return mContentInfo; } - if( widget_instance_get_content( instance, &bundle ) < 0 ) + if( widget_instance_get_content( instance, &contentInfo ) < 0 ) { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: Failed to get content of widget. [%s]\n", mInstanceId.c_str() ); return mContentInfo; } - if( !bundle ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: Cotent of widget [%s] is invalid.\n", mInstanceId.c_str() ); - return mContentInfo; - } - - if( bundle_encode( bundle, &contentInfo, &contentLength ) < 0 ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::GetContentInfo: bundle_encode is failed. [%s]\n", mInstanceId.c_str() ); - return mContentInfo; - } - mContentInfo = reinterpret_cast< char* >( contentInfo ); return mContentInfo; @@ -290,7 +276,7 @@ void WidgetView::ActivateFaultedWidget() } // launch widget again - mPid = widget_instance_launch( mWidgetId.c_str(), mInstanceId.c_str(), mBundle, mWidth, mHeight ); + mPid = widget_instance_launch( mInstanceId.c_str(), (char *)mContentInfo.c_str(), mWidth, mHeight ); if( mPid < 0) { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::ActivateFaultedWidget: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); @@ -453,32 +439,15 @@ void WidgetView::OnInitialize() std::string previewImage; widget_size_type_e sizeType; - if( !mContentInfo.empty() ) + int ret = widget_instance_create( mWidgetId.c_str(), &instanceId ); + if( ret < 0 || !instanceId ) { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: decode bundle\n" ); - - mBundle = bundle_decode( reinterpret_cast< const bundle_raw* >( mContentInfo.c_str() ), mContentInfo.length() ); - if( !mBundle ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: Invalid bundle data.\n" ); - return; - } - - bundle_get_str( mBundle, WIDGET_K_INSTANCE, &instanceId ); + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is failed [%s].\n", mWidgetId.c_str() ); + return; } - if( !instanceId ) - { - int ret = widget_instance_create( mWidgetId.c_str(), &instanceId ); - if( ret < 0 || !instanceId ) - { - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is failed [%s].\n", mWidgetId.c_str() ); - return; - } - - DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is called. [widget id = %s, instance id = %s]\n", - mWidgetId.c_str(), instanceId ); - } + DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_create is called. [widget id = %s, instance id = %s]\n", + mWidgetId.c_str(), instanceId ); mInstanceId = instanceId; @@ -524,7 +493,7 @@ void WidgetView::OnInitialize() mPreviewImage.Add( mStateText ); // launch widget - mPid = widget_instance_launch( mWidgetId.c_str(), instanceId, mBundle, mWidth, mHeight ); + mPid = widget_instance_launch( instanceId, (char *)mContentInfo.c_str(), mWidth, mHeight ); if( mPid < 0) { DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is failed. [%s]\n", mWidgetId.c_str() ); diff --git a/widget_viewer_evas/src/widget_viewer_evas.c b/widget_viewer_evas/src/widget_viewer_evas.c index ff295d6..cd9d640 100644 --- a/widget_viewer_evas/src/widget_viewer_evas.c +++ b/widget_viewer_evas/src/widget_viewer_evas.c @@ -149,7 +149,7 @@ struct widget_info { char *widget_id; char *instance_id; const char *title; - bundle *content_info_bundle; + char *content_info; int pid; double period; @@ -342,6 +342,8 @@ static int instance_event_cb(const char *widget_id, const char *instance_id, int struct widget_info *info; struct widget_evas_event_info event_info; const char *smart_signal; + char *content_info; + widget_instance_h handle; info = g_hash_table_lookup(s_info.widget_table, instance_id); if (!info) { @@ -379,6 +381,23 @@ static int instance_event_cb(const char *widget_id, const char *instance_id, int case WIDGET_INSTANCE_EVENT_EXTRA_UPDATED: event_info.event = WIDGET_EVENT_EXTRA_INFO_UPDATED; smart_signal = WIDGET_SMART_SIGNAL_EXTRA_INFO_UPDATED; + handle = widget_instance_get_instance(info->widget_id, info->instance_id); + if (!handle) { + ErrPrint("instance handle of widget(%s) is invalid data", info->instance_id); + break; + } + + if (widget_instance_get_content(handle, &content_info) < 0) { + ErrPrint("Failed to get content of widget(%s)", info->instance_id); + break; + } + + if (content_info) { + if (info->content_info) + free(info->content_info); + + info->content_info = strdup(content_info); + } break; case WIDGET_INSTANCE_EVENT_FAULT: event_info.event = WIDGET_FAULT_DEACTIVATED; @@ -537,14 +556,13 @@ static void del_cb(void *data, Evas *e, Evas_Object *layout, void *event_info) smart_callback_call(info->layout, WIDGET_SMART_SIGNAL_WIDGET_DELETED, &evas_info); - if (info->widget_id && info->instance_id) { - widget_instance_terminate(info->widget_id, info->instance_id); - info->pid = 0; + if (info->instance_id) { + if (info->permanent_delete) + widget_instance_destroy(info->instance_id); + else + widget_instance_terminate(info->instance_id); } - if (info->permanent_delete) - widget_instance_destroy(info->widget_id, info->instance_id); - evas_object_data_del(layout, WIDGET_INFO_TAG); g_hash_table_remove(s_info.widget_table, info->instance_id); @@ -556,7 +574,7 @@ static void del_cb(void *data, Evas *e, Evas_Object *layout, void *event_info) free(info->widget_id); free(info->instance_id); - bundle_free(info->content_info_bundle); + free(info->content_info); free(info); } @@ -600,7 +618,7 @@ static void resize_cb(void *data, Evas *e, Evas_Object *layout, void *event_info } _compositor_set_handler(info->instance_id, widget_object_cb, NULL); - info->pid = widget_instance_launch(info->widget_id, info->instance_id, info->content_info_bundle, w, h); + info->pid = widget_instance_launch(info->instance_id, info->content_info, w, h); if (info->pid < 0) { struct widget_evas_event_info event_info; ErrPrint("Failed to launch an widget"); @@ -697,9 +715,7 @@ out: EAPI Evas_Object *widget_viewer_evas_add_widget(Evas_Object *parent, const char *widget_id, const char *content_info, double period) { char *instance_id = NULL; - bundle *content_info_bundle = NULL; struct widget_info *widget_instance_info = NULL; - const bundle_raw *bundle_info = NULL; if (!is_widget_feature_enabled()) { set_last_result(WIDGET_ERROR_NOT_SUPPORTED); @@ -725,67 +741,32 @@ EAPI Evas_Object *widget_viewer_evas_add_widget(Evas_Object *parent, const char return NULL; } - if (content_info) { - bundle_info = (bundle_raw *) content_info; - content_info_bundle = bundle_decode(bundle_info, strlen(content_info)); - if (content_info_bundle == NULL) { - set_last_result(WIDGET_ERROR_FAULT); - ErrPrint("Invalid content format: [%s]", content_info); - } + if (widget_instance_create(widget_id, &instance_id) < 0) { + set_last_result(WIDGET_ERROR_FAULT); + return NULL; } - if (content_info_bundle) - bundle_get_str(content_info_bundle, WIDGET_K_INSTANCE, &instance_id); - if (!instance_id) { - if (widget_instance_create(widget_id, &instance_id) < 0) { - set_last_result(WIDGET_ERROR_FAULT); - if (content_info_bundle) - bundle_free(content_info_bundle); - return NULL; - } - - if (!instance_id) { - set_last_result(WIDGET_ERROR_FAULT); - ErrPrint("Failed to get instance_id: %s", widget_id); - if (content_info_bundle) - bundle_free(content_info_bundle); - return NULL; - } + set_last_result(WIDGET_ERROR_FAULT); + ErrPrint("Failed to get instance_id: %s", widget_id); + return NULL; + } - widget_instance_info = create_info(parent, widget_id, instance_id, content_info); - if (!widget_instance_info) { - set_last_result(WIDGET_ERROR_FAULT); - ErrPrint("Unable to create an information object"); - widget_instance_destroy(widget_id, instance_id); - if (content_info_bundle) - bundle_free(content_info_bundle); - return NULL; - } + widget_instance_info = create_info(parent, widget_id, instance_id, content_info); + if (!widget_instance_info) { + set_last_result(WIDGET_ERROR_FAULT); + ErrPrint("Unable to create an information object"); + widget_instance_destroy(instance_id); + return NULL; + } - widget_instance_info->content_info_bundle = content_info_bundle; - widget_instance_info->pid = 0; - widget_instance_info->period = period; + if (content_info) + widget_instance_info->content_info = strdup(content_info); - g_hash_table_insert(s_info.widget_table, instance_id, widget_instance_info); - } else { - widget_instance_info = g_hash_table_lookup(s_info.widget_table, instance_id); - if (!widget_instance_info) { - widget_instance_info = create_info(parent, widget_id, instance_id, content_info); - if (!widget_instance_info) { - set_last_result(WIDGET_ERROR_FAULT); - if (content_info_bundle) - bundle_free(content_info_bundle); - return NULL; - } + widget_instance_info->pid = 0; + widget_instance_info->period = period; - widget_instance_info->content_info_bundle = content_info_bundle; - widget_instance_info->pid = 0; - widget_instance_info->period = period; - - g_hash_table_insert(s_info.widget_table, instance_id, widget_instance_info); - } - } + g_hash_table_insert(s_info.widget_table, widget_instance_info->instance_id, widget_instance_info); /** * @note @@ -845,7 +826,7 @@ EAPI int widget_viewer_evas_pause_widget(Evas_Object *widget) return WIDGET_ERROR_DISABLED; } - ret = widget_instance_pause(info->widget_id, info->instance_id); + ret = widget_instance_pause(info->instance_id); if (ret < 0) { ErrPrint("Fail to pause the widget(%p):(%d)", widget, ret); return ret; @@ -883,7 +864,7 @@ EAPI int widget_viewer_evas_resume_widget(Evas_Object *widget) return WIDGET_ERROR_DISABLED; } - ret = widget_instance_resume(info->widget_id, info->instance_id); + ret = widget_instance_resume(info->instance_id); if (ret < 0) { ErrPrint("Fail to resume the widget(%p):(%d)", widget, ret); return ret; @@ -895,11 +876,6 @@ EAPI int widget_viewer_evas_resume_widget(Evas_Object *widget) EAPI const char *widget_viewer_evas_get_content_info(Evas_Object *widget) { struct widget_info *info; - widget_instance_h handle = NULL; - bundle_raw *content_info = NULL; - int content_len = 0; - bundle *content_info_bundle = NULL; - if (!is_widget_feature_enabled()) { set_last_result(WIDGET_ERROR_NOT_SUPPORTED); @@ -926,39 +902,7 @@ EAPI const char *widget_viewer_evas_get_content_info(Evas_Object *widget) return NULL; } - if (!info->widget_id && !info->instance_id) { - set_last_result(WIDGET_ERROR_INVALID_PARAMETER); - ErrPrint("widget id(%s) or instance id(%s) is invalid data", info->widget_id, info->instance_id); - return NULL; - } - - handle = widget_instance_get_instance(info->widget_id, info->instance_id); - - if (!handle) { - set_last_result(WIDGET_ERROR_INVALID_PARAMETER); - ErrPrint("instance handle of widget(%s) is invalid data", info->instance_id); - return NULL; - } - - if (widget_instance_get_content(handle, &content_info_bundle) < 0) { - set_last_result(WIDGET_ERROR_FAULT); - ErrPrint("Failed to get content of widget(%s)", info->instance_id); - return NULL; - } - - if (content_info_bundle == NULL) { - set_last_result(WIDGET_ERROR_FAULT); - ErrPrint("content of widget(%s) is invalid data", info->instance_id); - return NULL; - } - - if (bundle_encode(content_info_bundle, &content_info, &content_len) < 0) { - set_last_result(WIDGET_ERROR_FAULT); - ErrPrint("Failed to encode (%s)", info->instance_id); - return NULL; - } - - return (const char*)content_info; + return (const char*)info->content_info; } EAPI const char *widget_viewer_evas_get_title_string(Evas_Object *widget) @@ -1297,7 +1241,7 @@ EAPI void widget_viewer_evas_activate_faulted_widget(Evas_Object *widget) elm_object_signal_emit(info->layout, "enable", "text"); } - info->pid = widget_instance_launch(info->widget_id, info->instance_id, info->content_info_bundle, w, h); + info->pid = widget_instance_launch(info->instance_id, info->content_info, w, h); if (info->pid < 0) { ErrPrint("Failed to launch an widget"); event_info.error = info->pid; -- 2.7.4