From: Szymon Jastrzebski Date: Tue, 8 Jan 2019 09:46:38 +0000 (+0100) Subject: [Content] Replacing deprecated function X-Git-Tag: submit/tizen/20190109.233706^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cfd636e43bb1a1c8278e91f3dd787377f270dc04;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Content] Replacing deprecated function + Function media_info_create_thumbnail has been deprecated since 5.0, media_info_generate_thumbnail is used instead. [Verification] TCT Content 100% Change-Id: Ic79400e6ed2f8c18aa803e1d3f9953d9c82a78c7 --- diff --git a/src/content/content_instance.cc b/src/content/content_instance.cc index 736b8698..bc75361b 100644 --- a/src/content/content_instance.cc +++ b/src/content/content_instance.cc @@ -734,17 +734,37 @@ void ContentInstance::ContentManagerCreateThumbnail(const picojson::value& args, picojson::object& out) { ScopeLogger(); CHECK_PRIVILEGE_ACCESS(kPrivilegeContentWrite, &out); - common::PlatformResult result = common::PlatformResult(common::ErrorCode::NO_ERROR); - - if (ContentManager::getInstance()->isConnected()) { - result = ContentManager::getInstance()->createThumbnail(args); - } else { - result = LogAndCreateResult(common::ErrorCode::UNKNOWN_ERR, "DB Connection is failed."); - } - if (!result) { - LogAndReportError(result, &out, ("Failed to create a thumbnail")); - common::Instance::PostMessage(this, picojson::value(out).serialize().c_str()); + double callback_id = args.get("callbackId").get(); + + if (not ContentManager::getInstance()->isConnected()) { + TaskQueue::GetInstance().Async([this, callback_id]() { + PlatformResult result = + LogAndCreateResult(common::ErrorCode::ABORT_ERR, "DB Connection is not established."); + picojson::value response = picojson::value(picojson::object()); + picojson::object& obj = response.get(); + obj.emplace("callbackId", picojson::value(callback_id)); + LogAndReportError(result, &obj, ("DB Connection is not established.")); + Instance::PostMessage(this, response.serialize().c_str()); + }); + return; } + + const std::string& id = args.get("id").get(); + auto work = [this, id, callback_id]() { + ScopeLogger(); + picojson::value response = picojson::value(picojson::object()); + picojson::object& obj = response.get(); + obj.emplace("callbackId", picojson::value(callback_id)); + auto result = ContentManager::getInstance()->createThumbnail(id, &obj); + if (result) { + ReportSuccess(obj); + } else { + LogAndReportError(result, &obj); + } + Instance::PostMessage(this, response.serialize().c_str()); + }; + TaskQueue::GetInstance().Async(work); + ReportSuccess(out); } void ContentInstance::ContentManagerPlaylistAdd(const picojson::value& args, diff --git a/src/content/content_manager.cc b/src/content/content_manager.cc index bff61831..86e2655d 100644 --- a/src/content/content_manager.cc +++ b/src/content/content_manager.cc @@ -644,38 +644,6 @@ static bool playlist_content_member_cb(int playlist_member_id, media_info_h medi return true; } -void CreateThumbnailCallback(media_content_error_e err, const char* path, void* user_data) { - ScopeLogger(); - - std::unique_ptr callback_data_ptr( - (CreateThumbnailCallbackData*)user_data); - if (0 == callback_data_ptr->callback_id) { - LoggerD("Callback id is 0"); - return; - } - - if (!(ContentManager::getInstance()->getContentInstance())) { - // There is not instance already - LoggerD("There is not instance now"); - return; - } - - picojson::object out; - - out["callbackId"] = picojson::value(callback_data_ptr->callback_id); - - if (MEDIA_CONTENT_ERROR_NONE == err) { - out["result"] = picojson::value(std::string(path)); - ReportSuccess(out); - } else { - PlatformResult result = ContentManager::getInstance()->convertError(err); - LogAndReportError(result, &out, ("Failed to create a thumbnail")); - } - - common::Instance::PostMessage(ContentManager::getInstance()->getContentInstance(), - picojson::value(out).serialize().c_str()); -} - ContentManager::ContentManager() { ScopeLogger("ContentManager called"); if (media_content_connect() == MEDIA_CONTENT_ERROR_NONE) { @@ -1577,27 +1545,35 @@ int ContentManager::getNumberOfTracks(int id, int* result) { return MEDIA_CONTENT_ERROR_NONE; } -common::PlatformResult ContentManager::createThumbnail(const picojson::value& args) { +common::PlatformResult ContentManager::createThumbnail(const std::string& id, + picojson::object* obj) { ScopeLogger(); - std::unique_ptr callback_data_ptr{new CreateThumbnailCallbackData}; - callback_data_ptr->callback_id = args.get("callbackId").get(); - std::string id = args.get("id").get(); - - int ret = media_info_get_media_from_db(id.c_str(), &callback_data_ptr->media); - if (MEDIA_CONTENT_ERROR_NONE != ret && nullptr == callback_data_ptr->media) { - return LogAndCreateResult(ErrorCode::ABORT_ERR, "Getting media is failed.", - ("Getting media is failed: %d (%s)", ret, get_error_message(ret))); + media_info_h media_h = nullptr; + int ret = media_info_get_media_from_db(id.c_str(), &media_h); + if (MEDIA_CONTENT_ERROR_NONE != ret || nullptr == media_h) { + return LogAndCreateResult(ErrorCode::ABORT_ERR, "Getting media failed.", + ("Getting media failed: %d (%s)", ret, get_error_message(ret))); } + SCOPE_EXIT { + media_info_destroy(media_h); + }; - ret = media_info_create_thumbnail(callback_data_ptr->media, CreateThumbnailCallback, - static_cast(callback_data_ptr.get())); - + ret = media_info_generate_thumbnail(media_h); if (MEDIA_CONTENT_ERROR_NONE != ret) { return LogAndCreateResult(ErrorCode::ABORT_ERR, "Creating thumbnail failed.", ("Creating thumbnail failed: %d (%s)", ret, get_error_message(ret))); } - callback_data_ptr.release(); + + char* path = nullptr; + ret = media_info_get_thumbnail_path(media_h, &path); + if (MEDIA_CONTENT_ERROR_NONE != ret) { + return LogAndCreateResult( + ErrorCode::ABORT_ERR, "Creating thumbnail succeeded, but failed to get thumbnail path.", + ("Getting thumbnail path failed: %d (%s)", ret, get_error_message(ret))); + } + obj->emplace("result", picojson::value(path)); + std::unique_ptr(path, free); return PlatformResult(ErrorCode::NO_ERROR); } diff --git a/src/content/content_manager.h b/src/content/content_manager.h index 9f86c960..af8efa76 100644 --- a/src/content/content_manager.h +++ b/src/content/content_manager.h @@ -38,14 +38,6 @@ typedef std::unique_ptr::type, void (*)(me void ContentToJson(media_info_h info, picojson::object& o); void ContentDirToJson(media_folder_h folder, picojson::object& o); -struct CreateThumbnailCallbackData { - double callback_id; - media_info_h media; - ~CreateThumbnailCallbackData() { - media_info_destroy(media); - } -}; - class ContentManager { public: virtual ~ContentManager(); @@ -91,7 +83,7 @@ class ContentManager { // thumbnail int getThumbnailUri(int id, std::string* result); int setThumbnailUri(int id, const std::string& thb_uri); - common::PlatformResult createThumbnail(const picojson::value& args); + common::PlatformResult createThumbnail(const std::string& id, picojson::object* obj); private: // int setContent(media_info_h media, picojson::value content);