Replace implementations of livebox with dynamicbox
authorSung-jae Park <nicesj.park@samsung.com>
Fri, 5 Sep 2014 06:23:44 +0000 (15:23 +0900)
committerSung-jae Park <nicesj.park@samsung.com>
Fri, 5 Sep 2014 08:10:53 +0000 (17:10 +0900)
[model] Redwood,Kiran,B3(Wearable)
[binary_type] AP
[customer] Docomo/Orange/ATT/Open
[issue#] N/A
[problem]
[cause]
[solution]
[team] HomeTF
[request]
[horizontal_expansion]

Change-Id: I96e19af64f775ab656b8065cbdfea4169920bfaa

CMakeLists.txt
include/dynamicbox.h
include/livebox.h [deleted file]
include/livebox_product.h [deleted file]
packaging/libdynamicbox.spec
src/dynamicbox.c
src/livebox.c [deleted file]
src/snapshot_window.c
src/virtual_window.c
src/virtual_window_wayland.c

index fffb1f7..565fdc9 100644 (file)
@@ -17,7 +17,7 @@ INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED
        dlog
        dynamicbox_service
-       provider
+       dynamicbox_provider
        evas
        ecore
        elementary
@@ -62,7 +62,6 @@ ADD_DEFINITIONS("-DSLAVE_PKGNAME=\"com.samsung.data-provider-slave\"")
 SET (BUILD_SOURCE
        ${BUILD_SOURCE}
        src/dlist.c
-       src/livebox.c
        src/util.c
        src/dynamicbox.c
 )
index 768e9c5..6c21dce 100644 (file)
@@ -21,8 +21,6 @@
 extern "C" {
 #endif
 
-#include <Evas.h>
-
 /**
  * @file dynamicbox.h
  * @brief This file declares API of libdynamicbox library
@@ -257,18 +255,18 @@ extern int dynamicbox_desc_add_block(struct dynamicbox_desc *handle, const char
 extern int dynamicbox_desc_del_block(struct dynamicbox_desc *handle, int idx);
 
 /**
- * @brief Creates an Evas_Object to create an elm_win object.
- * @details Creating a new Evas_Object using Dynamic Box frame buffer.
+ * @brief Creates an Object to create an elm_win object.
+ * @details Creating a new Object using Dynamic Box frame buffer.
  * @since_tizen 2.3
  * @param[in] id Instance Id
  * @param[in] gbar 1 if this object is created for Glance Bar or 0 (for Dynamic Box)
  * @privlevel public
  * @privilege %http://tizen.org/privilege/core/dynamicbox.provider
- * @return Evas_Object* Evas Object type
+ * @return void* Object type
  * @retval Address Valid evas object
  * @retval @c NULL failed to create
  */
-extern Evas_Object *dynamicbox_get_evas_object(const char *id, int gbar);
+extern void *dynamicbox_get_evas_object(const char *id, int gbar);
 
 /**
  * @brief Set extra information for updated content.
@@ -424,8 +422,8 @@ extern const int DBOX_SYS_EVENT_DELETED;
  * @brief Structure for extra event information for dynamicbox_content_event interface function.
  * @since_tizen 2.3
  */
-#if !defined(__SCRIPT_EVENT_INFO)
-#define __SCRIPT_EVENT_INFO
+#if !defined(__DBOX_SCRIPT_EVENT_INFO)
+#define __DBOX_SCRIPT_EVENT_INFO
 
 /**
  * @internal
@@ -433,7 +431,7 @@ extern const int DBOX_SYS_EVENT_DELETED;
  * Text signal & Content event uses this data structure.
  * @since_tizen 2.3
  */
-struct event_info {
+struct dynamicbox_event_info {
         struct _pointer {
                 double x; /**< X value of current mouse(touch) position */
                 double y; /**< Y value of current mouse(touch) position */
@@ -468,19 +466,6 @@ extern int dynamicbox_content_is_updated(const char *id, int gbar);
 
 /**
  * @internal
- * @brief Replaces "\n" (new line character) with &lt;br&gt; tag.
- * @details This utility function is used to replace all NEW LINE CHARACTER ("\n") with &lt;br&gt; tag.
- * @since_tizen 2.3
- * @param[in] str Source string
- * @return char * type
- * @retval string Allocted in the heap
- * @retval @c NULL If it fails to replace string
- * @post Returned string must has to be free'd by user manually.
- */
-extern char *dynamicbox_util_nl2br(const char *str);
-
-/**
- * @internal
  * @brief Interfaces for direct buffer management (Available only for the GBar area).
  * @since_tizen 2.3
  */
@@ -490,7 +475,7 @@ extern char *dynamicbox_util_nl2br(const char *str);
  * @brief Enumeration for value should be sync'd with provider.
  * @since_tizen 2.3
  */
-enum dbox_buffer_event {
+enum dynamicbox_buffer_event {
        DBOX_BUFFER_EVENT_ENTER, /**< Mouse cursor enter */
        DBOX_BUFFER_EVENT_LEAVE, /**< Mouse cursor leave */
        DBOX_BUFFER_EVENT_DOWN, /**< Mouse down */
@@ -502,16 +487,16 @@ enum dbox_buffer_event {
        DBOX_BUFFER_EVENT_KEY_FOCUS_IN, /**< Key focus in */
        DBOX_BUFFER_EVENT_KEY_FOCUS_OUT, /**< Key focus out */
 
-       DBOX_BUFFER_EVENT_HIGHLIGHT, /**< Accessibility - Highlight */
-       DBOX_BUFFER_EVENT_HIGHLIGHT_NEXT, /**< Accessibility - Move highlight to next */
-       DBOX_BUFFER_EVENT_HIGHLIGHT_PREV, /**< Accessibility - Move highlight to prev */
-       DBOX_BUFFER_EVENT_ACTIVATE, /**< Accessibility - Activate the highlighted object */
-       DBOX_BUFFER_EVENT_ACTION_UP, /**< Accessibility - Make UP action */
-       DBOX_BUFFER_EVENT_ACTION_DOWN, /**< Accessibility - Make Down action */
-       DBOX_BUFFER_EVENT_SCROLL_UP, /**< Accessibility - Scroll up */
-       DBOX_BUFFER_EVENT_SCROLL_MOVE, /**< Accessibility - Scroll move */
-       DBOX_BUFFER_EVENT_SCROLL_DOWN, /**< Accessibility - Scroll down */
-       DBOX_BUFFER_EVENT_UNHIGHLIGHT, /**< Accessibility - Remove highlight */
+       DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT, /**< Accessibility - Highlight */
+       DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_NEXT, /**< Accessibility - Move highlight to next */
+       DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_PREV, /**< Accessibility - Move highlight to prev */
+       DBOX_BUFFER_EVENT_ACCESS_ACTIVATE, /**< Accessibility - Activate the highlighted object */
+       DBOX_BUFFER_EVENT_ACCESS_ACTION_UP, /**< Accessibility - Make UP action */
+       DBOX_BUFFER_EVENT_ACCESS_ACTION_DOWN, /**< Accessibility - Make Down action */
+       DBOX_BUFFER_EVENT_ACCESS_SCROLL_UP, /**< Accessibility - Scroll up */
+       DBOX_BUFFER_EVENT_ACCESS_SCROLL_MOVE, /**< Accessibility - Scroll move */
+       DBOX_BUFFER_EVENT_ACCESS_SCROLL_DOWN, /**< Accessibility - Scroll down */
+       DBOX_BUFFER_EVENT_ACCESS_UNHIGHLIGHT, /**< Accessibility - Remove highlight */
 
        DBOX_BUFFER_EVENT_ON_HOLD,      /**< To prevent from generating mouse clicked event */
        DBOX_BUFFER_EVENT_OFF_HOLD,     /**< Stopped holding. */
@@ -532,8 +517,8 @@ enum dbox_buffer_event {
  * @brief Event info
  * @since_tizen 2.3
  */
-struct dbox_buffer_event_data {
-       enum dbox_buffer_event type; /**< Mouse, Keyboard, Accessibility event type */
+struct dynamicbox_buffer_event_data {
+       enum dynamicbox_buffer_event type; /**< Mouse, Keyboard, Accessibility event type */
        double timestamp; /**< Timestamp of events */
 
        union _input_data {
@@ -576,7 +561,7 @@ struct dbox_buffer_event_data {
  * @post Allocated buffer object must be released via dynamicbox_release_buffer().
  * @see dynamicbox_release_buffer()
  */
-extern struct dynamicbox_buffer *dynamicbox_acquire_buffer(const char *id, int gbar, int width, int height, int pixels, int auto_align, int (*handler)(struct dynamicbox_buffer *, struct dbox_buffer_event_data *, void *), void *data);
+extern struct dynamicbox_buffer *dynamicbox_acquire_buffer(const char *id, int gbar, int width, int height, int pixels, int auto_align, int (*handler)(struct dynamicbox_buffer *, struct dynamicbox_buffer_event_data *, void *), void *data);
 
 /**
  * @internal
diff --git a/include/livebox.h b/include/livebox.h
deleted file mode 100644 (file)
index f8686d4..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright 2013  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __LIVEBOX_HELPER_H
-#define __LIVEBOX_HELPER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <Evas.h>
-
-/**
- * @file livebox.h
- * @brief This file declares API of liblivebox library
- */
-
-/**
- * @addtogroup CAPI_LIVEBOX_HELPER_MODULE
- * @{
- */
-
-/**
- * @brief Definition for COLOR BLOCK.
- */
-#define LB_DESC_TYPE_COLOR "color"
-
-/**
- * @brief Definition for TEXT BLOCK.
- */
-#define LB_DESC_TYPE_TEXT "text"
-
-/**
- * @brief Definition for IMAGE BLOCK.
- */
-#define LB_DESC_TYPE_IMAGE "image"
-
-/**
- * @brief Definition for SIGNAL BLOCK.
- */
-#define LB_DESC_TYPE_SIGNAL "signal"
-
-/**
- * @brief Definition for INFO BLOCK.
- */
-#define LB_DESC_TYPE_INFO "info"
-
-/**
- * @brief Definition for DRAG BLOCK.
- */
-#define LB_DESC_TYPE_DRAG "drag"
-
-/**
- * @brief Definition for SCRIPT SCRIPT.
- */
-#define LB_DESC_TYPE_SCRIPT "script"
-
-/**
- * @brief Definition for ACCESSIBILITY INFORMATION BLOCK.
- */
-#define LB_DESC_TYPE_ACCESS "access"
-
-/**
- * @brief Definition for accessibility operation.
- */
-#define LB_DESC_TYPE_ACCESS_OPERATION  "access,operation"
-
-/**
- * @brief Definition for set highlight on specified part.
- */
-#define LB_DESC_DATA_ACCESS_OPERATION_HL_SET "set,hl"
-
-/**
- * @brief Definition for remove highlight from specified part.
- */
-#define LB_DESC_DATA_ACCESS_OPERATION_HL_UNSET "unset,hl"
-
-/**
- * @brief Definition for move the highlight to next part.
- */
-#define LB_DESC_DATA_ACCESS_OPERATION_HL_NEXT "next,hl"
-
-/**
- * @brief Definition for move the highlight to previous part.
- */
-#define LB_DESC_DATA_ACCESS_OPERATION_HL_PREV "prev,hl"
-
-/**
- * @brief Definition for reset the chain of accessibility highlight list.
- */
-#define LB_DESC_DATA_ACCESS_OPERATION_RESET "reset,focus"
-
-/**
- * @brief Definition for specify the highlight move option.
- * @details If the highlight list reaches to the last object, move back to the first object.
- */
-#define LB_DESC_OPTION_ACCESS_HL_LOOP "cycle"
-
-/**
- * @brief Definition for specify the highlight move option.
- * @details If the highlight list reaches to the last object(or the first object),
- * the "prev,hl", "next,hl" will be failed.
- */
-#define LB_DESC_OPTION_ACCESS_HL_NOLOOP "no,cycle"
-
-/**
- * @brief Livebox description data handle.
- */
-struct livebox_desc;
-
-/**
- * @brief Updates a description file.
- * @remarks Must be used only by Inhouse livebox.
- * @param[in] filename
- * @param[in] for_pd
- * @privlevel public
- * @privilege %http://tizen.org/privilege/core/dynamicbox.provider
- * @return Handle of desc instance
- * @pre Should be loaded by data-provider-slave.
- * @post Should be destroyed(flushed) using livebox_desc_close() API.
- * @see livebox_desc_close()
- */
-extern struct livebox_desc *livebox_desc_open(const char *filename, int for_pd);
-
-/**
- * @brief Completes the description file update.
- * @details Only if this API is called, the description data will be applied to the content of livebox (or PD).
- * @remarks Must be used only by Inhouse livebox.
- * @param[in] handle Handle which is created by livebox_desc_open() function
- * @privlevel public
- * @privilege %http://tizen.org/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_SUCCESS If the flushing description data is successfully done
- * @retval #LB_STATUS_ERROR_INVALID If the given handle is not valid
- * @pre Handle must be created by livebox_desc_open()
- * @post Handle must not be used after return from this function.
- * @see livebox_desc_open()
- */
-extern int livebox_desc_close(struct livebox_desc *handle);
-
-/**
- * @brief Sets the category information of current description data.
- * @details Creates a new description block for updating category information of layout object.
- * @param[in] handle Handle which is created by livebox_desc_open() function
- * @param[in] id Id string of target object
- * @param[in] category Category string that will be used by layout object
- * @privlevel N/P
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid handle
- * @retval #LB_STATUS_ERROR_MEMORY Memory is not enough to add this block
- * @retval index Index(>=0) of added block, which can be used by livebox_desc_set_id()
- * @pre Must be called after create a handle using livebox_desc_open()
- * @see livebox_desc_set_id()
- */
-extern int livebox_desc_set_category(struct livebox_desc *handle, const char *id, const char *category);
-
-/**
- * @brief Sets the content size.
- * @details Sets the content size of layout.
- * @param[in] handle Handle which is created by livebox_desc_open() function
- * @param[in] id Id string of target object
- * @param[in] w Width in pixel
- * @param[in] h Height in pixel
- * @privlevel N/P
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_ERROR_MEMORY Not enough memory to add a new block
- * @retval index Index(>=0) of added block Successfully added
- * @see livebox_desc_open()
- * @see livebox_desc_set_id()
- */
-extern int livebox_desc_set_size(struct livebox_desc *handle, const char *id, int w, int h);
-
-/**
- * @brief Sets the target id of the given block.
- * @details Only available for the script block.
- * @param[in] handle Handle which is created by livebox_desc_open() function
- * @param[in] idx Index of target block
- * @param[in] id Id String which will be used by other livebox_desc_XXX functions
- * @privlevel N/P
- * @return int type
- * @retval #LB_STATUS_SUCCESS Id is successfully updated for given idx of desc block
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_ERROR_NOT_EXIST Given index of desc block is not exists
- * @pre Desc block should be exists which has given index "idx".
- * @post Specified Id string("id") can be used by other livebox_desc_XXXX functions.
- * @see livebox_desc_open()
- * @see livebox_desc_set_id()
- */
-extern int livebox_desc_set_id(struct livebox_desc *handle, int idx, const char *id);
-
-/**
- * @brief Adds a new block.
- * @param[in] handle Handle which is created by the livebox_desc_open() function
- * @param[in] id ID of source script object
- * @param[in] type Type (image|text|script|signal|.. etc)
- * @param[in] part Target part to update with given content(data)
- * @param[in] data Content for specified part
- * @param[in] option Option for the block. (script: group, image: option, ...)
- * @privlevel N/P
- * @return Index of current description block
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_ERROR_MEMORY Not enough memory to add a new desc block
- * @retval index Index(>=0) of added desc block
- * @pre Handle must be created using livebox_desc_open.
- * @see livebox_desc_set_id()
- * @see livebox_desc_del_block()
- */
-extern int livebox_desc_add_block(struct livebox_desc *handle, const char *id, const char *type, const char *part, const char *data, const char *option);
-
-/**
- * @brief Deletes an added block.
- * @details If you discard the added desc block, use this API and the index of the created desc block.
- * @param[in] handle Handle which is created by livebox_desc_open() function
- * @param[in] idx Index of added block, returned from livebox_desc_add_block(), livebox_desc_set_size(), livebox_desc_set_category(), etc
- * @privlevel N/P
- * @return int type
- * @retval #LB_STATUS_SUCCESS Successfully deleted
- * @retval #LB_STATUS_ERROR_NOT_EXIST Given index of desc block is not exists
- * @pre Index must be exists.
- * @see livebox_desc_add_block()
- * @see livebox_desc_open()
- */
-extern int livebox_desc_del_block(struct livebox_desc *handle, int idx);
-
-/**
- * @brief Creates an Evas_Object to create an elm_win object.
- * @details Creating a new Evas_Object using livebox frame buffer.
- * @param[in] id Instance Id
- * @param[in] is_pd 1 if this object is created for PD or 0 (for LB)
- * @privlevel public
- * @privilege %http://tizen.org/privilege/core/dynamicbox.provider
- * @return Evas_Object* Evas Object type
- * @retval Address Valid evas object
- * @retval @c NULL failed to create
- */
-extern Evas_Object *livebox_get_evas_object(const char *id, int is_pd);
-
-/**
- * @brief Set extra information for updated content.
- * @details
- *      If the provider should give some hints to the viewer,
- *      such as title, icon and name, this function can set them.
- *      provider will send those information to the viewer when the
- *      content is updated.
- * @remarks This function only works with the buffer type inhouse provider.
- * @param[in] id Livebox Instance Id
- * @param[in] content Content string that will pass to a livebox via livebox_create interface when it is re-created.
- * @param[in] title Human readable text for accessitility, summarized text for representing the content of a box.
- * @param[in] icon Path of icon image file - alternative image content
- * @param[in] name Name of a box - alternative text content
- * @privlevel N/P
- * @return int type
- * @retval #LB_STATUS_ERROR_MEMORY Out of memory
- * @retval #LB_STATUS_ERROR_INVALID Invalid parameters
- * @retval #LB_STATUS_ERROR_FAULT Unrecoverable error
- * @retval #LB_STATUS_SUCCESS Successfully sent
- */
-extern int livebox_set_extra_info(const char *id, const char *content, const char *title, const char *icon, const char *name);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* End of a file */
diff --git a/include/livebox_product.h b/include/livebox_product.h
deleted file mode 100644 (file)
index 3df2eac..0000000
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * Copyright 2013  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __LIVEBOX_HELPER_PRODUCT_H
-#define __LIVEBOX_HELPER_PRODUCT_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @file livebox_product.h
- * @brief This file declares API of liblivebox library for product
- */
-
-/**
- * @addtogroup CAPI_LIVEBOX_HELPER_PRODUCT_MODULE
- * @{
- */
-
-/**
- * @brief Structure for a livebox buffer defined by a provider.
- */
-struct livebox_buffer;
-
-extern const int DONE; /**<Return values of livebox programming interfaces: Operation is successfully done.*/
-
-extern const int OUTPUT_UPDATED; /**<Return values of livebox programming interfaces: Contents are updated.*/
-
-extern const int NEED_TO_SCHEDULE; /**<Return values of livebox programming interfaces: Need to call the livebox_need_to_update and livebox_update_content.*/
-
-extern const int FORCE_TO_SCHEDULE; /**<Return values of livebox programming interfaces: Need to do force update.*/
-
-extern const int NEED_TO_CREATE; /**<Return values of livebox programming interfaces: Need to create a new instance.*/
-
-extern const int NEED_TO_DESTROY; /**<Return values of livebox programming interfaces: Need to destroy this instance.*/
-
-extern const int NEED_TO_UPDATE; /**<Return values of livebox programming interfaces: Need to update.*/
-
-extern const int USE_NET; /**<Return values of livebox programming interfaces: Using network.*/
-
-extern const int LB_SYS_EVENT_FONT_CHANGED; /**<System event type: System font is changed.*/
-
-extern const int LB_SYS_EVENT_LANG_CHANGED; /**<System event type: System language is changed.*/
-
-extern const int LB_SYS_EVENT_TIME_CHANGED; /**<System event type: System time is changed.*/
-
-extern const int LB_SYS_EVENT_REGION_CHANGED; /**<System event type: Region changed. */
-
-extern const int LB_SYS_EVENT_TTS_CHANGED; /**< System event type: Accessibility changed. */
-
-extern const int LB_SYS_EVENT_PAUSED; /**<System event type: Livebox is paused.*/
-
-extern const int LB_SYS_EVENT_RESUMED; /**<System event type: Livebox is resumed.*/
-
-extern const int LB_SYS_EVENT_MMC_STATUS_CHANGED; /**<System event type: MMC Status change event.*/
-
-extern const int LB_SYS_EVENT_DELETED;/**<System event type: Livebox instance is removed from a viewer.*/
-
-/**
- * @brief Structure for extra event information for livebox_content_event interface function.
- */
-#if !defined(__SCRIPT_EVENT_INFO)
-#define __SCRIPT_EVENT_INFO
-/**
- * @brief
- * Text signal & Content event uses this data structure.
- */
-struct event_info {
-        struct pointer {
-                double x; /**< X value of current mouse(touch) position */
-                double y; /**< Y value of current mouse(touch) position */
-                int down; /**< Is it pressed(1) or not(0) */
-        } pointer;
-
-        struct part {
-                double sx; /**< Pressed object's left top X */
-                double sy; /**< Pressed object's left top Y */
-                double ex; /**< Pressed object's right bottom X */
-                double ey; /**< Pressed object's right bottom Y */
-        } part;
-};
-#endif
-
-/**
- * @brief Notifies the updated content to the provider.
- * @details Forcedly notifies the updated contents.
- *    This function can be used from async callback function to notify the updated content.
- * @param[in] id Instance Id which is passed to you via the first parameter of every livebox_XXXX interface functions
- * @param[in] is_pd 1 for updating content of PD or 0(for content of LB)
- * @privlevel N/P
- * @return int type
- * @retval #LB_STATUS_ERROR_MEMORY Not enough memory
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_ERROR_IO I/O failed, Cannot access given resource file(id)
- * @retval #LB_STATUS_SUCCESS Successfully notified
- * @pre This API only can be used after loaded into the data-provider-slave process.
- */
-extern int livebox_content_is_updated(const char *id, int is_pd);
-
-/**
- * @brief Replaces "\n" (new line character) with &lt;br&gt; tag.
- * @details This utility function is used to replace all NEW LINE CHARACTER ("\n") with &lt;br&gt; tag.
- * @param[in] str Source string
- * @privlevel N/P
- * @return char * type
- * @retval string Allocted in the heap
- * @retval @c NULL If it fails to replace string
- * @post Returned string must has to be free'd by user manually.
- */
-extern char *livebox_util_nl2br(const char *str);
-
-/*
- * Interfaces for direct buffer management (Available only for the PD area).
- */
-#ifndef __PROVIDER_BUFFER_H
-/**
- * @brief Enumeration for value should be sync'd with provider.
- */
-enum buffer_event {
-       BUFFER_EVENT_ENTER, /**< Mouse cursor enter */
-       BUFFER_EVENT_LEAVE, /**< Mouse cursor leave */
-       BUFFER_EVENT_DOWN, /**< Mouse down */
-       BUFFER_EVENT_MOVE, /**< Mouse move */
-       BUFFER_EVENT_UP, /**< Mouse up */
-
-       BUFFER_EVENT_KEY_DOWN, /**< Key down */
-       BUFFER_EVENT_KEY_UP, /**< Key up */
-       BUFFER_EVENT_KEY_FOCUS_IN, /**< Key focus in */
-       BUFFER_EVENT_KEY_FOCUS_OUT, /**< Key focus out */
-
-       BUFFER_EVENT_HIGHLIGHT, /**< Accessibility - Highlight */
-       BUFFER_EVENT_HIGHLIGHT_NEXT, /**< Accessibility - Move highlight to next */
-       BUFFER_EVENT_HIGHLIGHT_PREV, /**< Accessibility - Move highlight to prev */
-       BUFFER_EVENT_ACTIVATE, /**< Accessibility - Activate the highlighted object */
-       BUFFER_EVENT_ACTION_UP, /**< Accessibility - Make UP action */
-       BUFFER_EVENT_ACTION_DOWN, /**< Accessibility - Make Down action */
-       BUFFER_EVENT_SCROLL_UP, /**< Accessibility - Scroll up */
-       BUFFER_EVENT_SCROLL_MOVE, /**< Accessibility - Scroll move */
-       BUFFER_EVENT_SCROLL_DOWN, /**< Accessibility - Scroll down */
-       BUFFER_EVENT_UNHIGHLIGHT, /**< Accessibility - Remove highlight */
-
-       BUFFER_EVENT_ON_HOLD,   /**< To prevent from generating mouse clicked event */
-       BUFFER_EVENT_OFF_HOLD,  /**< Stopped holding. */
-       BUFFER_EVENT_ON_SCROLL, /**< On scrolling */
-       BUFFER_EVENT_OFF_SCROLL, /**< Scrolling stopped */
-
-       /* Accessibility event */
-       BUFFER_EVENT_VALUE_CHANGE,
-       BUFFER_EVENT_MOUSE,
-       BUFFER_EVENT_BACK,
-       BUFFER_EVENT_OVER,
-       BUFFER_EVENT_READ,
-       BUFFER_EVENT_ENABLE,
-       BUFFER_EVENT_DISABLE
-};
-
-struct buffer_event_data {
-       enum buffer_event type; /**< Mouse, Keyboard, Accessibility event type */
-       double timestamp; /**< Timestamp of events */
-
-       union input_data {
-               struct mouse {
-                       int x; /**< If the event type is for accessibility or mouse, coordinates of X for pointer */
-                       int y; /**< If the event type is for accessibility or mouse, coordinates of Y for pointer */
-               } pointer;
-
-               struct access {
-                       int x;
-                       int y;
-                       unsigned int mouse_type;
-                       unsigned int action_type;
-                       unsigned int action_by;
-                       int cycle;
-               } access;
-
-               unsigned int keycode; /**< If the event type is for keyboard, the value of keycode */
-       } info;
-};
-#endif
-
-/**
- * @brief Acquires a buffer for PD or LB, currently only the PD is supported.
- * @param[in] id Instance Id which is passed to you via the first parameter of every livebox_XXXX interface functions
- * @param[in] is_pd 1 for PD or 0 for livebox
- * @param[in] width Width in pixel
- * @param[in] height Height in pixel
- * @param[in] pixels Size of a pixel in bytes
- * @param[in] handler Event handling callback
- * @param[in] data User data for event handling callback
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return Buffer handle
- * @retval @c NULL Failed to acquire buffer
- * @retval handler Handle object
- * @pre Given instance must be specify its type as buffer. or this API will be fail.
- * @post Allocated buffer object must be released via livebox_release_buffer().
- * @see livebox_acquire_buffer()
- */
-extern struct livebox_buffer *livebox_acquire_buffer(const char *id, int is_pd, int width, int height, int pixels, int auto_align, int (*handler)(struct livebox_buffer *, struct buffer_event_data *, void *), void *data);
-
-/**
- * @brief Acquires the ID of pixmap resource.
- * @details Only if the provider uses pixmap for providing render buffer.
- * @remarks Pixmap Id can be destroyed if you call the livebox_release_buffer(). Then this pixmap Id is not guaranteed to use.
- * @param[in] handle Buffer handle
- * @privlevel N/P
- * @return unsigned log type
- * @retval positive Pixmap Id
- * @retval 0 Failed to get pixmap Id
- * @pre The system must be set to use the pixmap method for content sharing.
- * @see livebox_acquire_buffer()
- */
-extern unsigned long livebox_pixmap_id(struct livebox_buffer *handle);
-
-/**
- * @brief Releases the buffer of livebox.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_SUCCESS Successfully released
- * @pre Handle must be created using livebox_acquire_buffer().
- * @see livebox_acquire_buffer()
- */
-extern int livebox_release_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Gets the address of S/W render buffer.
- * @details If you try to use this, after livebox_create_hw_buffer(), you will get @c NULL.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return void* address of the render buffer
- * @retval @c NULL If it falis to get buffer address
- * @retval address If it succeed to get the buffer address
- * @see livebox_unref_buffer()
- */
-extern void *livebox_ref_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Releases the S/W render buffer.
- * @param[in] buffer Address of render buffer
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid handle
- * @retval #LB_STATUS_SUCCESS Successfully unreference
- * @pre livebox_ref_buffer() must be called.
- * @see livebox_ref_buffer()
- */
-extern int livebox_unref_buffer(void *buffer);
-
-/**
- * @brief Synchronizes the updated buffer.
- * @details This is only needed for non-H/W accelerated buffer.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_SUCCESS Successfully sync'd
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @see livebox_acquire_buffer()
- */
-extern int livebox_sync_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Requests to schedule the update operation to a provider.
- * @param[in] id Instance Id which is passed to you via the first parameter of every livebox_XXXX interface functions
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return If succes returns 0 or return less than 0
- * @retval #LB_STATUS_SUCCESS Successfully triggered
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_ERROR_MEMORY Not enough memory
- * @retval #LB_STATUS_ERROR_NOT_EXIST Given id instance is not exist
- */
-extern int livebox_request_update(const char *id);
-
-/**
- * @brief Checks whether the livebox supports H/W acceleration or not.
- * @param[in] handle Buffer handle
- * @privlevel N/P
- * @return int type
- * @retval 1 If the buffer handle support the H/W acceleration buffer
- * @retval 0 If it doesn not supported
- * @see livebox_acquire_buffer()
- */
-extern int livebox_support_hw_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Creates the H/W accelerated buffer.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_ALREADY H/W buffer is already created
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @retval #LB_STATUS_SUCCESS Successfully created
- * @pre Must be checked whether the H/W buffer is supported or not.
- * @post Must be destroyed if it is not necessary.
- * @see livebox_support_hw_buffer()
- */
-extern int livebox_create_hw_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Destroys the H/W accelerated buffer.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_SUCCESS Successfully destroyed
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @pre Must be created h/w buffer using livebox_create_hw_buffer.
- * @see livebox_create_hw_buffer()
- */
-extern int livebox_destroy_hw_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Gets the address of the accelerated H/W buffer.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return void* type
- * @retval @c NULL Failed to get H/W accelerated buffer address
- * @retval addr H/W accelerated buffer address
- * @see livebox_create_hw_buffer()
- */
-extern void *livebox_buffer_hw_buffer(struct livebox_buffer *handle);
-
-/**
- * @brief Get the stride information from the buffer info
- * @param[in] handle Buffer handle
- * @privlevel N/P
- * @return int stride size
- * @retval positive_value length of stride
- * @return LB_STATUS_ERROR_INVALID Invalid parameter
- * @return LB_STATUS_ERROR_FAULT Unrecoverable error
- * @see livebox_create_hw_buffer()
- */
-extern int livebox_buffer_stride(struct livebox_buffer *handle);
-
-/**
- * @brief Pre-processes for rendering content.
- * @details This is only needed for accessing H/W accelerated buffer.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid handle
- * @retval #LB_STATUS_SUCCESS Successfully done
- * @post livebox_buffer_post_render must be called after the rendering (accessing buffer) is completed.
- * @see livebox_support_hw_buffer()
- * @see livebox_buffer_post_render()
- */
-extern int livebox_buffer_pre_render(struct livebox_buffer *handle);
-
-/**
- * @brief Post-processes for rendering content.
- * @param[in] handle Buffer handle
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return If succes returns 0 or return less than 0
- * @retval #LB_STATUS_SUCCESS If succeed
- * @retval #LB_STATUS_ERROR_INVALID Invalid argument
- * @pre livebox_buffer_pre_render must be called.
- * @see livebox_support_hw_buffer()
- * @see livebox_buffer_pre_render()
- */
-extern int livebox_buffer_post_render(struct livebox_buffer *handle);
-
-/**
- * @brief Sends a request to the viewer (homescreen) to close the PD.
- * @details Even though you call this function. the homescreen can ignore it.
- * @param[in] pkgname Livebox Package Id
- * @param[in] id Instance Id which is passed to you via the first parameter of every livebox_XXXX interface functions
- * @param[in] reason LB_STATUS_SUCCESS(0)
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid parameters
- * @retval #LB_STATUS_ERROR_MEMORY Out of memory
- * @retval #LB_STATUS_ERROR_FAULT Failed to send a request
- * @retval #LB_STATUS_SUCCESS Successfully requested
- */
-extern int livebox_request_close_pd(const char *pkgname, const char *id, int reason);
-
-/**
- * @brief Send a freeze request to the viewer (homescreen)
- * @details
- *        The viewer will get this request via event callback.
- *        Then it should freeze its scroller or stop moving the livebox.
- * @remarks If the viewer doesn't care this request, this will has no effect.
- * @param[in] pkgname Livebox Package Id
- * @param[in] id Instance Id which is passed to you via the first parameter of every livebox_XXXX interface functions
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid parameters
- * @retval #LB_STATUS_ERROR_MEMORY Out of memory
- * @retval #LB_STATUS_ERROR_FAULT Failed to send requet
- * @retval #LB_STATUS_SUCCESS Successfully requested
- * @see livebox_release_scroller()
- */
-extern int livebox_freeze_scroller(const char *pkgname, const char *id);
-
-/**
- * @brief Send a release request to the viewer (homescreen)
- * @details
- *        The viewer will get this request via event callback.
- *        Then it should release its scroller or continue moving the livebox.
- * @remarks If the viewer doesn't care this request, this will has no effect.
- * @param[in] pkgname Livebox Package Id
- * @param[in] id Instance Id which is passed to you via the first parameter of every livebox_XXXX interface functions
- * @privlevel platform
- * @privilege %http://developer.samsung.com/privilege/core/dynamicbox.provider
- * @return int type
- * @retval #LB_STATUS_ERROR_INVALID Invalid parameters
- * @retval #LB_STATUS_ERROR_MEMORY Out of memory
- * @retval #LB_STATUS_ERROR_FAULT Failed to send requet
- * @retval #LB_STATUS_SUCCESS Successfully requested
- * @see livebox_freeze_scroller()
- */
-extern int livebox_release_scroller(const char *pkgname, const char *id);
-
-/**
- * @brief Get the configuration value for premultiplied alpha.
- * @details
- *     If the system uses the premultiplied alpha for content,
- *     This function will returns 1.
- * @remarks This function only works with the inhouse provider.
- * @privlevel N/P
- * @return status of premultiplied alpha.
- * @retval 1 Content rendered with premultiplied alpha.
- * @retval 0 Content doesn't rendered with premultiplied alpha.
- */
-extern int livebox_conf_premultiplied_alpha(void);
-
-/**
- * @brief Get the configuration value for AUTO Alignment of canvas buffer.
- * @details
- *      If the UIFW does not support the STRIDE information for rendering frame,
- *      This function will returns 1, then the livebox will automatically aligning the buffer.
- * @privlevel N/P
- * @return status of auto alignment.
- * @retval 1 Content will be automatically aligned by livebox.
- * @retval 0 Content will be aligned by UIFW, using stride information.
- */
-extern int livebox_conf_auto_align(void);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* End of a file */
index 5855f3f..61acda0 100644 (file)
@@ -11,7 +11,7 @@ Source1001: %{name}.manifest
 BuildRequires: cmake, gettext-tools, coreutils
 BuildRequires: pkgconfig(dlog)
 BuildRequires: pkgconfig(dynamicbox_service)
-BuildRequires: pkgconfig(provider)
+BuildRequires: pkgconfig(dynamicbox_provider)
 BuildRequires: pkgconfig(ecore)
 BuildRequires: pkgconfig(evas)
 BuildRequires: pkgconfig(elementary)
index 431dd8a..3cc82b1 100644 (file)
 #include <dlfcn.h>
 
 #include <dlog.h>
-#include <provider.h>
-#include <provider_buffer.h>
-
-/*
-#include <dynamicbox_service.h>
 #include <dynamicbox_errno.h>
-*/
-
 #include <dynamicbox_service.h>
+#include <dynamicbox_provider.h>
+#include <dynamicbox_provider_buffer.h>
 
 #include "debug.h"
 #include "dlist.h"
 #include "util.h"
-#include "livebox_product.h"
-#include "livebox.h"
 #include "dynamicbox.h"
 
 #define PUBLIC __attribute__((visibility("default")))
@@ -129,6 +122,7 @@ struct conf {
        char *services;
        int auto_align;
        int use_event_time;
+       int check_lcd;
 };
 
 struct block {
@@ -153,11 +147,11 @@ struct dynamicbox_desc {
 };
 
 struct dynamicbox_buffer_data {
-       int is_pd;
+       int is_gbar;
        int accelerated;
 
        /* for Buffer event wrapper */
-       int (*handler)(struct dynamicbox_buffer *, struct dbox_buffer_event_data *, void *);
+       int (*handler)(struct dynamicbox_buffer *, struct dynamicbox_buffer_event_data *, void *);
        void *cbdata;
 
        char *content;
@@ -166,6 +160,192 @@ struct dynamicbox_buffer_data {
        char *name;
 };
 
+/**
+ * @brief These functions are defined in the data-provider-slave
+ */
+static struct info {
+       const char *(*find_pkgname)(const char *filename);
+       int (*request_update_by_id)(const char *uri);
+       int (*trigger_update_monitor)(const char *id, int is_gbar);
+       int (*update_extra_info)(const char *id, const char *content, const char *title, const char *icon, const char *name);
+
+       int is_slave;
+       union _updated {
+               struct _slave {
+                       int (*dbox)(const char *pkgname, const char *id, int w, int h);
+                       int (*gbar)(const char *pkgname, const char *id, const char *descfile);
+               } slave;
+
+               struct _app {
+                       int (*dbox)(const char *id, int w, int h);
+                       int (*gbar)(const char *id);
+               } app;
+       } updated;
+
+       struct conf *conf;
+} s_info = {
+       .find_pkgname = NULL,
+       .request_update_by_id = NULL,
+       .trigger_update_monitor = NULL,
+       .update_extra_info = NULL,
+       .is_slave = -1, /* Not initialized */
+       .conf = NULL,
+};
+
+static int send_dbox_updated(const char *pkgname, const char *id, int w, int h)
+{
+       int ret = DBOX_STATUS_ERROR_INVALID_PARAMETER;
+
+       if (s_info.is_slave < 0) {
+               /* Must to be checked the slave function first. */
+               s_info.updated.slave.dbox = dlsym(RTLD_DEFAULT, "livebox_send_updated");
+               s_info.updated.slave.gbar = dlsym(RTLD_DEFAULT, "livebox_send_desc_updated");
+               if (s_info.updated.slave.dbox && s_info.updated.slave.gbar) {
+                       s_info.is_slave = 1;
+                       DbgPrint("Slave detected\n");
+               } else {
+                       s_info.updated.app.dbox = dlsym(RTLD_DEFAULT, "dynamicbox_provider_app_dbox_updated");
+                       s_info.updated.app.gbar = dlsym(RTLD_DEFAULT, "dynamicbox_provider_app_gbar_updated");
+                       if (s_info.updated.app.dbox && s_info.updated.app.gbar) {
+                               s_info.is_slave = 0;
+                               DbgPrint("App detected\n");
+                       }
+               }
+       }
+
+       if (s_info.is_slave == 0) {
+               ret = s_info.updated.app.dbox(id, w, h);
+       } else if (s_info.is_slave == 1) {
+               ret = s_info.updated.slave.dbox(pkgname, id, w, h);
+       } else {
+               ret = dynamicbox_provider_send_updated(pkgname, id, w, h);
+       }
+
+       return ret;
+}
+
+static int send_gbar_updated(const char *pkgname, const char *id, const char *descfile)
+{
+       int ret = DBOX_STATUS_ERROR_INVALID_PARAMETER;
+
+       if (s_info.is_slave < 0) {
+               /* Must to be checked the slave function first. */
+               s_info.updated.slave.dbox = dlsym(RTLD_DEFAULT, "livebox_send_updated");
+               s_info.updated.slave.gbar = dlsym(RTLD_DEFAULT, "livebox_send_desc_updated");
+               if (s_info.updated.slave.dbox && s_info.updated.slave.gbar) {
+                       s_info.is_slave = 1;
+                       DbgPrint("Slave detected\n");
+               } else {
+                       s_info.updated.app.dbox = dlsym(RTLD_DEFAULT, "dynamicbox_provider_app_dbox_updated");
+                       s_info.updated.app.gbar = dlsym(RTLD_DEFAULT, "dynamicbox_provider_app_gbar_updated");
+                       if (s_info.updated.app.dbox && s_info.updated.app.gbar) {
+                               s_info.is_slave = 0;
+                               DbgPrint("App detected\n");
+                       }
+               }
+       }
+
+       if (s_info.is_slave == 0) {
+               ret = s_info.updated.app.gbar(id);
+       } else if (s_info.is_slave == 1) {
+               ret = s_info.updated.slave.gbar(pkgname, id, descfile);
+       } else {
+               ret = dynamicbox_provider_send_desc_updated(pkgname, id, descfile);
+       }
+
+       return ret;
+}
+
+static char *id_to_uri(const char *id)
+{
+       char *uri;
+       int uri_len;
+
+       uri_len = strlen(id) + strlen(FILE_SCHEMA) + 1;
+
+       uri = malloc(uri_len);
+       if (!uri) {
+               return NULL;
+       }
+
+       snprintf(uri, uri_len, FILE_SCHEMA "%s", id);
+       return uri;
+}
+
+static inline int event_handler_wrapper(struct dynamicbox_buffer *buffer, struct dynamicbox_buffer_event_data *event_info, void *data)
+{
+       const char *pkgname;
+       const char *id;
+       struct dynamicbox_buffer_data *cbdata = data;
+       int ret;
+
+       pkgname = dynamicbox_provider_buffer_pkgname(buffer);
+       if (!pkgname) {
+               ErrPrint("pkgname is not valid\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       id = dynamicbox_provider_buffer_id(buffer);
+       if (!id) {
+               ErrPrint("id is not valid[%s]\n", pkgname);
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (cbdata->handler) {
+               ret = cbdata->handler(buffer, event_info, cbdata->cbdata);
+       } else {
+               ret = DBOX_STATUS_ERROR_FAULT;
+       }
+
+       switch (event_info->type) {
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_NEXT:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_PREV:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTIVATE:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTION_UP:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTION_DOWN:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_UP:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_MOVE:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_DOWN:
+       case DBOX_BUFFER_EVENT_ACCESS_UNHIGHLIGHT:
+       case DBOX_BUFFER_EVENT_ACCESS_VALUE_CHANGE:
+       case DBOX_BUFFER_EVENT_ACCESS_MOUSE:
+       case DBOX_BUFFER_EVENT_ACCESS_BACK:
+       case DBOX_BUFFER_EVENT_ACCESS_OVER:
+       case DBOX_BUFFER_EVENT_ACCESS_READ:
+       case DBOX_BUFFER_EVENT_ACCESS_ENABLE:
+       case DBOX_BUFFER_EVENT_ACCESS_DISABLE:
+               DbgPrint("Accessibility event: %d\n", event_info->type);
+               if (ret < 0) {
+                       (void)dynamicbox_provider_send_access_status(pkgname, id, DBOX_ACCESS_STATUS_ERROR);
+               } else {
+                       (void)dynamicbox_provider_send_access_status(pkgname, id, ret);
+               }
+               break;
+       case DBOX_BUFFER_EVENT_KEY_UP:
+       case DBOX_BUFFER_EVENT_KEY_DOWN:
+       case DBOX_BUFFER_EVENT_KEY_FOCUS_IN:
+       case DBOX_BUFFER_EVENT_KEY_FOCUS_OUT:
+               DbgPrint("Key event: %d\n", event_info->type);
+               if (ret < 0) {
+                       (void)dynamicbox_provider_send_key_status(pkgname, id, DBOX_KEY_STATUS_ERROR);
+               } else {
+                       (void)dynamicbox_provider_send_key_status(pkgname, id, ret);
+               }
+               break;
+       default:
+               break;
+       }
+
+       return ret;
+}
+
+static inline int default_event_handler(struct dynamicbox_buffer *buffer, struct dynamicbox_buffer_event_data *event_info, void *data)
+{
+       /* NOP */
+       return 0;
+}
+
 PUBLIC const int DBOX_DONE = 0x00;
 PUBLIC const int DBOX_OUTPUT_UPDATED = 0x02;
 PUBLIC const int DBOX_USE_NET = 0x04;
@@ -187,32 +367,235 @@ PUBLIC const int DBOX_SYS_EVENT_DELETED = 0x0800;
 
 PUBLIC struct dynamicbox_desc *dynamicbox_desc_open(const char *filename, int for_pd)
 {
-       return (struct dynamicbox_desc *)livebox_desc_open(filename, for_pd);
+       struct dynamicbox_desc *handle;
+       char *new_fname;
+
+       handle = calloc(1, sizeof(*handle));
+       if (!handle) {
+               ErrPrint("Error: %s\n", strerror(errno));
+               return NULL;
+       }
+
+       if (for_pd) {
+               int len;
+               len = strlen(filename) + strlen(".desc") + 1;
+               new_fname = malloc(len);
+               if (!new_fname) {
+                       ErrPrint("Error: %s\n", strerror(errno));
+                       free(handle);
+                       return NULL;
+               }
+               snprintf(new_fname, len, "%s.desc", filename);
+       } else {
+               new_fname = strdup(filename);
+               if (!new_fname) {
+                       ErrPrint("Error: %s\n", strerror(errno));
+                       free(handle);
+                       return NULL;
+               }
+       }
+
+       DbgPrint("Open a file %s with merge mode %s\n",
+                               new_fname,
+                               access(new_fname, F_OK) == 0 ? "enabled" : "disabled");
+
+       handle->fp = fopen(new_fname, "at");
+       free(new_fname);
+       if (!handle->fp) {
+               ErrPrint("Failed to open a file: %s\n", strerror(errno));
+               free(handle);
+               return NULL;
+       }
+
+       return handle;
 }
 
 PUBLIC int dynamicbox_desc_close(struct dynamicbox_desc *handle)
 {
-       return livebox_desc_close((struct livebox_desc *)handle);
+       struct dlist *l;
+       struct dlist *n;
+       struct block *block;
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       dlist_foreach_safe(handle->block_list, l, n, block) {
+               handle->block_list = dlist_remove(handle->block_list, l);
+
+               fprintf(handle->fp, "{\n");
+               if (block->type) {
+                       fprintf(handle->fp, "type=%s\n", block->type);
+               }
+
+               if (block->part) {
+                       fprintf(handle->fp, "part=%s\n", block->part);
+               }
+
+               if (block->data) {
+                       fprintf(handle->fp, "data=%s\n", block->data);
+               }
+
+               if (block->option) {
+                       fprintf(handle->fp, "option=%s\n", block->option);
+               }
+
+               if (block->id) {
+                       fprintf(handle->fp, "id=%s\n", block->id);
+               }
+
+               if (block->target_id) {
+                       fprintf(handle->fp, "target=%s\n", block->target_id);
+               }
+               fprintf(handle->fp, "}\n");
+
+               free(block->type);
+               free(block->part);
+               free(block->data);
+               free(block->option);
+               free(block->id);
+               free(block->target_id);
+               free(block);
+       }
+
+       if (fclose(handle->fp) != 0) {
+               ErrPrint("fclose: %s\n", strerror(errno));
+       }
+       free(handle);
+       return DBOX_STATUS_ERROR_NONE;
 }
 
 PUBLIC int dynamicbox_desc_set_category(struct dynamicbox_desc *handle, const char *id, const char *category)
 {
-       return livebox_desc_set_category((struct livebox_desc *)handle, id, category);
+       struct block *block;
+
+       if (!handle || !category) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       block = calloc(1, sizeof(*block));
+       if (!block) {
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->type = strdup(DBOX_DESC_TYPE_INFO);
+       if (!block->type) {
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->part = strdup("category");
+       if (!block->part) {
+               free(block->type);
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->data = strdup(category);
+       if (!block->data) {
+               free(block->type);
+               free(block->part);
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       if (id) {
+               block->id = strdup(id);
+               if (!block->id) {
+                       free(block->data);
+                       free(block->type);
+                       free(block->part);
+                       free(block);
+                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+               }
+       }
+
+       block->idx = handle->last_idx++;
+       handle->block_list = dlist_append(handle->block_list, block);
+       return block->idx;
 }
 
 PUBLIC int dynamicbox_desc_set_size(struct dynamicbox_desc *handle, const char *id, int w, int h)
 {
-       return livebox_desc_set_size((struct livebox_desc *)handle, id, w, h);
-}
-
-PUBLIC char *dynamicbox_util_nl2br(const char *str)
-{
-       return livebox_util_nl2br(str);
+       struct block *block;
+       char buffer[BUFSIZ];
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       block = calloc(1, sizeof(*block));
+       if (!block) {
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->type = strdup(DBOX_DESC_TYPE_INFO);
+       if (!block->type) {
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->part = strdup("size");
+       if (!block->part) {
+               free(block->type);
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       if (id) {
+               block->id = strdup(id);
+               if (!block->id) {
+                       free(block->part);
+                       free(block->type);
+                       free(block);
+                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+               }
+       }
+
+       snprintf(buffer, sizeof(buffer), "%dx%d", w, h);
+       block->data = strdup(buffer);
+       if (!block->data) {
+               free(block->part);
+               free(block->type);
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->idx = handle->last_idx++;
+       handle->block_list = dlist_append(handle->block_list, block);
+       return block->idx;
 }
 
 PUBLIC int dynamicbox_desc_set_id(struct dynamicbox_desc *handle, int idx, const char *id)
 {
-       return livebox_desc_set_id((struct livebox_desc *)handle, idx, id);
+       struct dlist *l;
+       struct block *block;
+
+       dlist_foreach(handle->block_list, l, block) {
+               if (block->idx == idx) {
+                       if (strcasecmp(block->type, DBOX_DESC_TYPE_SCRIPT)) {
+                               ErrPrint("Invalid block is used\n");
+                               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+                       }
+
+                       free(block->target_id);
+                       block->target_id = NULL;
+
+                       if (!id || !strlen(id)) {
+                               return DBOX_STATUS_ERROR_NONE;
+                       }
+
+                       block->target_id = strdup(id);
+                       if (!block->target_id) {
+                               ErrPrint("Heap: %s\n", strerror(errno));
+                               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+                       }
+
+                       return DBOX_STATUS_ERROR_NONE;
+               }
+       }
+
+       return DBOX_STATUS_ERROR_NOT_EXIST;
 }
 
 /*!
@@ -220,118 +603,715 @@ PUBLIC int dynamicbox_desc_set_id(struct dynamicbox_desc *handle, int idx, const
  */
 PUBLIC int dynamicbox_desc_add_block(struct dynamicbox_desc *handle, const char *id, const char *type, const char *part, const char *data, const char *option)
 {
-       return livebox_desc_add_block((struct livebox_desc *)handle, id, type, part, data, option);
+       struct block *block;
+
+       if (!handle || !type) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (!part) {
+               part = "";
+       }
+
+       if (!data) {
+               data = "";
+       }
+
+       block = calloc(1, sizeof(*block));
+       if (!block) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->type = strdup(type);
+       if (!block->type) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->part = strdup(part);
+       if (!block->part) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               free(block->type);
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       block->data = strdup(data);
+       if (!block->data) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               free(block->type);
+               free(block->part);
+               free(block);
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       if (option) {
+               block->option = strdup(option);
+               if (!block->option) {
+                       ErrPrint("Heap: %s\n", strerror(errno));
+                       free(block->data);
+                       free(block->type);
+                       free(block->part);
+                       free(block);
+                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+               }
+       }
+
+       if (id) {
+               block->id = strdup(id);
+               if (!block->id) {
+                       ErrPrint("Heap: %s\n", strerror(errno));
+                       free(block->option);
+                       free(block->data);
+                       free(block->type);
+                       free(block->part);
+                       free(block);
+                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+               }
+       }
+
+       block->idx = handle->last_idx++;
+       handle->block_list = dlist_append(handle->block_list, block);
+       return block->idx;
 }
 
 PUBLIC int dynamicbox_desc_del_block(struct dynamicbox_desc *handle, int idx)
 {
-       return livebox_desc_del_block((struct livebox_desc *)handle, idx);
+       struct dlist *l;
+       struct block *block;
+
+       if (!handle || idx < 0) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       dlist_foreach(handle->block_list, l, block) {
+               if (block->idx == idx) {
+                       handle->block_list = dlist_remove(handle->block_list, l);
+                       free(block->type);
+                       free(block->part);
+                       free(block->data);
+                       free(block->option);
+                       free(block->id);
+                       free(block->target_id);
+                       free(block);
+                       return DBOX_STATUS_ERROR_NONE;
+               }
+       }
+
+       return DBOX_STATUS_ERROR_NOT_EXIST;
 }
 
-PUBLIC struct dynamicbox_buffer *dynamicbox_acquire_buffer(const char *filename, int is_pd, int width, int height, int pixels, int auto_align, int (*handler)(struct dynamicbox_buffer *, struct dbox_buffer_event_data *, void *), void *data)
+PUBLIC struct dynamicbox_buffer *dynamicbox_acquire_buffer(const char *filename, int is_gbar, int width, int height, int pixels, int auto_align, int (*handler)(struct dynamicbox_buffer *, struct dynamicbox_buffer_event_data *, void *), void *data)
 {
-       typedef int (*handler_t)(struct livebox_buffer *, struct buffer_event_data *, void *);
-       return (struct dynamicbox_buffer *)livebox_acquire_buffer(filename, is_pd, width, height, pixels, auto_align, (handler_t)handler, data);
+       struct dynamicbox_buffer_data *user_data;
+       const char *pkgname;
+       struct dynamicbox_buffer *handle;
+       char *uri;
+
+       if (!filename || !width || !height) {
+               ErrPrint("Invalid argument: %p(%dx%d)\n", filename, width, height);
+               return NULL;
+       }
+
+       user_data = calloc(1, sizeof(*user_data));
+       if (!user_data) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               return NULL;
+       }
+
+       user_data->is_gbar = is_gbar;
+       user_data->handler = handler ? handler : default_event_handler;
+       user_data->cbdata = data;
+
+       uri = id_to_uri(filename);
+       if (!uri) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               free(user_data);
+               return NULL;
+       }
+
+       if (!s_info.find_pkgname) {
+               s_info.find_pkgname = dlsym(RTLD_DEFAULT, "livebox_find_pkgname");
+               if (!s_info.find_pkgname) {
+                       ErrPrint("Failed to find a \"livebox_find_pkgname\"\n");
+                       free(user_data);
+                       free(uri);
+                       return NULL;
+               }
+       }
+
+       pkgname = s_info.find_pkgname(uri);
+       if (!pkgname) {
+               ErrPrint("Invalid Request\n");
+               free(user_data);
+               free(uri);
+               return NULL;
+       }
+
+       handle = dynamicbox_provider_buffer_create((!!is_gbar) ? DBOX_TYPE_GBAR : DBOX_TYPE_DBOX, pkgname, uri, auto_align, event_handler_wrapper, user_data);
+       free(uri);
+       if (!handle) {
+               free(user_data);
+               return NULL;
+       }
+
+       if (dynamicbox_provider_buffer_acquire(handle, width, height, pixels) < 0) {
+               dynamicbox_provider_buffer_destroy(handle);
+               free(user_data);
+               return NULL;
+       }
+
+       (void)dynamicbox_provider_buffer_set_user_data(handle, user_data);
+       return handle;
 }
 
 PUBLIC int dynamicbox_request_update(const char *filename)
 {
-       return livebox_request_update(filename);
+       char *uri;
+       int ret;
+
+       if (!filename) {
+               ErrPrint("Invalid argument\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       uri = id_to_uri(filename);
+       if (!uri) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       if (!s_info.request_update_by_id) {
+               s_info.request_update_by_id = dlsym(RTLD_DEFAULT, "livebox_request_update_by_id");
+               if (!s_info.request_update_by_id) {
+                       ErrPrint("\"livebox_request_update_by_id\" is not exists\n");
+                       free(uri);
+                       return DBOX_STATUS_ERROR_FAULT;
+               }
+       }
+       ret = s_info.request_update_by_id(uri);
+       free(uri);
+       return ret;
 }
 
 PUBLIC int dynamicbox_conf_auto_align(void)
 {
-       return livebox_conf_auto_align();
+       if (!s_info.conf) {
+               struct conf *(*livebox_conf_get_conf)(void);
+               livebox_conf_get_conf = dlsym(RTLD_DEFAULT, "livebox_conf_get_conf");
+               if (!livebox_conf_get_conf) {
+                       ErrPrint("g_conf is not found\n");
+                       return 1;
+               }
+
+               s_info.conf = livebox_conf_get_conf();
+               if (!s_info.conf) {
+                       ErrPrint("g_conf is not found\n");
+                       return 1;
+               }
+
+               DbgPrint("Auto align: %d\n", s_info.conf->auto_align);
+       }
+
+       return s_info.conf->auto_align;
 }
 
 PUBLIC int dynamicbox_conf_premultiplied_alpha(void)
 {
-       return livebox_conf_premultiplied_alpha();
+       if (!s_info.conf) {
+               struct conf *(*livebox_conf_get_conf)(void);
+               livebox_conf_get_conf = dlsym(RTLD_DEFAULT, "livebox_conf_get_conf");
+               if (!livebox_conf_get_conf) {
+                       ErrPrint("g_conf is not found\n");
+                       return 1;
+               }
+
+               s_info.conf = livebox_conf_get_conf();
+               if (!s_info.conf) {
+                       ErrPrint("g_conf is not found\n");
+                       return 1;
+               }
+
+               DbgPrint("Premultiplied alpha: %d\n", s_info.conf->premultiplied);
+       }
+
+       return s_info.conf->premultiplied;
 }
 
 PUBLIC unsigned int dynamicbox_resource_id(struct dynamicbox_buffer *handle)
 {
-       return (unsigned int)livebox_pixmap_id((struct livebox_buffer *)handle);
+       return dynamicbox_provider_buffer_resource_id(handle);
 }
 
 PUBLIC int dynamicbox_release_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_release_buffer((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (user_data) {
+               free(user_data->content);
+               free(user_data->title);
+               free(user_data->icon);
+               free(user_data->name);
+               free(user_data);
+               dynamicbox_provider_buffer_set_user_data(handle, NULL);
+       }
+
+       (void)dynamicbox_provider_buffer_release(handle);
+       (void)dynamicbox_provider_buffer_destroy(handle);
+
+       DbgPrint("Release buffer\n");
+       return 0;
 }
 
 PUBLIC void *dynamicbox_ref_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_ref_buffer((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+       void *data;
+       int w, h, size;
+       int ret;
+
+       if (!handle) {
+               return NULL;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data) {
+               return NULL;
+       }
+
+       if (user_data->accelerated) {
+               DbgPrint("H/W accelerated buffer is allocated\n");
+               return NULL;
+       }
+
+       ret = dynamicbox_provider_buffer_get_size(handle, &w, &h, &size);
+
+       data = dynamicbox_provider_buffer_ref(handle);
+       if (data && !ret && w > 0 && h > 0 && size > 0) {
+               memset(data, 0, w * h * size);
+               (void)dynamicbox_provider_buffer_sync(handle);
+       }
+
+       DbgPrint("Ref buffer %ds%d(%d)\n", w, h, size);
+       return data;
 }
 
 PUBLIC int dynamicbox_unref_buffer(void *buffer)
 {
-       return livebox_unref_buffer(buffer);
+       if (!buffer) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       DbgPrint("Unref buffer\n");
+       return dynamicbox_provider_buffer_unref(buffer);
 }
 
 PUBLIC int dynamicbox_sync_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_sync_buffer((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+       const char *pkgname;
+       const char *id;
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data) {
+               ErrPrint("Invalid buffer\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (user_data->accelerated) {
+               DbgPrint("H/W Buffer allocated. skip the sync buffer\n");
+               return DBOX_STATUS_ERROR_NONE;
+       }
+
+       pkgname = dynamicbox_provider_buffer_pkgname(handle);
+       if (!pkgname) {
+               ErrPrint("Invalid buffer handler\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       id = dynamicbox_provider_buffer_id(handle);
+       if (!id) {
+               ErrPrint("Invalid buffer handler\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       (void)dynamicbox_provider_buffer_sync(handle);
+
+       if (user_data->is_gbar == 1) {
+               if (send_gbar_updated(pkgname, id, NULL) < 0) {
+                       ErrPrint("Failed to send PD updated (%s)\n", id);
+               }
+       } else {
+               int w;
+               int h;
+               int pixel_size;
+
+               if (dynamicbox_provider_buffer_get_size(handle, &w, &h, &pixel_size) < 0) {
+                       ErrPrint("Failed to get size (%s)\n", id);
+               }
+
+               if (send_dbox_updated(pkgname, id, w, h) < 0) {
+                       ErrPrint("Failed to send updated (%s)\n", id);
+               }
+       }
+
+       return DBOX_STATUS_ERROR_NONE;
 }
 
 PUBLIC int dynamicbox_support_hw_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_support_hw_buffer((struct livebox_buffer *)handle);
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       return dynamicbox_provider_buffer_is_support_hw(handle);
 }
 
 PUBLIC int dynamicbox_create_hw_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_create_hw_buffer((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+       int ret;
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (user_data->accelerated) {
+               return DBOX_STATUS_ERROR_ALREADY;
+       }
+
+       ret = dynamicbox_provider_buffer_pixmap_create_hw(handle);
+       user_data->accelerated = (ret == 0);
+       return ret;
 }
 
 PUBLIC int dynamicbox_destroy_hw_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_destroy_hw_buffer((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+
+       if (!handle) {
+               LOGD("handle is NULL\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data || !user_data->accelerated) {
+               LOGD("user_data is NULL\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data->accelerated = 0;
+
+       return dynamicbox_provider_buffer_destroy_hw(handle);
 }
 
 PUBLIC void *dynamicbox_buffer_hw_buffer(struct dynamicbox_buffer *handle)
 {
-       return livebox_buffer_hw_buffer((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+
+       if (!handle) {
+               return NULL;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data || !user_data->accelerated) {
+               return NULL;
+       }
+
+       return dynamicbox_provider_buffer_hw_addr(handle);
 }
 
 PUBLIC int dynamicbox_buffer_pre_render(struct dynamicbox_buffer *handle)
 {
-       return livebox_buffer_pre_render((struct livebox_buffer *)handle);
+       struct dynamicbox_buffer_data *user_data;
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (!user_data->accelerated) {
+               return DBOX_STATUS_ERROR_NONE;
+       }
+
+       /*!
+        * \note
+        * Do preprocessing for accessing the H/W render buffer
+        */
+       return dynamicbox_provider_buffer_pre_render(handle);
 }
 
 PUBLIC int dynamicbox_buffer_post_render(struct dynamicbox_buffer *handle)
 {
-       return livebox_buffer_post_render((struct livebox_buffer *)handle);
+       int ret;
+       const char *pkgname;
+       const char *id;
+       struct dynamicbox_buffer_data *user_data;
+
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       user_data = dynamicbox_provider_buffer_user_data(handle);
+       if (!user_data) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (!user_data->accelerated) {
+               return DBOX_STATUS_ERROR_NONE;
+       }
+
+       pkgname = dynamicbox_provider_buffer_pkgname(handle);
+       if (!pkgname) {
+               ErrPrint("Invalid buffer handle\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       id = dynamicbox_provider_buffer_id(handle);
+       if (!id) {
+               ErrPrint("Invalid buffer handler\n");
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       ret = dynamicbox_provider_buffer_post_render(handle);
+       if (ret < 0) {
+               ErrPrint("Failed to post render processing\n");
+               return ret;
+       }
+
+       if (user_data->is_gbar == 1) {
+               if (send_gbar_updated(pkgname, id, NULL) < 0) {
+                       ErrPrint("Failed to send PD updated (%s)\n", id);
+               }
+       } else {
+               int w;
+               int h;
+               int pixel_size;
+
+               if (dynamicbox_provider_buffer_get_size(handle, &w, &h, &pixel_size) < 0) {
+                       ErrPrint("Failed to get size (%s)\n", id);
+               }
+
+               if (send_dbox_updated(pkgname, id, w, h) < 0) {
+                       ErrPrint("Failed to send updated (%s)\n", id);
+               }
+       }
+
+       return DBOX_STATUS_ERROR_NONE;
 }
 
 PUBLIC int dynamicbox_buffer_stride(struct dynamicbox_buffer *handle)
 {
-       return livebox_buffer_stride((struct livebox_buffer *)handle);
+       if (!handle) {
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       return dynamicbox_provider_buffer_stride(handle);
 }
 
-PUBLIC int dynamicbox_content_is_updated(const char *filename, int is_pd)
+PUBLIC int dynamicbox_content_is_updated(const char *filename, int is_gbar)
 {
-       return livebox_content_is_updated(filename, is_pd);
+       if (!s_info.trigger_update_monitor) {
+               s_info.trigger_update_monitor = dlsym(RTLD_DEFAULT, "livebox_trigger_update_monitor");
+               if (!s_info.trigger_update_monitor) {
+                       ErrPrint("Trigger update monitor function is not exists\n");
+                       return DBOX_STATUS_ERROR_FAULT;
+               }
+       }
+
+       return s_info.trigger_update_monitor(filename, is_gbar);
 }
 
-PUBLIC int dynamicbox_request_close_pd(const char *pkgname, const char *id, int reason)
+PUBLIC int dynamicbox_request_close_gbar(const char *pkgname, const char *id, int reason)
 {
-       return livebox_request_close_pd(pkgname, id, reason);
+       char *uri;
+       int schema_len = strlen(FILE_SCHEMA);
+       int ret;
+
+       if (!pkgname || !id) {
+               ErrPrint("Invalid parameters (%s) (%s)\n", pkgname, id);
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       if (strncmp(id, FILE_SCHEMA, schema_len)) {
+               uri = id_to_uri(id);
+               if (!uri) {
+                       ErrPrint("Heap: %s\n", strerror(errno));
+                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+               }
+       } else {
+               uri = strdup(id);
+               if (!uri) {
+                       ErrPrint("Heap: %s\n", strerror(errno));
+                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+               }
+       }
+
+       ret = dynamicbox_provider_send_request_close_gbar(pkgname, uri, reason);
+       free(uri);
+       return ret;
 }
 
 PUBLIC int dynamicbox_freeze_scroller(const char *pkgname, const char *id)
 {
-       return livebox_freeze_scroller(pkgname, id);
+       char *uri;
+       int ret;
+
+       uri = id_to_uri(id);
+       if (!uri) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       ret = dynamicbox_provider_send_hold_scroll(pkgname, uri, 1);
+       free(uri);
+       return ret;
 }
 
 PUBLIC int dynamicbox_thaw_scroller(const char *pkgname, const char *id)
 {
-       return livebox_release_scroller(pkgname, id);
+       char *uri;
+       int ret;
+
+       uri = id_to_uri(id);
+       if (!uri) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       ret = dynamicbox_provider_send_hold_scroll(pkgname, uri, 0);
+       free(uri);
+       return ret;
 }
 
 PUBLIC int dynamicbox_set_extra_info(const char *id, const char *content, const char *title, const char *icon, const char *name)
 {
-       return livebox_set_extra_info(id, content, title, icon, name);
+       struct dynamicbox_buffer *handle;
+       const char *pkgname;
+       char *uri;
+
+       uri = id_to_uri(id);
+       if (!uri) {
+               ErrPrint("Heap: %s\n", strerror(errno));
+               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
+       }
+
+       pkgname = s_info.find_pkgname(uri);
+       if (!pkgname) {
+               ErrPrint("Failed to find a package (%s)\n", uri);
+               free(uri);
+               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+       }
+
+       handle = dynamicbox_provider_buffer_find_buffer(DBOX_TYPE_DBOX, pkgname, uri);
+       if (handle) {
+               struct dynamicbox_buffer_data *user_data;
+
+               user_data = dynamicbox_provider_buffer_user_data(handle);
+               if (!user_data) {
+                       ErrPrint("User data is not available\n");
+                       free(uri);
+                       return DBOX_STATUS_ERROR_FAULT;
+               }
+
+               if (content && strlen(content)) {
+                       char *_content;
+
+                       _content = strdup(content);
+                       if (_content) {
+                               if (user_data->content) {
+                                       free(user_data->content);
+                               }
+
+                               user_data->content = _content;
+                       } else {
+                               ErrPrint("Heap: %s\n", strerror(errno));
+                       }
+               }
+
+               if (title && strlen(title)) {
+                       char *_title;
+
+                       _title = strdup(title);
+                       if (_title) {
+                               if (user_data->title) {
+                                       free(user_data->title);
+                               }
+
+                               user_data->title = _title;
+                       } else {
+                               ErrPrint("Heap: %s\n", strerror(errno));
+                       }
+               }
+
+               if (icon && strlen(icon)) {
+                       char *_icon;
+
+                       _icon = strdup(icon);
+                       if (_icon) {
+                               if (user_data->icon) {
+                                       free(user_data->icon);
+                               }
+
+                               user_data->icon = _icon;
+                       } else {
+                               ErrPrint("Heap: %s\n", strerror(errno));
+                       }
+               }
+
+               if (name && strlen(name)) {
+                       char *_name;
+
+                       _name = strdup(name);
+                       if (_name) {
+                               if (user_data->name) {
+                                       free(user_data->name);
+                               }
+
+                               user_data->name = _name;
+                       } else {
+                               ErrPrint("Heap: %s\n", strerror(errno));
+                       }
+               }
+
+               if (dynamicbox_provider_send_extra_info(pkgname, uri, -1.0f, user_data->content, user_data->title, user_data->icon, user_data->name) < 0) {
+                       ErrPrint("Failed to send extra info (%s)\n", id);
+               }
+
+               free(uri);
+               return DBOX_STATUS_ERROR_NONE;
+       }
+       free(uri);
+
+       if (!s_info.update_extra_info) {
+               s_info.update_extra_info = dlsym(RTLD_DEFAULT, "livebox_update_extra_info");
+               if (!s_info.update_extra_info) {
+                       ErrPrint("Failed to find a \"livebox_update_extra_info\"\n");
+                       return DBOX_STATUS_ERROR_INVALID_PARAMETER;
+               }
+       }
+
+       return s_info.update_extra_info(id, content, title, icon, name);
 }
 
 /* End of a file */
diff --git a/src/livebox.c b/src/livebox.c
deleted file mode 100644 (file)
index bfd9f8c..0000000
+++ /dev/null
@@ -1,1375 +0,0 @@
-/*
- * Copyright 2013  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h> /* malloc */
-#include <string.h> /* strdup */
-#include <libgen.h>
-#include <unistd.h> /* access */
-#define __USE_GNU
-#include <dlfcn.h>
-
-#include <dlog.h>
-#include <provider.h>
-#include <provider_buffer.h>
-#include <dynamicbox_service.h>
-#include <dynamicbox_errno.h>
-
-#include "debug.h"
-#include "livebox.h"
-#include "dlist.h"
-#include "util.h"
-
-#define PUBLIC __attribute__((visibility("default")))
-
-#define FILE_SCHEMA    "file://"
-
-/* Must has to sync'd with data-provider-slave */
-struct conf {
-       int width;
-       int height;
-
-       int base_width;
-       int base_height;
-       double minimum_period;
-
-       struct {
-               char *script;
-               char *abi;
-               char *pd_group;
-               double period;
-               int pixels;
-       } default_conf;
-
-       struct {
-               char *name;
-               char *secured;
-               char *abi;
-       } launch_key;
-
-       double default_packet_time;
-
-       char *empty_content;
-       char *empty_title;
-
-       char *default_content;
-       char *default_title;
-
-       unsigned long minimum_space;
-
-       char *replace_tag;
-
-       double slave_ttl;
-       double slave_activate_time;
-       double slave_relaunch_time;
-       int slave_relaunch_count;
-
-       int max_log_line;
-       int max_log_file;
-
-       unsigned long sqlite_flush_max;
-
-       struct {
-               char *conf;
-               char *image;
-               char *script;
-               char *root;
-               char *script_port;
-               char *slave_log;
-               char *reader;
-               char *always;
-               char *db;
-               char *input;
-       } path;
-
-       int max_size_type;
-
-       int slave_max_load;
-
-       double ping_time;
-
-       char *vconf_sys_cluster;
-       int max_pended_ctx_events;
-
-       int use_sw_backend;
-       char *provider_method;
-       int debug_mode;
-       int overwrite_content;
-       int com_core_thread;
-       int use_xmonitor;
-       int premultiplied;
-
-       double scale_width_factor;
-       double scale_height_factor;
-
-       double pd_request_timeout;
-
-       char *emergency_disk;
-       char *services;
-       int auto_align;
-       int use_event_time;
-       int check_lcd;
-};
-
-/*!
- * \brief This function is defined by the data-provider-slave
- */
-static struct info {
-       const char *(*find_pkgname)(const char *filename);
-       int (*request_update_by_id)(const char *uri);
-       int (*trigger_update_monitor)(const char *id, int is_pd);
-       int (*update_extra_info)(const char *id, const char *content, const char *title, const char *icon, const char *name);
-
-       int is_slave;
-       union _updated {
-               struct _slave {
-                       int (*lb)(const char *pkgname, const char *id, int w, int h);
-                       int (*pd)(const char *pkgname, const char *id, const char *descfile);
-               } slave;
-
-               struct _app {
-                       int (*lb)(const char *id, int w, int h);
-                       int (*pd)(const char *id);
-               } app;
-       } updated;
-
-       struct conf *conf;
-} s_info = {
-       .find_pkgname = NULL,
-       .request_update_by_id = NULL,
-       .trigger_update_monitor = NULL,
-       .update_extra_info = NULL,
-       .is_slave = -1, /* Not initialized */
-       .conf = NULL,
-};
-
-struct block {
-       unsigned int idx;
-
-       char *type;
-       char *part;
-       char *data;
-       char *option;
-       char *id;
-       char *file;
-       char *target_id;
-};
-
-struct livebox_desc {
-       FILE *fp;
-       int for_pd;
-
-       unsigned int last_idx;
-
-       struct dlist *block_list;
-};
-
-struct livebox_buffer_data {
-       int is_pd;
-       int accelerated;
-
-       /* for Buffer event wrapper */
-       int (*handler)(struct livebox_buffer *, struct buffer_event_data *, void *);
-       void *cbdata;
-
-       char *content;
-       char *title;
-       char *icon;
-       char *name;
-};
-
-PUBLIC const int DONE = 0x00;
-PUBLIC const int OUTPUT_UPDATED = 0x02;
-PUBLIC const int USE_NET = 0x04;
-
-PUBLIC const int NEED_TO_SCHEDULE = 0x01;
-PUBLIC const int NEED_TO_CREATE = 0x01;
-PUBLIC const int NEED_TO_DESTROY = 0x01;
-PUBLIC const int NEED_TO_UPDATE = 0x01;
-PUBLIC const int FORCE_TO_SCHEDULE = 0x08;
-
-PUBLIC const int LB_SYS_EVENT_FONT_CHANGED = 0x01;
-PUBLIC const int LB_SYS_EVENT_LANG_CHANGED = 0x02;
-PUBLIC const int LB_SYS_EVENT_TIME_CHANGED = 0x04;
-PUBLIC const int LB_SYS_EVENT_REGION_CHANGED = 0x08;
-PUBLIC const int LB_SYS_EVENT_TTS_CHANGED = 0x10;
-PUBLIC const int LB_SYS_EVENT_PAUSED = 0x0100;
-PUBLIC const int LB_SYS_EVENT_RESUMED = 0x0200;
-PUBLIC const int LB_SYS_EVENT_MMC_STATUS_CHANGED = 0x0400;
-PUBLIC const int LB_SYS_EVENT_DELETED = 0x0800;
-
-static int send_lb_updated(const char *pkgname, const char *id, int w, int h)
-{
-       int ret = LB_STATUS_ERROR_INVALID;
-
-       if (s_info.is_slave < 0) {
-               /* Must to be checked the slave function first. */
-               s_info.updated.slave.lb = dlsym(RTLD_DEFAULT, "livebox_send_updated");
-               s_info.updated.slave.pd = dlsym(RTLD_DEFAULT, "livebox_send_desc_updated");
-               if (s_info.updated.slave.lb && s_info.updated.slave.pd) {
-                       s_info.is_slave = 1;
-                       DbgPrint("Slave detected\n");
-               } else {
-                       s_info.updated.app.lb = dlsym(RTLD_DEFAULT, "provider_app_lb_updated");
-                       s_info.updated.app.pd = dlsym(RTLD_DEFAULT, "provider_app_pd_updated");
-                       if (s_info.updated.app.lb && s_info.updated.app.pd) {
-                               s_info.is_slave = 0;
-                               DbgPrint("App detected\n");
-                       }
-               }
-       }
-
-       if (s_info.is_slave == 0) {
-               ret = s_info.updated.app.lb(id, w, h);
-       } else if (s_info.is_slave == 1) {
-               ret = s_info.updated.slave.lb(pkgname, id, w, h);
-       } else {
-               ret = provider_send_updated(pkgname, id, w, h);
-       }
-
-       return ret;
-}
-
-static int send_pd_updated(const char *pkgname, const char *id, const char *descfile)
-{
-       int ret = LB_STATUS_ERROR_INVALID;
-
-       if (s_info.is_slave < 0) {
-               /* Must to be checked the slave function first. */
-               s_info.updated.slave.lb = dlsym(RTLD_DEFAULT, "livebox_send_updated");
-               s_info.updated.slave.pd = dlsym(RTLD_DEFAULT, "livebox_send_desc_updated");
-               if (s_info.updated.slave.lb && s_info.updated.slave.pd) {
-                       s_info.is_slave = 1;
-                       DbgPrint("Slave detected\n");
-               } else {
-                       s_info.updated.app.lb = dlsym(RTLD_DEFAULT, "provider_app_lb_updated");
-                       s_info.updated.app.pd = dlsym(RTLD_DEFAULT, "provider_app_pd_updated");
-                       if (s_info.updated.app.lb && s_info.updated.app.pd) {
-                               s_info.is_slave = 0;
-                               DbgPrint("App detected\n");
-                       }
-               }
-       }
-
-       if (s_info.is_slave == 0) {
-               ret = s_info.updated.app.pd(id);
-       } else if (s_info.is_slave == 1) {
-               ret = s_info.updated.slave.pd(pkgname, id, descfile);
-       } else {
-               ret = provider_send_desc_updated(pkgname, id, descfile);
-       }
-
-       return ret;
-}
-
-static char *id_to_uri(const char *id)
-{
-       char *uri;
-       int uri_len;
-
-       uri_len = strlen(id) + strlen(FILE_SCHEMA) + 1;
-
-       uri = malloc(uri_len);
-       if (!uri) {
-               return NULL;
-       }
-
-       snprintf(uri, uri_len, FILE_SCHEMA "%s", id);
-       return uri;
-}
-
-PUBLIC struct livebox_desc *livebox_desc_open(const char *filename, int for_pd)
-{
-       struct livebox_desc *handle;
-       char *new_fname;
-
-       handle = calloc(1, sizeof(*handle));
-       if (!handle) {
-               ErrPrint("Error: %s\n", strerror(errno));
-               return NULL;
-       }
-
-       if (for_pd) {
-               int len;
-               len = strlen(filename) + strlen(".desc") + 1;
-               new_fname = malloc(len);
-               if (!new_fname) {
-                       ErrPrint("Error: %s\n", strerror(errno));
-                       free(handle);
-                       return NULL;
-               }
-               snprintf(new_fname, len, "%s.desc", filename);
-       } else {
-               new_fname = strdup(filename);
-               if (!new_fname) {
-                       ErrPrint("Error: %s\n", strerror(errno));
-                       free(handle);
-                       return NULL;
-               }
-       }
-
-       DbgPrint("Open a file %s with merge mode %s\n",
-                               new_fname,
-                               access(new_fname, F_OK) == 0 ? "enabled" : "disabled");
-
-       handle->fp = fopen(new_fname, "at");
-       free(new_fname);
-       if (!handle->fp) {
-               ErrPrint("Failed to open a file: %s\n", strerror(errno));
-               free(handle);
-               return NULL;
-       }
-
-       return handle;
-}
-
-PUBLIC int livebox_desc_close(struct livebox_desc *handle)
-{
-       struct dlist *l;
-       struct dlist *n;
-       struct block *block;
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       dlist_foreach_safe(handle->block_list, l, n, block) {
-               handle->block_list = dlist_remove(handle->block_list, l);
-
-               fprintf(handle->fp, "{\n");
-               if (block->type) {
-                       fprintf(handle->fp, "type=%s\n", block->type);
-               }
-
-               if (block->part) {
-                       fprintf(handle->fp, "part=%s\n", block->part);
-               }
-
-               if (block->data) {
-                       fprintf(handle->fp, "data=%s\n", block->data);
-               }
-
-               if (block->option) {
-                       fprintf(handle->fp, "option=%s\n", block->option);
-               }
-
-               if (block->id) {
-                       fprintf(handle->fp, "id=%s\n", block->id);
-               }
-
-               if (block->target_id) {
-                       fprintf(handle->fp, "target=%s\n", block->target_id);
-               }
-               fprintf(handle->fp, "}\n");
-
-               free(block->type);
-               free(block->part);
-               free(block->data);
-               free(block->option);
-               free(block->id);
-               free(block->target_id);
-               free(block);
-       }
-
-       if (fclose(handle->fp) != 0) {
-               ErrPrint("fclose: %s\n", strerror(errno));
-       }
-       free(handle);
-       return DBOX_STATUS_ERROR_NONE;
-}
-
-PUBLIC int livebox_desc_set_category(struct livebox_desc *handle, const char *id, const char *category)
-{
-       struct block *block;
-
-       if (!handle || !category) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       block = calloc(1, sizeof(*block));
-       if (!block) {
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->type = strdup(LB_DESC_TYPE_INFO);
-       if (!block->type) {
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->part = strdup("category");
-       if (!block->part) {
-               free(block->type);
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->data = strdup(category);
-       if (!block->data) {
-               free(block->type);
-               free(block->part);
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       if (id) {
-               block->id = strdup(id);
-               if (!block->id) {
-                       free(block->data);
-                       free(block->type);
-                       free(block->part);
-                       free(block);
-                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-               }
-       }
-
-       block->idx = handle->last_idx++;
-       handle->block_list = dlist_append(handle->block_list, block);
-       return block->idx;
-}
-
-PUBLIC int livebox_desc_set_size(struct livebox_desc *handle, const char *id, int w, int h)
-{
-       struct block *block;
-       char buffer[BUFSIZ];
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       block = calloc(1, sizeof(*block));
-       if (!block) {
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->type = strdup(LB_DESC_TYPE_INFO);
-       if (!block->type) {
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->part = strdup("size");
-       if (!block->part) {
-               free(block->type);
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       if (id) {
-               block->id = strdup(id);
-               if (!block->id) {
-                       free(block->part);
-                       free(block->type);
-                       free(block);
-                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-               }
-       }
-
-       snprintf(buffer, sizeof(buffer), "%dx%d", w, h);
-       block->data = strdup(buffer);
-       if (!block->data) {
-               free(block->part);
-               free(block->type);
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->idx = handle->last_idx++;
-       handle->block_list = dlist_append(handle->block_list, block);
-       return block->idx;
-}
-
-PUBLIC char *livebox_util_nl2br(const char *str)
-{
-       int len;
-       register int i;
-       char *ret;
-       char *ptr;
-
-       if (!str) {
-               return NULL;
-       }
-
-       len = strlen(str);
-       if (!len) {
-               return NULL;
-       }
-
-       ret = malloc(len + 1);
-       if (!ret) {
-               return NULL;
-       }
-
-       ptr = ret;
-       i = 0;
-       while (*str) {
-               switch (*str) {
-               case '\n':
-                       if (len - i < 5) {
-                               char *tmp;
-                               len += len;
-
-                               tmp = realloc(ret, len + 1);
-                               if (!tmp) {
-                                       free(ret);
-                                       return NULL;
-                               }
-
-                               ret = tmp;
-                               ptr = tmp + i;
-                       }
-
-                       strcpy(ptr, "<br>");
-                       ptr += 4;
-                       i += 4;
-                       break;
-               default:
-                       *ptr++ = *str;
-                       i++;
-                       break;
-               }
-
-               str++;
-       }
-       *ptr = '\0';
-
-       return ret;
-}
-
-PUBLIC int livebox_desc_set_id(struct livebox_desc *handle, int idx, const char *id)
-{
-       struct dlist *l;
-       struct block *block;
-
-       dlist_foreach(handle->block_list, l, block) {
-               if (block->idx == idx) {
-                       if (strcasecmp(block->type, LB_DESC_TYPE_SCRIPT)) {
-                               ErrPrint("Invalid block is used\n");
-                               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-                       }
-
-                       free(block->target_id);
-                       block->target_id = NULL;
-
-                       if (!id || !strlen(id)) {
-                               return DBOX_STATUS_ERROR_NONE;
-                       }
-
-                       block->target_id = strdup(id);
-                       if (!block->target_id) {
-                               ErrPrint("Heap: %s\n", strerror(errno));
-                               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-                       }
-
-                       return DBOX_STATUS_ERROR_NONE;
-               }
-       }
-
-       return DBOX_STATUS_ERROR_NOT_EXIST;
-}
-
-/*!
- * \return idx
- */
-PUBLIC int livebox_desc_add_block(struct livebox_desc *handle, const char *id, const char *type, const char *part, const char *data, const char *option)
-{
-       struct block *block;
-
-       if (!handle || !type) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (!part) {
-               part = "";
-       }
-
-       if (!data) {
-               data = "";
-       }
-
-       block = calloc(1, sizeof(*block));
-       if (!block) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->type = strdup(type);
-       if (!block->type) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->part = strdup(part);
-       if (!block->part) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               free(block->type);
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       block->data = strdup(data);
-       if (!block->data) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               free(block->type);
-               free(block->part);
-               free(block);
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       if (option) {
-               block->option = strdup(option);
-               if (!block->option) {
-                       ErrPrint("Heap: %s\n", strerror(errno));
-                       free(block->data);
-                       free(block->type);
-                       free(block->part);
-                       free(block);
-                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-               }
-       }
-
-       if (id) {
-               block->id = strdup(id);
-               if (!block->id) {
-                       ErrPrint("Heap: %s\n", strerror(errno));
-                       free(block->option);
-                       free(block->data);
-                       free(block->type);
-                       free(block->part);
-                       free(block);
-                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-               }
-       }
-
-       block->idx = handle->last_idx++;
-       handle->block_list = dlist_append(handle->block_list, block);
-       return block->idx;
-}
-
-PUBLIC int livebox_desc_del_block(struct livebox_desc *handle, int idx)
-{
-       struct dlist *l;
-       struct block *block;
-
-       if (!handle || idx < 0) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       dlist_foreach(handle->block_list, l, block) {
-               if (block->idx == idx) {
-                       handle->block_list = dlist_remove(handle->block_list, l);
-                       free(block->type);
-                       free(block->part);
-                       free(block->data);
-                       free(block->option);
-                       free(block->id);
-                       free(block->target_id);
-                       free(block);
-                       return DBOX_STATUS_ERROR_NONE;
-               }
-       }
-
-       return DBOX_STATUS_ERROR_NOT_EXIST;
-}
-
-static inline int event_handler_wrapper(struct livebox_buffer *buffer, struct buffer_event_data *event_info, void *data)
-{
-       const char *pkgname;
-       const char *id;
-       struct livebox_buffer_data *cbdata = data;
-       int ret;
-
-       pkgname = provider_buffer_pkgname(buffer);
-       if (!pkgname) {
-               ErrPrint("pkgname is not valid\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       id = provider_buffer_id(buffer);
-       if (!id) {
-               ErrPrint("id is not valid[%s]\n", pkgname);
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (cbdata->handler) {
-               ret = cbdata->handler(buffer, event_info, cbdata->cbdata);
-       } else {
-               ret = DBOX_STATUS_ERROR_FAULT;
-       }
-
-       switch (event_info->type) {
-       case BUFFER_EVENT_HIGHLIGHT:
-       case BUFFER_EVENT_HIGHLIGHT_NEXT:
-       case BUFFER_EVENT_HIGHLIGHT_PREV:
-       case BUFFER_EVENT_ACTIVATE:
-       case BUFFER_EVENT_ACTION_UP:
-       case BUFFER_EVENT_ACTION_DOWN:
-       case BUFFER_EVENT_SCROLL_UP:
-       case BUFFER_EVENT_SCROLL_MOVE:
-       case BUFFER_EVENT_SCROLL_DOWN:
-       case BUFFER_EVENT_UNHIGHLIGHT:
-       case BUFFER_EVENT_VALUE_CHANGE:
-       case BUFFER_EVENT_MOUSE:
-       case BUFFER_EVENT_BACK:
-       case BUFFER_EVENT_OVER:
-       case BUFFER_EVENT_READ:
-       case BUFFER_EVENT_ENABLE:
-       case BUFFER_EVENT_DISABLE:
-               DbgPrint("Accessibility event: %d\n", event_info->type);
-               if (ret < 0) {
-                       (void)provider_send_access_status(pkgname, id, DBOX_ACCESS_STATUS_ERROR);
-               } else {
-                       (void)provider_send_access_status(pkgname, id, ret);
-               }
-               break;
-       case BUFFER_EVENT_KEY_UP:
-       case BUFFER_EVENT_KEY_DOWN:
-       case BUFFER_EVENT_KEY_FOCUS_IN:
-       case BUFFER_EVENT_KEY_FOCUS_OUT:
-               DbgPrint("Key event: %d\n", event_info->type);
-               if (ret < 0) {
-                       (void)provider_send_key_status(pkgname, id, DBOX_KEY_STATUS_ERROR);
-               } else {
-                       (void)provider_send_key_status(pkgname, id, ret);
-               }
-               break;
-       default:
-               break;
-       }
-
-       return ret;
-}
-
-static inline int default_event_handler(struct livebox_buffer *buffer, struct buffer_event_data *event_info, void *data)
-{
-       /* NOP */
-       return 0;
-}
-
-PUBLIC struct livebox_buffer *livebox_acquire_buffer(const char *filename, int is_pd, int width, int height, int pixels, int auto_align, int (*handler)(struct livebox_buffer *, struct buffer_event_data *, void *), void *data)
-{
-       struct livebox_buffer_data *user_data;
-       const char *pkgname;
-       struct livebox_buffer *handle;
-       char *uri;
-
-       if (!filename || !width || !height) {
-               ErrPrint("Invalid argument: %p(%dx%d)\n", filename, width, height);
-               return NULL;
-       }
-
-       user_data = calloc(1, sizeof(*user_data));
-       if (!user_data) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               return NULL;
-       }
-
-       user_data->is_pd = is_pd;
-       user_data->handler = handler ? handler : default_event_handler;
-       user_data->cbdata = data;
-
-       uri = id_to_uri(filename);
-       if (!uri) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               free(user_data);
-               return NULL;
-       }
-
-       if (!s_info.find_pkgname) {
-               s_info.find_pkgname = dlsym(RTLD_DEFAULT, "livebox_find_pkgname");
-               if (!s_info.find_pkgname) {
-                       ErrPrint("Failed to find a \"livebox_find_pkgname\"\n");
-                       free(user_data);
-                       free(uri);
-                       return NULL;
-               }
-       }
-
-       pkgname = s_info.find_pkgname(uri);
-       if (!pkgname) {
-               ErrPrint("Invalid Request\n");
-               free(user_data);
-               free(uri);
-               return NULL;
-       }
-
-       handle = provider_buffer_create((!!is_pd) ? TYPE_PD : TYPE_LB, pkgname, uri, auto_align, event_handler_wrapper, user_data);
-       free(uri);
-       if (!handle) {
-               free(user_data);
-               return NULL;
-       }
-
-       if (provider_buffer_acquire(handle, width, height, pixels) < 0) {
-               provider_buffer_destroy(handle);
-               free(user_data);
-               return NULL;
-       }
-
-       (void)provider_buffer_set_user_data(handle, user_data);
-       return handle;
-}
-
-PUBLIC int livebox_request_update(const char *filename)
-{
-       char *uri;
-       int ret;
-
-       if (!filename) {
-               ErrPrint("Invalid argument\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       uri = id_to_uri(filename);
-       if (!uri) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       if (!s_info.request_update_by_id) {
-               s_info.request_update_by_id = dlsym(RTLD_DEFAULT, "livebox_request_update_by_id");
-               if (!s_info.request_update_by_id) {
-                       ErrPrint("\"livebox_request_update_by_id\" is not exists\n");
-                       free(uri);
-                       return DBOX_STATUS_ERROR_FAULT;
-               }
-       }
-       ret = s_info.request_update_by_id(uri);
-       free(uri);
-       return ret;
-}
-
-int livebox_conf_auto_align(void)
-{
-       if (!s_info.conf) {
-               struct conf *(*livebox_conf_get_conf)(void);
-               livebox_conf_get_conf = dlsym(RTLD_DEFAULT, "livebox_conf_get_conf");
-               if (!livebox_conf_get_conf) {
-                       ErrPrint("g_conf is not found\n");
-                       return 1;
-               }
-
-               s_info.conf = livebox_conf_get_conf();
-               if (!s_info.conf) {
-                       ErrPrint("g_conf is not found\n");
-                       return 1;
-               }
-
-               DbgPrint("Auto align: %d\n", s_info.conf->auto_align);
-       }
-
-       return s_info.conf->auto_align;
-}
-
-PUBLIC int livebox_conf_premultiplied_alpha(void)
-{
-       if (!s_info.conf) {
-               struct conf *(*livebox_conf_get_conf)(void);
-               livebox_conf_get_conf = dlsym(RTLD_DEFAULT, "livebox_conf_get_conf");
-               if (!livebox_conf_get_conf) {
-                       ErrPrint("g_conf is not found\n");
-                       return 1;
-               }
-
-               s_info.conf = livebox_conf_get_conf();
-               if (!s_info.conf) {
-                       ErrPrint("g_conf is not found\n");
-                       return 1;
-               }
-
-               DbgPrint("Premultiplied alpha: %d\n", s_info.conf->premultiplied);
-       }
-
-       return s_info.conf->premultiplied;
-}
-
-PUBLIC unsigned long livebox_pixmap_id(struct livebox_buffer *handle)
-{
-       return provider_buffer_pixmap_id(handle);
-}
-
-PUBLIC int livebox_release_buffer(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (user_data) {
-               free(user_data->content);
-               free(user_data->title);
-               free(user_data->icon);
-               free(user_data->name);
-               free(user_data);
-               provider_buffer_set_user_data(handle, NULL);
-       }
-
-       (void)provider_buffer_release(handle);
-       (void)provider_buffer_destroy(handle);
-
-       DbgPrint("Release buffer\n");
-       return 0;
-}
-
-PUBLIC void *livebox_ref_buffer(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-       void *data;
-       int w, h, size;
-       int ret;
-
-       if (!handle) {
-               return NULL;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data) {
-               return NULL;
-       }
-
-       if (user_data->accelerated) {
-               DbgPrint("H/W accelerated buffer is allocated\n");
-               return NULL;
-       }
-
-       ret = provider_buffer_get_size(handle, &w, &h, &size);
-
-       data = provider_buffer_ref(handle);
-       if (data && !ret && w > 0 && h > 0 && size > 0) {
-               memset(data, 0, w * h * size);
-               (void)provider_buffer_sync(handle);
-       }
-
-       DbgPrint("Ref buffer %ds%d(%d)\n", w, h, size);
-       return data;
-}
-
-PUBLIC int livebox_unref_buffer(void *buffer)
-{
-       if (!buffer) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       DbgPrint("Unref buffer\n");
-       return provider_buffer_unref(buffer);
-}
-
-PUBLIC int livebox_sync_buffer(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-       const char *pkgname;
-       const char *id;
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data) {
-               ErrPrint("Invalid buffer\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (user_data->accelerated) {
-               DbgPrint("H/W Buffer allocated. skip the sync buffer\n");
-               return DBOX_STATUS_ERROR_NONE;
-       }
-
-       pkgname = provider_buffer_pkgname(handle);
-       if (!pkgname) {
-               ErrPrint("Invalid buffer handler\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       id = provider_buffer_id(handle);
-       if (!id) {
-               ErrPrint("Invalid buffer handler\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       (void)provider_buffer_sync(handle);
-
-       if (user_data->is_pd == 1) {
-               if (send_pd_updated(pkgname, id, NULL) < 0) {
-                       ErrPrint("Failed to send PD updated (%s)\n", id);
-               }
-       } else {
-               int w;
-               int h;
-               int pixel_size;
-
-               if (provider_buffer_get_size(handle, &w, &h, &pixel_size) < 0) {
-                       ErrPrint("Failed to get size (%s)\n", id);
-               }
-
-               if (send_lb_updated(pkgname, id, w, h) < 0) {
-                       ErrPrint("Failed to send updated (%s)\n", id);
-               }
-       }
-
-       return DBOX_STATUS_ERROR_NONE;
-}
-
-PUBLIC int livebox_support_hw_buffer(struct livebox_buffer *handle)
-{
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       return provider_buffer_pixmap_is_support_hw(handle);
-}
-
-PUBLIC int livebox_create_hw_buffer(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-       int ret;
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (user_data->accelerated) {
-               return DBOX_STATUS_ERROR_ALREADY;
-       }
-
-       ret = provider_buffer_pixmap_create_hw(handle);
-       user_data->accelerated = (ret == 0);
-       return ret;
-}
-
-PUBLIC int livebox_destroy_hw_buffer(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-
-       if (!handle) {
-               LOGD("handle is NULL\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data || !user_data->accelerated) {
-               LOGD("user_data is NULL\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data->accelerated = 0;
-
-       return provider_buffer_pixmap_destroy_hw(handle);
-}
-
-PUBLIC void *livebox_buffer_hw_buffer(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-
-       if (!handle) {
-               return NULL;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data || !user_data->accelerated) {
-               return NULL;
-       }
-
-       return provider_buffer_pixmap_hw_addr(handle);
-}
-
-PUBLIC int livebox_buffer_pre_render(struct livebox_buffer *handle)
-{
-       struct livebox_buffer_data *user_data;
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (!user_data->accelerated) {
-               return DBOX_STATUS_ERROR_NONE;
-       }
-
-       /*!
-        * \note
-        * Do preprocessing for accessing the H/W render buffer
-        */
-       return provider_buffer_pre_render(handle);
-}
-
-PUBLIC int livebox_buffer_post_render(struct livebox_buffer *handle)
-{
-       int ret;
-       const char *pkgname;
-       const char *id;
-       struct livebox_buffer_data *user_data;
-
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       user_data = provider_buffer_user_data(handle);
-       if (!user_data) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (!user_data->accelerated) {
-               return DBOX_STATUS_ERROR_NONE;
-       }
-
-       pkgname = provider_buffer_pkgname(handle);
-       if (!pkgname) {
-               ErrPrint("Invalid buffer handle\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       id = provider_buffer_id(handle);
-       if (!id) {
-               ErrPrint("Invalid buffer handler\n");
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       ret = provider_buffer_post_render(handle);
-       if (ret < 0) {
-               ErrPrint("Failed to post render processing\n");
-               return ret;
-       }
-
-       if (user_data->is_pd == 1) {
-               if (send_pd_updated(pkgname, id, NULL) < 0) {
-                       ErrPrint("Failed to send PD updated (%s)\n", id);
-               }
-       } else {
-               int w;
-               int h;
-               int pixel_size;
-
-               if (provider_buffer_get_size(handle, &w, &h, &pixel_size) < 0) {
-                       ErrPrint("Failed to get size (%s)\n", id);
-               }
-
-               if (send_lb_updated(pkgname, id, w, h) < 0) {
-                       ErrPrint("Failed to send updated (%s)\n", id);
-               }
-       }
-
-       return DBOX_STATUS_ERROR_NONE;
-}
-
-PUBLIC int livebox_buffer_stride(struct livebox_buffer *handle)
-{
-       if (!handle) {
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       return provider_buffer_stride(handle);
-}
-
-PUBLIC int livebox_content_is_updated(const char *filename, int is_pd)
-{
-       if (!s_info.trigger_update_monitor) {
-               s_info.trigger_update_monitor = dlsym(RTLD_DEFAULT, "livebox_trigger_update_monitor");
-               if (!s_info.trigger_update_monitor) {
-                       ErrPrint("Trigger update monitor function is not exists\n");
-                       return DBOX_STATUS_ERROR_FAULT;
-               }
-       }
-
-       return s_info.trigger_update_monitor(filename, is_pd);
-}
-
-PUBLIC int livebox_request_close_pd(const char *pkgname, const char *id, int reason)
-{
-       char *uri;
-       int schema_len = strlen(FILE_SCHEMA);
-       int ret;
-
-       if (!pkgname || !id) {
-               ErrPrint("Invalid parameters (%s) (%s)\n", pkgname, id);
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       if (strncmp(id, FILE_SCHEMA, schema_len)) {
-               uri = id_to_uri(id);
-               if (!uri) {
-                       ErrPrint("Heap: %s\n", strerror(errno));
-                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-               }
-       } else {
-               uri = strdup(id);
-               if (!uri) {
-                       ErrPrint("Heap: %s\n", strerror(errno));
-                       return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-               }
-       }
-
-       ret = provider_send_request_close_pd(pkgname, uri, reason);
-       free(uri);
-       return ret;
-}
-
-PUBLIC int livebox_freeze_scroller(const char *pkgname, const char *id)
-{
-       char *uri;
-       int ret;
-
-       uri = id_to_uri(id);
-       if (!uri) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       ret = provider_send_hold_scroll(pkgname, uri, 1);
-       free(uri);
-       return ret;
-}
-
-PUBLIC int livebox_release_scroller(const char *pkgname, const char *id)
-{
-       char *uri;
-       int ret;
-
-       uri = id_to_uri(id);
-       if (!uri) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       ret = provider_send_hold_scroll(pkgname, uri, 0);
-       free(uri);
-       return ret;
-}
-
-PUBLIC int livebox_set_extra_info(const char *id, const char *content, const char *title, const char *icon, const char *name)
-{
-       struct livebox_buffer *handle;
-       const char *pkgname;
-       char *uri;
-
-       uri = id_to_uri(id);
-       if (!uri) {
-               ErrPrint("Heap: %s\n", strerror(errno));
-               return DBOX_STATUS_ERROR_OUT_OF_MEMORY;
-       }
-
-       pkgname = s_info.find_pkgname(uri);
-       if (!pkgname) {
-               ErrPrint("Failed to find a package (%s)\n", uri);
-               free(uri);
-               return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-       }
-
-       handle = provider_buffer_find_buffer(TYPE_LB, pkgname, uri);
-       if (handle) {
-               struct livebox_buffer_data *user_data;
-
-               user_data = provider_buffer_user_data(handle);
-               if (!user_data) {
-                       ErrPrint("User data is not available\n");
-                       free(uri);
-                       return DBOX_STATUS_ERROR_FAULT;
-               }
-
-               if (content && strlen(content)) {
-                       char *_content;
-
-                       _content = strdup(content);
-                       if (_content) {
-                               if (user_data->content) {
-                                       free(user_data->content);
-                               }
-
-                               user_data->content = _content;
-                       } else {
-                               ErrPrint("Heap: %s\n", strerror(errno));
-                       }
-               }
-
-               if (title && strlen(title)) {
-                       char *_title;
-
-                       _title = strdup(title);
-                       if (_title) {
-                               if (user_data->title) {
-                                       free(user_data->title);
-                               }
-
-                               user_data->title = _title;
-                       } else {
-                               ErrPrint("Heap: %s\n", strerror(errno));
-                       }
-               }
-
-               if (icon && strlen(icon)) {
-                       char *_icon;
-
-                       _icon = strdup(icon);
-                       if (_icon) {
-                               if (user_data->icon) {
-                                       free(user_data->icon);
-                               }
-
-                               user_data->icon = _icon;
-                       } else {
-                               ErrPrint("Heap: %s\n", strerror(errno));
-                       }
-               }
-
-               if (name && strlen(name)) {
-                       char *_name;
-
-                       _name = strdup(name);
-                       if (_name) {
-                               if (user_data->name) {
-                                       free(user_data->name);
-                               }
-
-                               user_data->name = _name;
-                       } else {
-                               ErrPrint("Heap: %s\n", strerror(errno));
-                       }
-               }
-
-               if (provider_send_extra_info(pkgname, uri, -1.0f, user_data->content, user_data->title, user_data->icon, user_data->name) < 0) {
-                       ErrPrint("Failed to send extra info (%s)\n", id);
-               }
-
-               free(uri);
-               return DBOX_STATUS_ERROR_NONE;
-       }
-       free(uri);
-
-       if (!s_info.update_extra_info) {
-               s_info.update_extra_info = dlsym(RTLD_DEFAULT, "livebox_update_extra_info");
-               if (!s_info.update_extra_info) {
-                       ErrPrint("Failed to find a \"livebox_update_extra_info\"\n");
-                       return DBOX_STATUS_ERROR_INVALID_PARAMETER;
-               }
-       }
-
-       return s_info.update_extra_info(id, content, title, icon, name);
-}
-
-/* End of a file */
index f1187d1..9bb82f1 100644 (file)
@@ -4,10 +4,10 @@
 #include <unistd.h>
 
 #include <dlog.h>
-#include <livebox-service.h>
-#include <livebox-errno.h>
+#include <dynamicbox_service.h>
+#include <dynamicbox_errno.h>
 
-#include "livebox.h"
+#include "dynamicbox.h"
 #include "debug.h"
 
 #define QUALITY_N_COMPRESS "quality=100 compress=1"
index fe6f669..eae760f 100644 (file)
@@ -29,8 +29,7 @@
 #include <dynamicbox_errno.h>
 #include <dynamicbox_service.h>
 
-#include "livebox.h"
-#include "livebox_product.h"
+#include "dynamicbox.h"
 #include "debug.h"
 
 #define IS_PD 1
@@ -51,11 +50,11 @@ static struct static_info {
  */
 struct info {
        char *id; /*!< Identification */
-       struct livebox_buffer *handle; /*!< Livebox buffer handle */
+       struct dynamicbox_buffer *handle; /*!< Livebox buffer handle */
        int is_hw; /*!< 1 if a buffer is created on the H/W accelerated place or 0 */
        Ecore_Evas *ee;
        Evas *e;
-       int is_pd;
+       int is_gbar;
        int deleted;
        int w;
        int h;
@@ -76,7 +75,7 @@ static inline Evas_Object *get_highlighted_object(Evas_Object *obj)
  * \note
  * Every user event (mouse) on the buffer will be passed via this event callback
  */
-static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_data *event_info, void *data)
+static int event_handler_cb(struct dynamicbox_buffer *handler, struct dynamicbox_buffer_event_data *event_info, void *data)
 {
        struct info *info = data;
        Elm_Access_Action_Info action_info;
@@ -96,33 +95,33 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
         * Feed up events
         */
        switch (event_info->type) {
-       case BUFFER_EVENT_ON_HOLD:
+       case DBOX_BUFFER_EVENT_ON_HOLD:
                flags = evas_event_default_flags_get(info->e);
                flags |= EVAS_EVENT_FLAG_ON_HOLD;
                evas_event_default_flags_set(info->e, flags);
                break;
-       case BUFFER_EVENT_OFF_HOLD:
+       case DBOX_BUFFER_EVENT_OFF_HOLD:
                flags = evas_event_default_flags_get(info->e);
                flags &= ~EVAS_EVENT_FLAG_ON_HOLD;
                evas_event_default_flags_set(info->e, flags);
                break;
-       case BUFFER_EVENT_ON_SCROLL:
+       case DBOX_BUFFER_EVENT_ON_SCROLL:
                flags = evas_event_default_flags_get(info->e);
                flags |= EVAS_EVENT_FLAG_ON_SCROLL;
                evas_event_default_flags_set(info->e, flags);
                break;
-       case BUFFER_EVENT_OFF_SCROLL:
+       case DBOX_BUFFER_EVENT_OFF_SCROLL:
                flags = evas_event_default_flags_get(info->e);
                flags &= ~EVAS_EVENT_FLAG_ON_SCROLL;
                evas_event_default_flags_set(info->e, flags);
                break;
-       case BUFFER_EVENT_ENTER:
+       case DBOX_BUFFER_EVENT_ENTER:
                evas_event_feed_mouse_in(info->e, event_info->timestamp * 1000, NULL);
                break;
-       case BUFFER_EVENT_LEAVE:
+       case DBOX_BUFFER_EVENT_LEAVE:
                evas_event_feed_mouse_out(info->e, event_info->timestamp * 1000, NULL);
                break;
-       case BUFFER_EVENT_DOWN:
+       case DBOX_BUFFER_EVENT_DOWN:
                /*!
                 * \note
                 * Calculate the event occurred X & Y on the buffer
@@ -130,14 +129,14 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                evas_event_feed_mouse_move(info->e, event_info->info.pointer.x, event_info->info.pointer.y, event_info->timestamp * 1000, NULL);
                evas_event_feed_mouse_down(info->e, 1, EVAS_BUTTON_NONE, event_info->timestamp * 1000, NULL); /* + 0.2f just for fake event */
                break;
-       case BUFFER_EVENT_MOVE:
+       case DBOX_BUFFER_EVENT_MOVE:
                /*!
                 * \note
                 * Calculate the event occurred X & Y on the buffer
                 */
                evas_event_feed_mouse_move(info->e, event_info->info.pointer.x, event_info->info.pointer.y, event_info->timestamp * 1000, NULL);
                break;
-       case BUFFER_EVENT_UP:
+       case DBOX_BUFFER_EVENT_UP:
                evas_event_feed_mouse_move(info->e, event_info->info.pointer.x, event_info->info.pointer.y, event_info->timestamp * 1000, NULL);
                evas_event_feed_mouse_up(info->e, 1, EVAS_BUTTON_NONE, event_info->timestamp * 1000, NULL);
 
@@ -146,7 +145,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                flags &= ~EVAS_EVENT_FLAG_ON_HOLD;
                evas_event_default_flags_set(info->e, flags);
                break;
-       case BUFFER_EVENT_HIGHLIGHT:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -174,7 +173,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                        ret = DBOX_ACCESS_STATUS_ERROR;
                }
                break;
-       case BUFFER_EVENT_HIGHLIGHT_NEXT:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_NEXT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -186,7 +185,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_LAST : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_HIGHLIGHT_PREV:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_PREV:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -198,7 +197,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_FIRST : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ACTIVATE:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTIVATE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -209,7 +208,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ACTION_UP:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTION_UP:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -220,7 +219,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ACTION_DOWN:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTION_DOWN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -231,7 +230,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_SCROLL_UP:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_UP:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -245,7 +244,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_SCROLL_MOVE:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_MOVE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -259,7 +258,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_SCROLL_DOWN:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_DOWN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -273,7 +272,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_UNHIGHLIGHT:
+       case DBOX_BUFFER_EVENT_ACCESS_UNHIGHLIGHT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -284,7 +283,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_VALUE_CHANGE:
+       case DBOX_BUFFER_EVENT_ACCESS_VALUE_CHANGE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -298,7 +297,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_MOUSE:
+       case DBOX_BUFFER_EVENT_ACCESS_MOUSE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -312,7 +311,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_BACK:
+       case DBOX_BUFFER_EVENT_ACCESS_BACK:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -326,7 +325,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_OVER:
+       case DBOX_BUFFER_EVENT_ACCESS_OVER:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -340,7 +339,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_READ:
+       case DBOX_BUFFER_EVENT_ACCESS_READ:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -354,7 +353,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ENABLE:
+       case DBOX_BUFFER_EVENT_ACCESS_ENABLE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -368,7 +367,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_DISABLE:
+       case DBOX_BUFFER_EVENT_ACCESS_DISABLE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -382,7 +381,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                ret = elm_access_action(parent_elm, action_type, &action_info);
                ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_KEY_DOWN:
+       case DBOX_BUFFER_EVENT_KEY_DOWN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -403,7 +402,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                }
                ret = DBOX_KEY_STATUS_ERROR;
                break;
-       case BUFFER_EVENT_KEY_UP:
+       case DBOX_BUFFER_EVENT_KEY_UP:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -424,7 +423,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                }
                ret = DBOX_KEY_STATUS_ERROR;
                break;
-       case BUFFER_EVENT_KEY_FOCUS_IN:
+       case DBOX_BUFFER_EVENT_KEY_FOCUS_IN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -445,7 +444,7 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                }
                ret = DBOX_KEY_STATUS_ERROR;
                break;
-       case BUFFER_EVENT_KEY_FOCUS_OUT:
+       case DBOX_BUFFER_EVENT_KEY_FOCUS_OUT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
                        ret = DBOX_ACCESS_STATUS_ERROR;
@@ -487,17 +486,17 @@ static void *alloc_fb(void *data, int size)
        /*!
         * Acquire a buffer for canvas.
         */
-       info->handle = livebox_acquire_buffer(info->id, info->is_pd,
-                                       info->w, info->h, sizeof(int), (livebox_conf_auto_align() || !s_info.alloc_canvas_with_stride),
+       info->handle = dynamicbox_acquire_buffer(info->id, info->is_gbar,
+                                       info->w, info->h, sizeof(int), (dynamicbox_conf_auto_align() || !s_info.alloc_canvas_with_stride),
                                        event_handler_cb, info);
 
        /*!
         * If it supports the H/W accelerated buffer,
         * Use it.
         */
-       if (livebox_support_hw_buffer(info->handle)) {
-               if (livebox_create_hw_buffer(info->handle) == 0) {
-                       buffer = livebox_buffer_hw_buffer(info->handle);
+       if (dynamicbox_support_hw_buffer(info->handle)) {
+               if (dynamicbox_create_hw_buffer(info->handle) == 0) {
+                       buffer = dynamicbox_buffer_hw_buffer(info->handle);
                        if (buffer) {
                                LOGD("HW Accelerated buffer is created %p, (%dx%d)\n", info, info->w, info->h);
                                info->is_hw = 1;
@@ -511,7 +510,7 @@ static void *alloc_fb(void *data, int size)
        /*!
         * Or use the buffer of a S/W backend.
         */
-       buffer = livebox_ref_buffer(info->handle);
+       buffer = dynamicbox_ref_buffer(info->handle);
        LOGD("SW buffer is created (%dx%d)\n", info->w, info->h);
        info->is_hw = 0;
        return buffer;
@@ -527,7 +526,7 @@ static void *alloc_stride_fb(void *data, int size, int *stride, int *bpp)
                int _stride;
 
                *bpp = sizeof(int);
-               _stride = livebox_buffer_stride(info->handle);
+               _stride = dynamicbox_buffer_stride(info->handle);
                if (_stride < 0) {
                        _stride = info->w * *bpp;
                }
@@ -549,15 +548,15 @@ static void free_fb(void *data, void *ptr)
        }
 
        if (info->is_hw) {
-               if (livebox_destroy_hw_buffer(info->handle) == 0) {
+               if (dynamicbox_destroy_hw_buffer(info->handle) == 0) {
                        LOGD("HW Accelerated buffer is destroyed\n");
                }
        } else {
                LOGD("SW buffer is destroyed, %p\n", info);
-               livebox_unref_buffer(ptr);
+               dynamicbox_unref_buffer(ptr);
        }
 
-       livebox_release_buffer(info->handle);
+       dynamicbox_release_buffer(info->handle);
        info->handle = NULL;
 
        if (info->deleted) {
@@ -576,7 +575,7 @@ static void pre_render_cb(void *data, Evas *e, void *event_info)
                return;
        }
 
-       if (livebox_conf_premultiplied_alpha()) {
+       if (dynamicbox_conf_premultiplied_alpha()) {
                Evas_Coord w;
                Evas_Coord h;
 
@@ -585,7 +584,7 @@ static void pre_render_cb(void *data, Evas *e, void *event_info)
        }
 
        if (info->is_hw) {
-               livebox_buffer_pre_render(info->handle);
+               dynamicbox_buffer_pre_render(info->handle);
        }
 }
 
@@ -597,7 +596,7 @@ static void post_render_cb(void *data, Evas *e, void *event_info)
                return;
        }
 
-       if (livebox_conf_premultiplied_alpha()) {
+       if (dynamicbox_conf_premultiplied_alpha()) {
                void *canvas;
                int x, y, w, h;
 
@@ -613,9 +612,9 @@ static void post_render_cb(void *data, Evas *e, void *event_info)
        }
 
        if (info->is_hw) {
-               livebox_buffer_post_render(info->handle);
+               dynamicbox_buffer_post_render(info->handle);
        } else {
-               livebox_sync_buffer(info->handle);
+               dynamicbox_sync_buffer(info->handle);
        }
 }
 
@@ -638,7 +637,7 @@ static void ecore_evas_free_cb(Ecore_Evas *ee)
        info->ee = NULL;
 }
 
-PUBLIC Evas_Object *livebox_get_evas_object(const char *id, int is_pd)
+PUBLIC void *dynamicbox_get_evas_object(const char *id, int is_gbar)
 {
        struct info *info;
        Evas_Object *rect;
@@ -678,7 +677,7 @@ PUBLIC Evas_Object *livebox_get_evas_object(const char *id, int is_pd)
                return NULL;
        }
 
-       info->is_pd = is_pd;
+       info->is_gbar = is_gbar;
 
        /*!
         * Size information must be initialized before call the ecore_evas_buffer_new.
@@ -686,7 +685,7 @@ PUBLIC Evas_Object *livebox_get_evas_object(const char *id, int is_pd)
        info->w = 1;
        info->h = 1;
 
-       if (!livebox_conf_auto_align() && s_info.alloc_canvas_with_stride) {
+       if (!dynamicbox_conf_auto_align() && s_info.alloc_canvas_with_stride) {
                info->ee = s_info.alloc_canvas_with_stride(1, 1, alloc_stride_fb, free_fb, info);
        } else if (s_info.alloc_canvas) {
                info->ee = s_info.alloc_canvas(1, 1, alloc_fb, free_fb, info);
index 109170b..bbc240e 100644 (file)
@@ -5,10 +5,10 @@
 #include <Evas.h>
 
 #include <dlog.h>
-#include <livebox-errno.h>
-#include <livebox-service.h>
+#include <dynamicbox_errno.h>
+#include <dynamicbox_service.h>
 
-#include "livebox.h"
+#include "dynamicbox.h"
 #include "debug.h"
 
 #define IS_PD 1
  */
 struct info {
        char *id; /*!< Identification */
-       struct livebox_buffer *handle; /*!< Livebox buffer handle */
+       struct dynamicbox_buffer *handle; /*!< Livebox buffer handle */
        int is_hw; /*!< 1 if a buffer is created on the H/W accelerated place or 0 */
        Ecore_Evas *ee;
        Evas *e;
-       int is_pd;
+       int is_gbar;
 };
 
 static inline Evas_Object *get_highlighted_object(Evas_Object *obj)
@@ -43,7 +43,7 @@ static inline Evas_Object *get_highlighted_object(Evas_Object *obj)
  * \note
  * Every user event (mouse) on the buffer will be passed via this event callback
  */
-static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_data *event_info, void *data)
+static int event_handler_cb(struct dynamicbox_buffer *handler, struct dynamicbox_buffer_event_data *event_info, void *data)
 {
        struct info *info = data;
        Elm_Access_Action_Info action_info;
@@ -62,13 +62,13 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
         * Feed up events
         */
        switch (event_info->type) {
-       case BUFFER_EVENT_ENTER:
+       case DBOX_BUFFER_EVENT_ENTER:
                evas_event_feed_mouse_in(info->e, event_info->timestamp * 1000, NULL);
                break;
-       case BUFFER_EVENT_LEAVE:
+       case DBOX_BUFFER_EVENT_LEAVE:
                evas_event_feed_mouse_out(info->e, event_info->timestamp * 1000, NULL);
                break;
-       case BUFFER_EVENT_DOWN:
+       case DBOX_BUFFER_EVENT_DOWN:
                /*!
                 * \note
                 * Calculate the event occurred X & Y on the buffer
@@ -76,21 +76,21 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                evas_event_feed_mouse_move(info->e, event_info->info.pointer.x, event_info->info.pointer.y, (event_info->timestamp - 0.001f) * 1000, NULL); /* + 0.1f just for fake event */
                evas_event_feed_mouse_down(info->e, 1, EVAS_BUTTON_NONE, event_info->timestamp * 1000, NULL); /* + 0.2f just for fake event */
                break;
-       case BUFFER_EVENT_MOVE:
+       case DBOX_BUFFER_EVENT_MOVE:
                /*!
                 * \note
                 * Calculate the event occurred X & Y on the buffer
                 */
                evas_event_feed_mouse_move(info->e, event_info->info.pointer.x, event_info->info.pointer.y, event_info->timestamp * 1000, NULL);
                break;
-       case BUFFER_EVENT_UP:
+       case DBOX_BUFFER_EVENT_UP:
                evas_event_feed_mouse_move(info->e, event_info->info.pointer.x, event_info->info.pointer.y, event_info->timestamp * 1000, NULL);
                evas_event_feed_mouse_up(info->e, 1, EVAS_BUTTON_NONE, (event_info->timestamp + 0.001f) * 1000, NULL);
                break;
-       case BUFFER_EVENT_HIGHLIGHT:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
@@ -105,77 +105,77 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                if (ret == EINA_TRUE) {
                        if (!get_highlighted_object(parent_elm)) {
                                LOGE("Highlighted object is not found\n");
-                               ret = LB_ACCESS_STATUS_ERROR;
+                               ret = DBOX_ACCESS_STATUS_ERROR;
                        } else {
                                LOGD("Highlighted object is found\n");
-                               ret = LB_ACCESS_STATUS_DONE;
+                               ret = DBOX_ACCESS_STATUS_DONE;
                        }
                } else {
                        LOGE("Action error\n");
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                }
                break;
-       case BUFFER_EVENT_HIGHLIGHT_NEXT:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_NEXT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
                action_type = ELM_ACCESS_ACTION_HIGHLIGHT_NEXT;
                action_info.highlight_cycle = EINA_FALSE;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_LAST : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_LAST : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_HIGHLIGHT_PREV:
+       case DBOX_BUFFER_EVENT_ACCESS_HIGHLIGHT_PREV:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
                action_type = ELM_ACCESS_ACTION_HIGHLIGHT_PREV;
                action_info.highlight_cycle = EINA_FALSE;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_FIRST : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_FIRST : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ACTIVATE:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTIVATE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
                action_type = ELM_ACCESS_ACTION_ACTIVATE;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ACTION_UP:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTION_UP:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
                action_type = ELM_ACCESS_ACTION_UP;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_ACTION_DOWN:
+       case DBOX_BUFFER_EVENT_ACCESS_ACTION_DOWN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
                action_type = ELM_ACCESS_ACTION_DOWN;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_SCROLL_UP:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_UP:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
@@ -184,12 +184,12 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                action_info.y = event_info->info.pointer.y;
                action_info.mouse_type = 2;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_SCROLL_MOVE:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_MOVE:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
@@ -198,12 +198,12 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                action_info.y = event_info->info.pointer.y;
                action_info.mouse_type = 1;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_SCROLL_DOWN:
+       case DBOX_BUFFER_EVENT_ACCESS_SCROLL_DOWN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
@@ -212,54 +212,54 @@ static int event_handler_cb(struct livebox_buffer *handler, struct buffer_event_
                action_info.y = event_info->info.pointer.y;
                action_info.mouse_type = 0;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_UNHIGHLIGHT:
+       case DBOX_BUFFER_EVENT_ACCESS_UNHIGHLIGHT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
                memset(&action_info, 0, sizeof(action_info));
                action_type = ELM_ACCESS_ACTION_UNHIGHLIGHT;
                ret = elm_access_action(parent_elm, action_type, &action_info);
-               ret = (ret == EINA_FALSE) ? LB_ACCESS_STATUS_ERROR : LB_ACCESS_STATUS_DONE;
+               ret = (ret == EINA_FALSE) ? DBOX_ACCESS_STATUS_ERROR : DBOX_ACCESS_STATUS_DONE;
                break;
-       case BUFFER_EVENT_KEY_DOWN:
+       case DBOX_BUFFER_EVENT_KEY_DOWN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
 
-               ret = LB_KEY_STATUS_ERROR;
+               ret = DBOX_KEY_STATUS_ERROR;
                break;
-       case BUFFER_EVENT_KEY_UP:
+       case DBOX_BUFFER_EVENT_KEY_UP:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
 
-               ret = LB_KEY_STATUS_ERROR;
+               ret = DBOX_KEY_STATUS_ERROR;
                break;
-       case BUFFER_EVENT_KEY_FOCUS_IN:
+       case DBOX_BUFFER_EVENT_KEY_FOCUS_IN:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
 
-               ret = LB_KEY_STATUS_ERROR;
+               ret = DBOX_KEY_STATUS_ERROR;
                break;
-       case BUFFER_EVENT_KEY_FOCUS_OUT:
+       case DBOX_BUFFER_EVENT_KEY_FOCUS_OUT:
                parent_elm = ecore_evas_data_get(info->ee, "dynamic,box,win");
                if (!parent_elm) {
-                       ret = LB_ACCESS_STATUS_ERROR;
+                       ret = DBOX_ACCESS_STATUS_ERROR;
                        break;
                }
 
-               ret = LB_KEY_STATUS_ERROR;
+               ret = DBOX_KEY_STATUS_ERROR;
                break;
        default:
                LOGD("Unhandled buffer event (%d)\n", event_info->type);
@@ -286,7 +286,7 @@ static void *alloc_fb(void *data, int size)
        /*!
         * Acquire a buffer for canvas.
         */
-       info->handle = livebox_acquire_buffer_NEW(info->id, info->is_pd,
+       info->handle = dynamicbox_acquire_buffer(info->id, info->is_gbar,
                                        width, height,
                                        event_handler_cb, info);
 
@@ -294,9 +294,9 @@ static void *alloc_fb(void *data, int size)
         * If it supports the H/W accelerated buffer,
         * Use it.
         */
-       if (livebox_support_hw_buffer(info->handle)) {
-               if (livebox_create_hw_buffer(info->handle) == 0) {
-                       buffer = livebox_buffer_hw_buffer(info->handle);
+       if (dynamicbox_support_hw_buffer(info->handle)) {
+               if (dynamicbox_create_hw_buffer(info->handle) == 0) {
+                       buffer = dynamicbox_buffer_hw_buffer(info->handle);
                        if (buffer) {
                                LOGD("HW Accelerated buffer is created\n");
                                info->is_hw = 1;
@@ -310,7 +310,7 @@ static void *alloc_fb(void *data, int size)
        /*!
         * Or use the buffer of a S/W backend.
         */
-       buffer = livebox_ref_buffer(info->handle);
+       buffer = dynamicbox_ref_buffer(info->handle);
        LOGD("SW buffer is created\n");
        info->is_hw = 0;
        return buffer;
@@ -325,16 +325,16 @@ static void free_fb(void *data, void *ptr)
        }
 
        if (info->is_hw) {
-               if (livebox_destroy_hw_buffer(info->handle) == 0) {
+               if (dynamicbox_destroy_hw_buffer(info->handle) == 0) {
                        LOGD("HW Accelerated buffer is destroyed\n");
                        goto out;
                }
        }
 
-       livebox_unref_buffer(ptr);
+       dynamicbox_unref_buffer(ptr);
        LOGD("SW buffer is destroyed\n");
 out:
-       livebox_release_buffer(info->handle);
+       dynamicbox_release_buffer(info->handle);
        info->handle = NULL;
 }
 
@@ -347,7 +347,7 @@ static void pre_render_cb(void *data, Evas *e, void *event_info)
        }
 
        if (info->is_hw) {
-               livebox_buffer_pre_render(info->handle);
+               dynamicbox_buffer_pre_render(info->handle);
        }
 }
 
@@ -360,13 +360,13 @@ static void post_render_cb(void *data, Evas *e, void *event_info)
        }
 
        if (info->is_hw) {
-               livebox_buffer_post_render(info->handle);
+               dynamicbox_buffer_post_render(info->handle);
        } else {
-               livebox_sync_buffer(info->handle);
+               dynamicbox_sync_buffer(info->handle);
        }
 }
 
-PUBLIC Evas_Object *livebox_get_evas_object(const char *id, int is_pd)
+PUBLIC void *dynamicbox_get_evas_object(const char *id, int is_gbar)
 {
        struct info *info;
        Evas_Object *rect;
@@ -389,7 +389,7 @@ PUBLIC Evas_Object *livebox_get_evas_object(const char *id, int is_pd)
                return NULL;
        }
 
-       info->is_pd = is_pd;
+       info->is_gbar = is_gbar;
 
        info->ee = ecore_evas_buffer_allocfunc_new(1, 1, alloc_fb, free_fb, info);
        if (!info->ee) {