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:
doursse 2006-05-04 06:51:30 +00:00 committed by doursse
parent b0efe94cff
commit f8585f6fe2
2 changed files with 49 additions and 49 deletions

View File

@ -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);

View File

@ -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;