summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSung-jae Park <nicesj.park@samsung.com>2013-03-31 23:28:53 +0000
committerSung-jae Park <nicesj.park@samsung.com>2013-03-31 23:28:53 +0000
commit57f322294919197f60ed7895ed585f4957af9ba1 (patch)
tree746b34f9f37513f75abbdffdbe2e30adcc5b8b87
parent74fec1ddff061b31f4a5cbb8f6b86d27f1c1af6b (diff)
downloadlivebox-viewer-57f322294919197f60ed7895ed585f4957af9ba1.tar.gz
livebox-viewer-57f322294919197f60ed7895ed585f4957af9ba1.tar.bz2
livebox-viewer-57f322294919197f60ed7895ed585f4957af9ba1.zip
Sync to I29fc45cc5bd693eb796d4ea256c0b23afe39b192
Add new event path & change pixmap 24 to 32. Accessibility event paths are added. Fix the bug of size changed event handler. Because of invalid fbfile, the size of a box is resetted. I used instance id instead of fb id,. So the box buffer info indicates invalid uri This patch will fix it. master will send a new fbid when it sending the size,changed event. Then the viewer will get it and update the fbinfo using received fbid. Remove unnecessary parameter checking code. Maybe accidently remained. Add hold scroll event path. Some box wants to hold the viewer's scroller when they handling their events. Change-Id: If1832b1c841cb5c3e793103f3d728ed36c116bdc
-rw-r--r--include/livebox.h33
-rw-r--r--packaging/liblivebox-viewer.spec2
-rw-r--r--src/client.c52
-rw-r--r--src/fb.c2
-rw-r--r--src/livebox.c27
5 files changed, 79 insertions, 37 deletions
diff --git a/include/livebox.h b/include/livebox.h
index 5d26a30..fc859a5 100644
--- a/include/livebox.h
+++ b/include/livebox.h
@@ -43,12 +43,12 @@ enum content_event_type {
CONTENT_EVENT_MOUSE_SET = 0x00000020, /*!< LB mouse set auto event for livebox */
CONTENT_EVENT_MOUSE_UNSET = 0x00000040, /*!< LB mouse unset auto event for livebox */
- CONTENT_EVENT_ACCESS_READ = 0x00000100, /*!< LB accessibility read for livebox */
- CONTENT_EVENT_ACCESS_READ_NEXT = 0x00000200, /*!< LB accessibility read next for livebox */
- CONTENT_EVENT_ACCESS_READ_PREV = 0x00000400, /*!< LB accessibility read prev for livebox */
+ CONTENT_EVENT_ACCESS_HIGHLIGHT = 0x00000100, /*!< LB accessibility: Hightlight a object */
+ CONTENT_EVENT_ACCESS_HIGHLIGHT_NEXT = 0x00000200, /*!< LB accessibility: Set highlight to next object */
+ CONTENT_EVENT_ACCESS_HIGHLIGHT_PREV = 0x00000400, /*!< LB accessibility: Set highlight to prev object */
CONTENT_EVENT_ACCESS_ACTIVATE = 0x00000800, /*!< LB accessibility activate */
- CONTENT_EVENT_ACCESS_UP = 0x00001000, /*!< LB accessibility up */
- CONTENT_EVENT_ACCESS_DOWN = 0x00002000, /*!< LB accessibility down */
+ CONTENT_EVENT_ACCESS_VALUE_CHANGE = 0x00001000, /*!< LB accessibility up */
+ CONTENT_EVENT_ACCESS_SCROLL = 0x00002000, /*!< LB accessibility down */
CONTENT_EVENT_KEY_DOWN = 0x00100000, /*!< LB key press */
CONTENT_EVENT_KEY_UP = 0x00200000, /*!< LB key release */
@@ -75,19 +75,19 @@ enum content_event_type {
PD_MOUSE_SET = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_SET,
PD_MOUSE_UNSET = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_MOUSE_MASK | CONTENT_EVENT_MOUSE_UNSET,
- LB_ACCESS_READ = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ,
- LB_ACCESS_READ_NEXT = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_NEXT,
- LB_ACCESS_READ_PREV = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_PREV,
+ LB_ACCESS_HIGHLIGHT = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_HIGHLIGHT,
+ LB_ACCESS_HIGHLIGHT_NEXT = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_HIGHLIGHT_NEXT,
+ LB_ACCESS_HIGHLIGHT_PREV = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_HIGHLIGHT_PREV,
LB_ACCESS_ACTIVATE = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_ACTIVATE,
- LB_ACCESS_UP = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_UP,
- LB_ACCESS_DOWN = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_DOWN,
+ LB_ACCESS_VALUE_CHANGE = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_VALUE_CHANGE,
+ LB_ACCESS_SCROLL = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_SCROLL,
- PD_ACCESS_READ = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ,
- PD_ACCESS_READ_NEXT = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_NEXT,
- PD_ACCESS_READ_PREV = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_READ_PREV,
+ PD_ACCESS_HIGHLIGHT = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_HIGHLIGHT,
+ PD_ACCESS_HIGHLIGHT_NEXT = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_HIGHLIGHT_NEXT,
+ PD_ACCESS_HIGHLIGHT_PREV = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_HIGHLIGHT_PREV,
PD_ACCESS_ACTIVATE = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_ACTIVATE,
- PD_ACCESS_UP = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_UP,
- PD_ACCESS_DOWN = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_DOWN,
+ PD_ACCESS_VALUE_CHANGE = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_VALUE_CHANGE,
+ PD_ACCESS_SCROLL = CONTENT_EVENT_PD_MASK | CONTENT_EVENT_ACCESS_MASK | CONTENT_EVENT_ACCESS_SCROLL,
LB_KEY_DOWN = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_KEY_MASK | CONTENT_EVENT_KEY_DOWN,
LB_KEY_UP = CONTENT_EVENT_LB_MASK | CONTENT_EVENT_KEY_MASK | CONTENT_EVENT_KEY_UP,
@@ -133,6 +133,9 @@ enum livebox_event_type { /*!< livebox_event_handler_set Event list */
LB_EVENT_PD_CREATED, /*!< If a PD is created even if you didn't call the livebox_create_pd API */
LB_EVENT_PD_DESTROYED, /*!< If a PD is destroyed even if you didn't call the livebox_destroy_pd API */
+ LB_EVENT_HOLD_SCROLL, /*!< If the screen should be freezed */
+ LB_EVENT_RELEASE_SCROLL, /*!< If the screen can be scrolled */
+
LB_EVENT_IGNORED, /*!< Request is ignored */
};
diff --git a/packaging/liblivebox-viewer.spec b/packaging/liblivebox-viewer.spec
index 994c068..e7b3954 100644
--- a/packaging/liblivebox-viewer.spec
+++ b/packaging/liblivebox-viewer.spec
@@ -1,6 +1,6 @@
Name: liblivebox-viewer
Summary: Library for developing the application.
-Version: 0.10.3
+Version: 0.11.0
Release: 1
Group: HomeTF/Livebox
License: Flora License
diff --git a/src/client.c b/src/client.c
index 3a483fc..c565cd8 100644
--- a/src/client.c
+++ b/src/client.c
@@ -66,6 +66,32 @@ static struct packet *master_fault_package(pid_t pid, int handle, const struct p
return NULL;
}
+static struct packet *master_hold_scroll(pid_t pid, int handle, const struct packet *packet)
+{
+ struct livebox *handler;
+ const char *pkgname;
+ const char *id;
+ int seize;
+ int ret;
+
+ ret = packet_get(packet, "ssi", &pkgname, &id, &seize);
+ if (ret != 3) {
+ ErrPrint("Invalid argument\n");
+ goto out;
+ }
+
+ handler = lb_find_livebox(pkgname, id);
+ if (!handler) {
+ ErrPrint("Instance(%s) is not exists\n", id);
+ goto out;
+ }
+
+ lb_invoke_event_handler(handler, seize ? LB_EVENT_HOLD_SCROLL : LB_EVENT_RELEASE_SCROLL);
+
+out:
+ return NULL;
+}
+
static struct packet *master_pinup(pid_t pid, int handle, const struct packet *packet)
{
const char *pkgname;
@@ -236,9 +262,9 @@ static struct packet *master_lb_updated(pid_t pid, int handle, const struct pack
lb_set_priority(handler, priority);
lb_set_content(handler, content);
lb_set_title(handler, title);
+ lb_set_size(handler, lb_w, lb_h);
if (lb_text_lb(handler)) {
- lb_set_size(handler, lb_w, lb_h);
(void)parse_desc(handler, livebox_filename(handler), 0);
/*!
* \note
@@ -247,13 +273,11 @@ static struct packet *master_lb_updated(pid_t pid, int handle, const struct pack
*/
goto out;
} else if (lb_get_lb_fb(handler)) {
- lb_set_size(handler, lb_w, lb_h);
lb_set_lb_fb(handler, fbfile);
ret = fb_sync(lb_get_lb_fb(handler));
if (ret < 0)
ErrPrint("Failed to do sync FB (%s - %s) (%d)\n", pkgname, util_basename(util_uri_to_path(id)), ret);
} else {
- lb_set_size(handler, lb_w, lb_h);
ret = 0;
}
@@ -421,6 +445,7 @@ static struct packet *master_size_changed(pid_t pid, int handle, const struct pa
struct livebox *handler;
const char *pkgname;
const char *id;
+ const char *fbfile;
int status;
int ret;
int w;
@@ -432,13 +457,13 @@ static struct packet *master_size_changed(pid_t pid, int handle, const struct pa
goto out;
}
- ret = packet_get(packet, "ssiiii", &pkgname, &id, &is_pd, &w, &h, &status);
- if (ret != 6) {
+ ret = packet_get(packet, "sssiiii", &pkgname, &id, &fbfile, &is_pd, &w, &h, &status);
+ if (ret != 7) {
ErrPrint("Invalid argument\n");
goto out;
}
- DbgPrint("Size is changed: %dx%d (%s)\n", w, h, id);
+ DbgPrint("Size is changed: %dx%d (%s), fb: [%s]\n", w, h, id, fbfile);
handler = lb_find_livebox(pkgname, id);
if (!handler) {
@@ -476,8 +501,15 @@ static struct packet *master_size_changed(pid_t pid, int handle, const struct pa
* If there is a created LB FB,
* Update it too.
*/
- if (lb_get_lb_fb(handler))
- (void)lb_set_lb_fb(handler, id);
+ if (lb_get_lb_fb(handler)) {
+ lb_set_lb_fb(handler, fbfile);
+
+ ret = fb_sync(lb_get_lb_fb(handler));
+ if (ret < 0)
+ ErrPrint("Failed to do sync FB (%s - %s)\n", pkgname, util_basename(util_uri_to_path(id)));
+
+ /* Just update the size info only. */
+ }
/*!
* \NOTE
@@ -848,6 +880,10 @@ static struct method s_table[] = {
.handler = master_pinup,
},
{
+ .cmd = "scroll",
+ .handler = master_hold_scroll,
+ },
+ {
.cmd = NULL,
.handler = NULL,
},
diff --git a/src/fb.c b/src/fb.c
index d1fe2de..4aa5cfc 100644
--- a/src/fb.c
+++ b/src/fb.c
@@ -227,7 +227,7 @@ static inline __attribute__((always_inline)) int sync_for_pixmap(struct fb_info
* Use the 24 bits Pixmap for Video player
*/
xim = XShmCreateImage(s_info.disp, s_info.visual,
- 24 /* (s_info.depth << 3) */, ZPixmap, NULL,
+ (s_info.depth << 3), ZPixmap, NULL,
&si,
info->w, info->h);
if (xim == NULL) {
diff --git a/src/livebox.c b/src/livebox.c
index 826cf4b..b9303c3 100644
--- a/src/livebox.c
+++ b/src/livebox.c
@@ -595,7 +595,7 @@ EAPI struct livebox *livebox_add_with_size(const char *pkgname, const char *cont
int width = 0;
int height = 0;
- if (!pkgname || !cluster || !category || width < 0 || height < 0) {
+ if (!pkgname || !cluster || !category) {
ErrPrint("Invalid arguments: pkgname[%p], cluster[%p], category[%p]\n",
pkgname, cluster, category);
return NULL;
@@ -1104,7 +1104,7 @@ EAPI int livebox_content_event(struct livebox *handler, enum content_event_type
{
int w = 1;
int h = 1;
- char cmd[20] = { '\0', };
+ char cmd[32] = { '\0', };
char *ptr = cmd;
if (!handler) {
@@ -1179,24 +1179,27 @@ EAPI int livebox_content_event(struct livebox *handler, enum content_event_type
*ptr++ = 'b';
}
+ /*!
+ * Must be short than 29 bytes.
+ */
switch ((type & ~CONTENT_EVENT_PD_MASK)) {
- case CONTENT_EVENT_ACCESS_READ | CONTENT_EVENT_ACCESS_MASK:
- strcpy(ptr, "_access_read");
+ case CONTENT_EVENT_ACCESS_HIGHLIGHT | CONTENT_EVENT_ACCESS_MASK:
+ strcpy(ptr, "_access_hl");
break;
- case CONTENT_EVENT_ACCESS_READ_PREV | CONTENT_EVENT_ACCESS_MASK:
- strcpy(ptr, "_access_read_prev");
+ case CONTENT_EVENT_ACCESS_HIGHLIGHT_PREV | CONTENT_EVENT_ACCESS_MASK:
+ strcpy(ptr, "_access_hl_prev");
break;
- case CONTENT_EVENT_ACCESS_READ_NEXT | CONTENT_EVENT_ACCESS_MASK:
- strcpy(ptr, "_access_read_next");
+ case CONTENT_EVENT_ACCESS_HIGHLIGHT_NEXT | CONTENT_EVENT_ACCESS_MASK:
+ strcpy(ptr, "_access_hl_next");
break;
case CONTENT_EVENT_ACCESS_ACTIVATE | CONTENT_EVENT_ACCESS_MASK:
strcpy(ptr, "_access_activate");
break;
- case CONTENT_EVENT_ACCESS_UP | CONTENT_EVENT_ACCESS_MASK:
- strcpy(ptr, "_access_up");
+ case CONTENT_EVENT_ACCESS_VALUE_CHANGE | CONTENT_EVENT_ACCESS_MASK:
+ strcpy(ptr, "_access_value_change");
break;
- case CONTENT_EVENT_ACCESS_DOWN | CONTENT_EVENT_ACCESS_MASK:
- strcpy(ptr, "_access_down");
+ case CONTENT_EVENT_ACCESS_SCROLL | CONTENT_EVENT_ACCESS_MASK:
+ strcpy(ptr, "_access_scroll");
break;
case CONTENT_EVENT_MOUSE_ENTER | CONTENT_EVENT_MOUSE_MASK:
strcpy(ptr, "_mouse_enter");