db_xdbe.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #define DB_IMPL_NAME "Xdbe"
  2. typedef struct {
  3. Display *display;
  4. Window window;
  5. GC gc;
  6. XdbeBackBuffer back_buffer;
  7. } DB;
  8. void db_init(DB *db, Display *display, Window window)
  9. {
  10. int major_version_return, minor_version_return;
  11. if(XdbeQueryExtension(display, &major_version_return, &minor_version_return)) {
  12. printf("XDBE version %d.%d\n", major_version_return, minor_version_return);
  13. } else {
  14. fprintf(stderr, "XDBE is not supported!!!1\n");
  15. exit(1);
  16. }
  17. db->display = display;
  18. db->window = window;
  19. db->gc = XCreateGC(display, window, 0, NULL);
  20. db->back_buffer = XdbeAllocateBackBufferName(display, window, 0);
  21. }
  22. void db_clear(DB *db)
  23. {
  24. XSetForeground(db->display, db->gc, 0);
  25. XFillRectangle(db->display, db->back_buffer, db->gc, 0, 0, WIDTH, HEIGHT);
  26. }
  27. void db_fill_rect(DB *db, int x, int y, unsigned int w, unsigned int h)
  28. {
  29. XSetForeground(db->display, db->gc, 0xFF0000);
  30. XFillRectangle(db->display, db->back_buffer, db->gc, x, y, w, h);
  31. }
  32. void db_swap_buffers(DB *db)
  33. {
  34. XdbeSwapInfo swap_info;
  35. swap_info.swap_window = db->window;
  36. swap_info.swap_action = 0;
  37. XdbeSwapBuffers(db->display, &swap_info, 1);
  38. }