diff options
author | June McEnroe <programble@gmail.com> | 2018-02-05 14:47:19 -0500 |
---|---|---|
committer | June McEnroe <programble@gmail.com> | 2018-02-05 14:47:19 -0500 |
commit | a150d3d2eaaa4411d7cdc625c198c76d71a9638f (patch) | |
tree | b5b9963bcd000bd759e2e4e0f9f78901289a1cfe /bin | |
parent | Rewrite gfxx bit handling (diff) | |
download | src-a150d3d2eaaa4411d7cdc625c198c76d71a9638f.tar.gz src-a150d3d2eaaa4411d7cdc625c198c76d71a9638f.zip |
Double-buffer gfb frontend
Still not vsync (seems like a newer DRM-fbdev implementation handles FBIO_WAITFORVSYNC but my kernel doesn't), but avoids flicker from clearing to black for each frame.
Diffstat (limited to 'bin')
-rw-r--r-- | bin/gfb.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/bin/gfb.c b/bin/gfb.c index 1cd56ac8..3606bb05 100644 --- a/bin/gfb.c +++ b/bin/gfb.c @@ -19,6 +19,7 @@ #include <linux/fb.h> #include <stdint.h> #include <stdlib.h> +#include <string.h> #include <sys/ioctl.h> #include <sys/mman.h> #include <sysexits.h> @@ -75,8 +76,10 @@ int main(int argc, char *argv[]) { error = tcsetattr(STDERR_FILENO, TCSADRAIN, &term); if (error) err(EX_IOERR, "tcsetattr"); + uint32_t back[info.xres * info.yres]; for (;;) { - draw(buf, info.xres, info.yres); + draw(back, info.xres, info.yres); + memcpy(buf, back, size); char in; ssize_t len = read(STDERR_FILENO, &in, 1); |