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
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 */
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,
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 */
};
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
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;
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
*/
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;
}
struct livebox *handler;
const char *pkgname;
const char *id;
+ const char *fbfile;
int status;
int ret;
int w;
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) {
* 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
.handler = master_pinup,
},
{
+ .cmd = "scroll",
+ .handler = master_hold_scroll,
+ },
+ {
.cmd = NULL,
.handler = NULL,
},
* 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) {
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;
{
int w = 1;
int h = 1;
- char cmd[20] = { '\0', };
+ char cmd[32] = { '\0', };
char *ptr = cmd;
if (!handler) {
*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");