}
extern "C" EXPORT_API int theme_loader_add_event(theme_loader_h handle,
- theme_loader_changed_cb changed, void* user_data,
- theme_loader_event_h* event_h) {
- if (handle == nullptr || changed == nullptr || event_h == nullptr) {
+ theme_loader_changed_cb changed, void* user_data, char** event_id) {
+ if (handle == nullptr || changed == nullptr || event_id == nullptr) {
LOG(ERROR) << "Invalid parameter";
return THEME_MANAGER_ERROR_INVALID_PARAMETER;
}
std::shared_ptr<ThemeInfoLoader>* p =
static_cast<std::shared_ptr<ThemeInfoLoader>*>(handle);
- std::string* result = new std::string((*p)->AddEvent(std::move(event_handler)));
- *event_h = static_cast<theme_loader_event_h>(result);
+ std::string result = (*p)->AddEvent(std::move(event_handler));
+ *event_id = strdup(result.c_str());
+ if (*event_id == nullptr) {
+ LOG(ERROR) << "Out of memory";
+ return THEME_MANAGER_ERROR_OUT_OF_MEMORY;
+ }
return THEME_MANAGER_ERROR_NONE;
}
extern "C" EXPORT_API int theme_loader_remove_event(theme_loader_h handle,
- theme_loader_event_h event_handle) {
- if (handle == nullptr || event_handle == nullptr) {
+ const char* event_id) {
+ if (handle == nullptr || event_id == nullptr) {
LOG(ERROR) << "Invalid parameter";
return THEME_MANAGER_ERROR_INVALID_PARAMETER;
}
std::shared_ptr<ThemeInfoLoader>* p =
static_cast<std::shared_ptr<ThemeInfoLoader>*>(handle);
- std::string* id = static_cast<std::string*>(event_handle);
- (*p)->RemoveEvent(*id);
- delete id;
+ std::string id(event_id);
+ (*p)->RemoveEvent(id);
return THEME_MANAGER_ERROR_NONE;
}
typedef void *theme_loader_h;
/**
- * @brief The theme loader event handle.
- * @since_tizen 6.0
- */
-typedef void *theme_loader_event_h;
-
-/**
* @brief Creates the theme laoder handle.
* @since_tizen 6.0
* @remarks You must release @handle id using theme_loader_destroy().
/**
* @brief Registers a callback function to be invoked when the theme is being changed.
* @since_tizen 6.0
- * @param[in] handle The theme loader handle
- * @param[in] changed The callback function to be registered for theme changed event
- * @param[in] user_data The user data to be passed to the callback function
- * @param[out] event_h The theme event handle
+ * @remarks If you no longer use @event_id, you must release it using free().
+ * @param[in] handle The theme loader handle
+ * @param[in] changed The callback function to be registered for theme changed event
+ * @param[in] user_data The user data to be passed to the callback function
+ * @param[out] event_id The theme event id
* @return @c 0 on success,
* otherwise a negative error value
* @retval #THEME_MANAGER_ERROR_NONE Successful
* @see theme_loader_remove_event()
*/
int theme_loader_add_event(theme_loader_h handle,
- theme_loader_changed_cb changed, void *user_data,
- theme_loader_event_h* event_h);
+ theme_loader_changed_cb changed, void *user_data, char** event_id);
/**
* @brief Unregisters a callback function.
* @since_tizen 6.0
- * @param[in] handle The theme loader handle
- * @param[in] event_handle The theme event handle
+ * @param[in] handle The theme loader handle
+ * @param[in] event_id The theme event id
* @return @c 0 on success,
* otherwise a negative error value
* @retval #THEME_MANAGER_ERROR_NONE Successful
* @retval #THEME_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
* @see theme_loader_add_event()
*/
-int theme_loader_remove_event(theme_loader_h handle,
- theme_loader_event_h event_handle);
+int theme_loader_remove_event(theme_loader_h handle, const char* event_id);
/**
* @brief Loads current theme information.
}
theme_loader_h loader_handle_;
- theme_loader_event_h event_handle_;
};
TEST_F(ThemeLoaderTest, Create) {
EXPECT_EQ(ret, THEME_MANAGER_ERROR_INVALID_PARAMETER);
}
-TEST_F(ThemeLoaderTest, AddEvent) {
- theme_loader_event_h event_handle;
+TEST_F(ThemeLoaderTest, AddRemoveEvent) {
int ret;
+ char* event_id;
ret = theme_loader_add_event(loader_handle_, changed_cb,
- nullptr, &event_handle);
+ nullptr, &event_id);
EXPECT_EQ(ret, THEME_MANAGER_ERROR_NONE);
- EXPECT_NE(event_handle, nullptr);
- event_handle_ = event_handle;
+ ret = theme_loader_remove_event(loader_handle_, event_id);
+ EXPECT_EQ(ret, THEME_MANAGER_ERROR_NONE);
+
+ if (event_id)
+ free(event_id);
}
TEST_F(ThemeLoaderTest, AddEvent_N) {
- theme_loader_event_h event_handle;
+ char* event_id;
int ret;
ret = theme_loader_add_event(loader_handle_, nullptr,
- nullptr, &event_handle);
+ nullptr, &event_id);
EXPECT_EQ(ret, THEME_MANAGER_ERROR_INVALID_PARAMETER);
}
-TEST_F(ThemeLoaderTest, RemoveEvent) {
- int ret;
-
- ret = theme_loader_remove_event(loader_handle_, event_handle_);
- EXPECT_EQ(ret, THEME_MANAGER_ERROR_NONE);
-}
-
TEST_F(ThemeLoaderTest, RemoveEvent_N) {
- int ret = theme_loader_remove_event(nullptr, event_handle_);
+ int ret = theme_loader_remove_event(nullptr, nullptr);
EXPECT_EQ(ret, THEME_MANAGER_ERROR_INVALID_PARAMETER);
}