diff --git a/legacy/evas/src/bin/evas_software_xcb_perf_load.c b/legacy/evas/src/bin/evas_software_xcb_perf_load.c index 5508e94dd4..4b97e6ab47 100644 --- a/legacy/evas/src/bin/evas_software_xcb_perf_load.c +++ b/legacy/evas/src/bin/evas_software_xcb_perf_load.c @@ -1,13 +1,18 @@ -#include -#include #include #include +#include #include #include #include #include #include +#define X_H /* make sure we aren't using symbols from X.h */ + +#include +#include +#include + #include "Evas.h" #include "Evas_Engine_Software_Xcb.h" @@ -19,60 +24,86 @@ Evas *evas = NULL; int win_w = 240; int win_h = 240; -XCBSCREEN * -get_screen (XCBConnection *c, - int screen) + +static void +title_set (XCBConnection *c, XCBWINDOW win, const char *title) { - XCBSCREENIter i; + XCBInternAtomCookie cookie_encoding; + XCBInternAtomCookie cookie_property; + XCBInternAtomRep *rep; + XCBATOM encoding; + char *atom_name; - i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(c)); - for (; i.rem; --screen, XCBSCREENNext(&i)) - if (screen == 0) - return i.data; + atom_name = "UTF8_STRING"; + cookie_encoding = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); + atom_name = "_NET_WM_NAME"; + cookie_property = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); - return NULL; + rep = XCBInternAtomReply (c, cookie_encoding, NULL); + encoding = rep->atom; + free (rep); + + rep = XCBInternAtomReply (c, cookie_property, NULL); + + XCBChangeProperty(c, XCBPropModeReplace, + win, + rep->atom, encoding, 8, strlen (title), title); + free (rep); } -XCBVISUALTYPE * -get_visual(XCBConnection *conn, - XCBSCREEN *root) +static void +class_set (XCBConnection *c, XCBWINDOW win, const char *name, const char *class) { - XCBDEPTH *d; - XCBVISUALTYPEIter iter; - int cur; + XCBInternAtomCookie cookie_encoding; + XCBInternAtomCookie cookie_property; + XCBInternAtomRep *rep; + XCBATOM encoding; + char *atom_name; + char *class_str; + char *s; + int length_name; + int length_class; - d = XCBSCREENAllowedDepthsIter(root).data; - if (!d) return NULL; + length_name = strlen (name); + length_class = strlen (class); + class_str = (char *)malloc (sizeof (char) * (length_name + length_class + 2)); + if (!class_str) return; + s = class_str; + memcpy (s, name, length_name); + s += length_name; + *s = '\0'; + s++; + memcpy (s, class, length_class); + s += length_class; + *s = '\0'; - iter = XCBDEPTHVisualsIter(d); - for (cur = 0 ; cur < iter.rem ; XCBVISUALTYPENext(&iter), ++cur) - if (root->root_visual.id == iter.data->visual_id.id) - return iter.data; + atom_name = "UTF8_STRING"; + cookie_encoding = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); + atom_name = "_WM_CLASS"; + cookie_property = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); - return NULL; -} + rep = XCBInternAtomReply (c, cookie_encoding, NULL); + encoding = rep->atom; + free (rep); -int -get_depth(XCBConnection *conn, - XCBSCREEN *root) -{ - XCBDRAWABLE drawable; - XCBGetGeometryRep *geom; - int depth; + rep = XCBInternAtomReply (c, cookie_property, NULL); - drawable.window = root->root; - geom = XCBGetGeometryReply (conn, XCBGetGeometry(conn, drawable), 0); - - if(!geom) - { - perror ("GetGeometry(root) failed"); - exit (0); - } - - depth = geom->depth; - free (geom); - - return depth; + XCBChangeProperty(c, XCBPropModeReplace, + win, + rep->atom, encoding, 8, strlen (class_str), class_str); + free (rep); } int @@ -84,7 +115,6 @@ main(int argc, char **argv) XCBGenericEvent *e; CARD32 mask = 0; CARD32 value[6]; -/* XClassHint chint; */ SizeHints *szhints; int screen_nbr; @@ -95,34 +125,33 @@ main(int argc, char **argv) exit(-1); } - screen = get_screen (c, screen_nbr); + screen = XCBAuxGetScreen (c, screen_nbr); - mask = CWBackingStore | CWColormap | - CWBackPixmap | CWBorderPixel | - CWBitGravity | CWEventMask; + mask = + XCBCWBackPixmap | XCBCWBorderPixel | + XCBCWBitGravity | XCBCWBackingStore | + XCBCWEventMask | XCBCWColormap; - value[0] = None; + value[0] = XCBBackPixmapNone; value[1] = 0; - value[2] = ForgetGravity; - value[3] = NotUseful; - value[4] = ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask; + value[2] = XCBGravityBitForget; + value[3] = XCBBackingStoreNotUseful; + value[4] = XCBEventMaskExposure | XCBEventMaskButtonPress | XCBEventMaskButtonRelease | XCBEventMaskPointerMotion; value[5] = screen->default_colormap.xid; win.window = XCBWINDOWNew(c); XCBCreateWindow (c, - get_depth(c, screen), + XCBAuxGetDepth(c, screen), win.window, screen->root, 0, 0, win_w, win_h, 0, - InputOutput, + XCBWindowClassInputOutput, screen->root_visual, mask, value); -/* XStoreName(disp, win, "Evas Performance Test"); */ -/* chint.res_name = "Evas_Test"; */ -/* chint.res_class = "Main"; */ -/* XSetClassHint(disp, win, &chint); */ + title_set (c, win.window, "Evas XCB Performance Test"); + class_set (c, win.window, "Evas_XCB_Perf_Test", "Main"); szhints = AllocSizeHints(); SizeHintsSetMinSize(szhints, win_w, win_h); @@ -145,10 +174,10 @@ main(int argc, char **argv) /* the following is specific to the engine */ einfo->info.conn = c; - einfo->info.visual = get_visual (c, screen); + einfo->info.visual = XCBAuxGetVisualtype(c, screen_nbr, screen->root_visual); einfo->info.colormap = screen->default_colormap; einfo->info.drawable = win; - einfo->info.depth = get_depth(c, screen); + einfo->info.depth = XCBAuxGetDepth(c, screen); einfo->info.rotation = 0; evas_engine_info_set(evas, (Evas_Engine_Info *) einfo); @@ -162,25 +191,25 @@ main(int argc, char **argv) { switch (e->response_type) { - case ButtonPress: { + case XCBButtonPress: { XCBButtonPressEvent *ev = (XCBButtonPressEvent *)e; -/* evas_event_button_down(evas, ev->event_x, ev->event_y, ev->detail.id);*/ + /* evas_event_button_down(evas, ev->event_x, ev->event_y, ev->detail.id);*/ break; } - case ButtonRelease: { + case XCBButtonRelease: { XCBButtonReleaseEvent *ev = (XCBButtonReleaseEvent *)e; - /* evas_event_button_up(evas, ev->event_x, ev->event_y, ev->detail.id);*/ + /* evas_event_button_up(evas, ev->event_x, ev->event_y, ev->detail.id);*/ break; } - case MotionNotify: { + case XCBMotionNotify: { XCBMotionNotifyEvent *ev = (XCBMotionNotifyEvent *)e; -/* evas_event_move(evas, ev->event_x, ev->event_y);*/ + /* evas_event_move(evas, ev->event_x, ev->event_y);*/ break; } - case Expose: { + case XCBExpose: { XCBExposeEvent *ev = (XCBExposeEvent *)e; exposed = 1; @@ -214,10 +243,10 @@ main(int argc, char **argv) (Evas_Engine_Info_Software_Xcb *) evas_engine_info_get(evas); perf = einfo->func.performance_new(evas, c, - get_visual (c, screen), + XCBAuxGetVisualtype(c, screen_nbr, screen->root_visual), screen->default_colormap, win, - get_depth(c, screen)); + XCBAuxGetDepth(c, screen)); key = einfo->func.performance_key_get(perf); snprintf(buf, sizeof(buf), "%s/.evas/%s", getenv("HOME"), key); free(key); diff --git a/legacy/evas/src/bin/evas_xrender_xcb_main.c b/legacy/evas/src/bin/evas_xrender_xcb_main.c index 9b86bf43ba..62d5b737e0 100644 --- a/legacy/evas/src/bin/evas_xrender_xcb_main.c +++ b/legacy/evas/src/bin/evas_xrender_xcb_main.c @@ -1,94 +1,112 @@ #include "evas_test_main.h" #include + +#define X_H /* make sure we aren't using symbols from X.h */ + #include +#include +#include +#include #include "Evas.h" #include "Evas_Engine_XRender_Xcb.h" -XCBSCREEN * -get_screen (XCBConnection *c, - int screen) +static void +title_set (XCBConnection *c, XCBWINDOW win, const char *title) { - XCBSCREENIter iter; + XCBInternAtomCookie cookie_encoding; + XCBInternAtomCookie cookie_property; + XCBInternAtomRep *rep; + XCBATOM encoding; + char *atom_name; - iter = XCBConnSetupSuccessRepRootsIter (XCBGetSetup (c)); - for (; iter.rem; --screen, XCBSCREENNext (&iter)) - if (screen == 0) - return iter.data; - - return NULL; -} - -int -get_depth(XCBConnection *conn, - XCBSCREEN *root) -{ - XCBDRAWABLE drawable; - XCBGetGeometryRep *geom; - int depth; - - drawable.window = root->root; - geom = XCBGetGeometryReply (conn, XCBGetGeometry(conn, drawable), 0); - - if(!geom) - { - perror ("GetGeometry(root) failed"); - exit (0); - } - - depth = geom->depth; - free (geom); - - return depth; -} - -static void title_set (XCBConnection *conn, XCBWINDOW window, const char *title) -{ - XCBInternAtomRep *rep; - XCBATOM encoding; - char *atom_name; - - /* encoding */ atom_name = "UTF8_STRING"; - rep = XCBInternAtomReply (conn, - XCBInternAtom (conn, - 0, - strlen (atom_name), - atom_name), - NULL); + cookie_encoding = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); + atom_name = "_NET_WM_NAME"; + cookie_property = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); + + rep = XCBInternAtomReply (c, cookie_encoding, NULL); encoding = rep->atom; free (rep); - /* ICCCM */ -/* SetWMName (f->xcb.c, f->xcb.draw.window, encoding, strlen (title), title); */ + rep = XCBInternAtomReply (c, cookie_property, NULL); - /* NETWM */ - atom_name = "_NET_WM_NAME"; - rep = XCBInternAtomReply (conn, - XCBInternAtom (conn, - 0, - strlen (atom_name), - atom_name), - NULL); - XCBChangeProperty(conn, PropModeReplace, - window, + XCBChangeProperty(c, XCBPropModeReplace, + win, rep->atom, encoding, 8, strlen (title), title); free (rep); } +static void +class_set (XCBConnection *c, XCBWINDOW win, const char *name, const char *class) +{ + XCBInternAtomCookie cookie_encoding; + XCBInternAtomCookie cookie_property; + XCBInternAtomRep *rep; + XCBATOM encoding; + char *atom_name; + char *class_str; + char *s; + int length_name; + int length_class; + + length_name = strlen (name); + length_class = strlen (class); + class_str = (char *)malloc (sizeof (char) * (length_name + length_class + 2)); + if (!class_str) return; + s = class_str; + memcpy (s, name, length_name); + s += length_name; + *s = '\0'; + s++; + memcpy (s, class, length_class); + s += length_class; + *s = '\0'; + + atom_name = "UTF8_STRING"; + cookie_encoding = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); + atom_name = "_WM_CLASS"; + cookie_property = XCBInternAtom (c, + 0, + strlen (atom_name), + atom_name); + + rep = XCBInternAtomReply (c, cookie_encoding, NULL); + encoding = rep->atom; + free (rep); + + rep = XCBInternAtomReply (c, cookie_property, NULL); + + XCBChangeProperty(c, XCBPropModeReplace, + win, + rep->atom, encoding, 8, strlen (class_str), class_str); + free (rep); +} + int main(int argc, char **argv) { - int pause_me = 0; - XCBConnection *conn; - XCBSCREEN *screen; - XCBDRAWABLE win; - XCBGenericEvent *e; - CARD32 mask; - CARD32 value[6]; - int screen_nbr; + int pause_me = 0; + XCBConnection *conn; + const XCBQueryExtensionRep *rep_shm; + const XCBQueryExtensionRep *rep_xrender; + XCBSCREEN *screen; + XCBDRAWABLE win; + XCBGenericEvent *e; + CARD32 mask; + CARD32 value[6]; + int screen_nbr; conn = XCBConnect (NULL, &screen_nbr); if (!conn) @@ -97,31 +115,37 @@ main(int argc, char **argv) exit(-1); } - screen = get_screen (conn, screen_nbr); + XCBPrefetchExtensionData (conn, &XCBShmId); + XCBPrefetchExtensionData (conn, &XCBRenderId); + rep_shm = XCBGetExtensionData(conn, &XCBShmId); + rep_xrender = XCBGetExtensionData(conn, &XCBRenderId); + + screen = XCBAuxGetScreen (conn, screen_nbr); mask = - XCBCWBackingStore | XCBCWColormap | - XCBCWBackPixmap | XCBCWBorderPixel | - XCBCWBitGravity | XCBCWEventMask; + XCBCWBackPixmap | XCBCWBorderPixel | + XCBCWBitGravity | XCBCWBackingStore | + XCBCWEventMask | XCBCWColormap; - value[0] = None; + value[0] = XCBBackPixmapNone; value[1] = 0; - value[2] = ForgetGravity; - value[3] = NotUseful; - value[4] = ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask; + value[2] = XCBGravityBitForget; + value[3] = XCBBackingStoreNotUseful; + value[4] = XCBEventMaskExposure | XCBEventMaskButtonPress | XCBEventMaskButtonRelease | XCBEventMaskPointerMotion | XCBEventMaskStructureNotify; value[5] = screen->default_colormap.xid; win.window = XCBWINDOWNew(conn); XCBCreateWindow (conn, - get_depth(conn, screen), + XCBAuxGetDepth(conn, screen), win.window, screen->root, 0, 0, win_w, win_h, 0, - InputOutput, + XCBWindowClassInputOutput, screen->root_visual, mask, value); title_set (conn, win.window, "Evas XRender Xcb Test"); + class_set (conn, win.window, "Evas_XRender_XCB_Test", "Main"); #if 0 szhints.flags = PMinSize | PMaxSize | PSize | USSize; szhints.min_width = szhints.max_width = win_w; @@ -196,7 +220,7 @@ main(int argc, char **argv) evas_event_feed_mouse_move(evas, ev->event_x, ev->event_y, 0, NULL); break; } - case Expose: { + case XCBExpose: { XCBExposeEvent *ev = (XCBExposeEvent *)e; evas_damage_rectangle_add(evas, @@ -206,7 +230,7 @@ main(int argc, char **argv) ev->height); break; } - case ConfigureNotify: { + case XCBConfigureNotify: { XCBConfigureNotifyEvent *ev = (XCBConfigureNotifyEvent *)e; evas_output_size_set(evas,