From: Enlightenment C. <no...@cv...> - 2006-05-06 06:24:57
|
Enlightenment CVS committal Author : doursse Project : e17 Module : libs/evas Dir : e17/libs/evas/src/bin Modified Files: evas_software_xcb_perf_load.c evas_xrender_xcb_main.c Log Message: cleaning =================================================================== RCS file: /cvs/e/e17/libs/evas/src/bin/evas_software_xcb_perf_load.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- evas_software_xcb_perf_load.c 14 Jan 2006 12:13:34 -0000 1.4 +++ evas_software_xcb_perf_load.c 6 May 2006 06:23:53 -0000 1.5 @@ -1,13 +1,18 @@ -#include <X11/XCB/xcb.h> -#include <X11/XCB/xcb_icccm.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <unistd.h> #include <math.h> #include <sys/time.h> #include <sys/stat.h> #include <sys/types.h> +#define X_H /* make sure we aren't using symbols from X.h */ + +#include <X11/XCB/xcb.h> +#include <X11/XCB/xcb_icccm.h> +#include <X11/XCB/xcb_aux.h> + #include "Evas.h" #include "Evas_Engine_Software_Xcb.h" @@ -19,60 +24,86 @@ int win_w = 240; int win_h = 240; -XCBSCREEN * -get_screen (XCBConnection *c, - int screen) -{ - XCBSCREENIter i; - - i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(c)); - for (; i.rem; --screen, XCBSCREENNext(&i)) - if (screen == 0) - return i.data; - - return NULL; -} -XCBVISUALTYPE * -get_visual(XCBConnection *conn, - XCBSCREEN *root) +static void +title_set (XCBConnection *c, XCBWINDOW win, const char *title) { - XCBDEPTH *d; - XCBVISUALTYPEIter iter; - int cur; - - d = XCBSCREENAllowedDepthsIter(root).data; - if (!d) return NULL; - - 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; - - return NULL; + XCBInternAtomCookie cookie_encoding; + XCBInternAtomCookie cookie_property; + XCBInternAtomRep *rep; + XCBATOM encoding; + char *atom_name; + + 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); + + 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); } -int -get_depth(XCBConnection *conn, - XCBSCREEN *root) +static void +class_set (XCBConnection *c, XCBWINDOW win, const char *name, const char *class) { - 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; + 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 @@ -84,7 +115,6 @@ XCBGenericEvent *e; CARD32 mask = 0; CARD32 value[6]; -/* XClassHint chint; */ SizeHints *szhints; int screen_nbr; @@ -95,34 +125,33 @@ 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 @@ /* 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 @@ { 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 @@ (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); =================================================================== RCS file: /cvs/e/e17/libs/evas/src/bin/evas_xrender_xcb_main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas_xrender_xcb_main.c 10 Mar 2006 19:10:06 -0000 1.1 +++ evas_xrender_xcb_main.c 6 May 2006 06:23:53 -0000 1.2 @@ -1,94 +1,112 @@ #include "evas_test_main.h" #include <unistd.h> + +#define X_H /* make sure we aren't using symbols from X.h */ + #include <X11/XCB/xcb.h> +#include <X11/XCB/shm.h> +#include <X11/XCB/render.h> +#include <X11/XCB/xcb_aux.h> #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; -} + 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); -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); - } + rep = XCBInternAtomReply (c, cookie_encoding, NULL); + encoding = rep->atom; + free (rep); - depth = geom->depth; - free (geom); + rep = XCBInternAtomReply (c, cookie_property, NULL); - return depth; + XCBChangeProperty(c, XCBPropModeReplace, + win, + rep->atom, encoding, 8, strlen (title), title); + free (rep); } -static void title_set (XCBConnection *conn, XCBWINDOW window, const char *title) +static void +class_set (XCBConnection *c, XCBWINDOW win, const char *name, const char *class) { - XCBInternAtomRep *rep; - XCBATOM encoding; - char *atom_name; + 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'; - /* 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 = "_WM_CLASS"; + 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, - rep->atom, encoding, 8, strlen (title), title); + 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 @@ 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 @@ 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 @@ ev->height); break; } - case ConfigureNotify: { + case XCBConfigureNotify: { XCBConfigureNotifyEvent *ev = (XCBConfigureNotifyEvent *)e; evas_output_size_set(evas, |