diff options
author | Søren Sandmann Pedersen <ssp@l3000.localdomain> | 2011-03-22 15:59:37 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@l3000.localdomain> | 2011-03-22 15:59:37 -0400 |
commit | e6b67a5d3b701daddfd93b8baf000a3696e2973b (patch) | |
tree | 392f795941c0145afebbb06326c2497e1729e493 /exadamage.c |
Some render bugs
Diffstat (limited to 'exadamage.c')
-rw-r--r-- | exadamage.c | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/exadamage.c b/exadamage.c new file mode 100644 index 0000000..d72ef0c --- /dev/null +++ b/exadamage.c @@ -0,0 +1,101 @@ +#include <X11/Xlib.h> +#include <X11/extensions/Xdamage.h> +#include <X11/extensions/Xrender.h> +#include <stdint.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +static char glyphdata[4096] = +{ +}; + +static GlyphSet +make_glyphs (Display *dpy) +{ + GlyphSet glyphset; + Glyph gid = 1; + XGlyphInfo glyphinfo; + int i; + + for (i = 0; i < sizeof (glyphdata); ++i) + { + glyphdata[i] = i & 0x07; + } + + glyphinfo.width = 64; + glyphinfo.height = 64; + glyphinfo.x = 0; + glyphinfo.y = 0; + glyphinfo.xOff = 0; + glyphinfo.yOff = 0; + + glyphset = XRenderCreateGlyphSet ( + dpy, XRenderFindStandardFormat (dpy, PictStandardA8)); + + XRenderAddGlyphs ( + dpy, glyphset, &gid, &glyphinfo, 1, glyphdata, 64 * 64); + + return glyphset; +} + + +int +main () +{ + Display *dpy = XOpenDisplay (NULL); + Window window; + Damage damage; + int devent, derror; + int revent, rerror; + Picture dst; + Picture src; + XRenderPictureAttributes attr; + GlyphSet glyphset; + XRenderColor color = + { + 0x8080, 0xffff, 0x3232, 0xefef + }; + + window = XCreateSimpleWindow ( + dpy, DefaultRootWindow (dpy), 100, 100, + 300, 300, 0, 0, 0); + + XDamageQueryExtension (dpy, &devent, &derror); + XRenderQueryExtension (dpy, &revent, &rerror); + + damage = XDamageCreate (dpy, window, XDamageReportRawRectangles); + + XMapWindow (dpy, window); + + src = XRenderCreateSolidFill (dpy, &color); + dst = XRenderCreatePicture ( + dpy, window, XRenderFindStandardFormat (dpy, PictStandardRGB24), + 0, &attr); + + glyphset = make_glyphs(dpy); + + for (;;) + { + XEvent event; + char c = 1; + int dstx = rand() % 300; + int dsty = rand() % 300; + + XSync (dpy, False); + + while (XPending (dpy)) + { + XNextEvent (dpy, &event); + + if (event.type == devent + XDamageNotify) + printf ("Got damage\n"); + } + + XRenderCompositeString8 (dpy, PictOpOver, src, dst, NULL, + glyphset, 0, 0, dstx, dsty, &c, 1); + + usleep (70000); + } + return 0; +} |