summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@l3000.localdomain>2011-03-22 15:59:37 -0400
committerSøren Sandmann Pedersen <ssp@l3000.localdomain>2011-03-22 15:59:37 -0400
commite6b67a5d3b701daddfd93b8baf000a3696e2973b (patch)
tree392f795941c0145afebbb06326c2497e1729e493
Some render bugs
-rw-r--r--exadamage.c101
-rw-r--r--trapoffset.c108
2 files changed, 209 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;
+}
diff --git a/trapoffset.c b/trapoffset.c
new file mode 100644
index 0000000..a6186b9
--- /dev/null
+++ b/trapoffset.c
@@ -0,0 +1,108 @@
+#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;
+ XTrapezoid traps[1] =
+ {
+ {
+ 10 << 16, 40 << 16,
+ { { 0 << 16, 0 << 16 }, { 10 << 16, 50 << 16 } },
+ { { 150 << 16, 0 << 16 }, { 160 << 16, 50 << 16 } },
+ }
+ };
+ 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);
+
+ for (;;)
+ {
+ XEvent event;
+ char c = 1;
+ int dstx = rand() % 300;
+ int dsty = rand() % 300;
+
+ XSync (dpy, False);
+
+#if 0
+ while (XPending (dpy))
+ {
+ XNextEvent (dpy, &event);
+
+ if (event.type == devent + XDamageNotify)
+ printf ("Got damage\n");
+ }
+#endif
+
+ XRenderCompositeTrapezoids (dpy, PictOpOver, src, dst, NULL,
+ 0, 0, traps, 1);
+
+ usleep (70000);
+ }
+ return 0;
+}