forked from enlightenment/efl
cleaning of the code. speed up the engine by moving the initialization of shm into the test prog, and by commenting some XCBSync (no problem with that, apparently)
SVN revision: 22455
This commit is contained in:
parent
b0efe94cff
commit
f8585f6fe2
|
@ -89,7 +89,7 @@ evas_software_xcb_outbuf_setup_x(int w,
|
||||||
#ifdef WORDS_BIGENDIAN
|
#ifdef WORDS_BIGENDIAN
|
||||||
if (evas_software_xcb_x_output_buffer_byte_order(xcbob) == XCBImageOrderLSBFirst)
|
if (evas_software_xcb_x_output_buffer_byte_order(xcbob) == XCBImageOrderLSBFirst)
|
||||||
buf->priv.x.swap = 1;
|
buf->priv.x.swap = 1;
|
||||||
if (evas_software_xcb_x_output_buffer_bit_order(xcbob) == XCBImageOrderLSBFirst)
|
if (evas_software_xcb_x_output_buffer_bit_order(xcbob) == XCBImageOrderMSBFirst)
|
||||||
buf->priv.x.bit_swap = 1;
|
buf->priv.x.bit_swap = 1;
|
||||||
#else
|
#else
|
||||||
if (evas_software_xcb_x_output_buffer_byte_order(xcbob) == XCBImageOrderMSBFirst)
|
if (evas_software_xcb_x_output_buffer_byte_order(xcbob) == XCBImageOrderMSBFirst)
|
||||||
|
@ -1013,8 +1013,8 @@ evas_software_xcb_outbuf_perf_x(XCBConnection *conn,
|
||||||
|
|
||||||
perf = evas_software_xcb_outbuf_perf_new_x(conn, draw, vis, cmap, x_depth);
|
perf = evas_software_xcb_outbuf_perf_new_x(conn, draw, vis, cmap, x_depth);
|
||||||
|
|
||||||
mask = XCBCWBackPixmap | XCBCWBorderPixel |
|
mask = XCBCWBackPixmap | XCBCWBorderPixel |
|
||||||
XCBCWBitGravity | XCBCWBackingStore |
|
XCBCWBitGravity | XCBCWBackingStore |
|
||||||
XCBCWOverrideRedirect | XCBCWEventMask | XCBCWColormap;
|
XCBCWOverrideRedirect | XCBCWEventMask | XCBCWColormap;
|
||||||
value[0] = XCBBackPixmapNone;
|
value[0] = XCBBackPixmapNone;
|
||||||
value[1] = 0;
|
value[1] = 0;
|
||||||
|
@ -1038,7 +1038,7 @@ evas_software_xcb_outbuf_perf_x(XCBConnection *conn,
|
||||||
mask = XCBConfigWindowStackMode;
|
mask = XCBConfigWindowStackMode;
|
||||||
value[0] = XCBStackModeAbove;
|
value[0] = XCBStackModeAbove;
|
||||||
XCBConfigureWindow (conn, win.window, mask, value2);
|
XCBConfigureWindow (conn, win.window, mask, value2);
|
||||||
/* XCBMapWindow (conn, win.window); */
|
XCBMapWindow (conn, win.window);
|
||||||
|
|
||||||
do_shm = evas_software_xcb_x_can_do_shm(conn);
|
do_shm = evas_software_xcb_x_can_do_shm(conn);
|
||||||
|
|
||||||
|
|
|
@ -121,53 +121,53 @@ evas_software_xcb_x_output_buffer_new(XCBConnection *c,
|
||||||
|
|
||||||
if (try_shm > 0)
|
if (try_shm > 0)
|
||||||
{
|
{
|
||||||
xcbob->shm_info = malloc(sizeof(XCBShmSegmentInfo));
|
xcbob->shm_info = malloc(sizeof(XCBShmSegmentInfo));
|
||||||
if (xcbob->shm_info)
|
if (xcbob->shm_info)
|
||||||
{
|
{
|
||||||
xcbob->shm_info->shmseg = XCBShmSEGNew(c);
|
xcbob->shm_info->shmseg = XCBShmSEGNew(c);
|
||||||
xcbob->image = XCBImageSHMCreate(c, depth, XCBImageFormatZPixmap, NULL, w, h);
|
xcbob->image = XCBImageSHMCreate(c, depth, XCBImageFormatZPixmap, NULL, w, h);
|
||||||
if (xcbob->image)
|
if (xcbob->image)
|
||||||
{
|
{
|
||||||
xcbob->shm_info->shmid = shmget(IPC_PRIVATE,
|
xcbob->shm_info->shmid = shmget(IPC_PRIVATE,
|
||||||
xcbob->image->bytes_per_line *
|
xcbob->image->bytes_per_line *
|
||||||
xcbob->image->height,
|
xcbob->image->height,
|
||||||
IPC_CREAT | 0777);
|
IPC_CREAT | 0777);
|
||||||
if (xcbob->shm_info->shmid >= 0)
|
if (xcbob->shm_info->shmid >= 0)
|
||||||
{
|
{
|
||||||
xcbob->shm_info->shmaddr = xcbob->image->data =
|
xcbob->shm_info->shmaddr = xcbob->image->data =
|
||||||
shmat(xcbob->shm_info->shmid, 0, 0);
|
shmat(xcbob->shm_info->shmid, 0, 0);
|
||||||
if (xcbob->shm_info->shmaddr != NULL)
|
if (xcbob->shm_info->shmaddr != NULL)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* FIXME: no error mechanism
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* XErrorHandler ph; */
|
||||||
|
/* EventHandlers eh; */
|
||||||
|
|
||||||
|
/* XCBSync(c, 0); */
|
||||||
|
_xcb_err = 0;
|
||||||
|
/* ph = XSetErrorHandler((XErrorHandler) */
|
||||||
|
/* x_output_tmp_x_err); */
|
||||||
|
XCBShmAttach(c,
|
||||||
|
xcbob->shm_info->shmseg,
|
||||||
|
xcbob->shm_info->shmid, 0);
|
||||||
|
/* XCBSync(c, 0); */
|
||||||
|
/* XSetErrorHandler((XErrorHandler)ph); */
|
||||||
|
if (!_xcb_err)
|
||||||
{
|
{
|
||||||
/*
|
return xcbob;
|
||||||
* FIXME: no error mechanism
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* XErrorHandler ph; */
|
|
||||||
/* EventHandlers eh; */
|
|
||||||
|
|
||||||
XCBSync(c, 0);
|
|
||||||
_xcb_err = 0;
|
|
||||||
/* ph = XSetErrorHandler((XErrorHandler) */
|
|
||||||
/* x_output_tmp_x_err); */
|
|
||||||
XCBShmAttach(c,
|
|
||||||
xcbob->shm_info->shmseg,
|
|
||||||
xcbob->shm_info->shmid, 0);
|
|
||||||
XCBSync(c, 0);
|
|
||||||
/* XSetErrorHandler((XErrorHandler)ph); */
|
|
||||||
if (!_xcb_err)
|
|
||||||
{
|
|
||||||
return xcbob;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
shmdt(xcbob->shm_info->shmaddr);
|
}
|
||||||
shmctl(xcbob->shm_info->shmid, IPC_RMID, 0);
|
shmdt(xcbob->shm_info->shmaddr);
|
||||||
}
|
shmctl(xcbob->shm_info->shmid, IPC_RMID, 0);
|
||||||
if (xcbob->image) XCBImageSHMDestroy(xcbob->image);
|
}
|
||||||
xcbob->image = NULL;
|
if (xcbob->image) XCBImageSHMDestroy(xcbob->image);
|
||||||
}
|
xcbob->image = NULL;
|
||||||
if (xcbob->shm_info) free(xcbob->shm_info);
|
}
|
||||||
xcbob->shm_info = NULL;
|
if (xcbob->shm_info) free(xcbob->shm_info);
|
||||||
}
|
xcbob->shm_info = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (try_shm > 1) return NULL;
|
if (try_shm > 1) return NULL;
|
||||||
|
|
Loading…
Reference in New Issue