#include <xcb/shm.h>
#include <xcb/xcb_aux.h>
#include <xcb/xcb_image.h>
+#define XCB_ALL_PLANES ~0
#include "lissajoux.h"
else
{
xcb_image_put (datap->conn, datap->draw, datap->gc, datap->image,
- 0, 0, 0, 0, W_W, W_H);
+ 0, 0, 0);
xcb_image_destroy (datap->image);
}
}
printf("FRAME COUNT..: %i frames\n", loop_count);
printf("TIME.........: %3.3f seconds\n", t);
printf("AVERAGE FPS..: %3.3f fps\n", (double)loop_count / t);
- if (do_shm)
- xcb_image_shm_destroy (datap->image);
xcb_disconnect (datap->conn);
exit(0);
}
format = rep->pixmap_format;
else
format = 0;
- datap->image = xcb_image_shm_create (datap->conn, datap->depth,
- format, NULL, W_W, W_H);
+ datap->image = xcb_image_create_native (datap->conn, W_W, W_H,
+ format, datap->depth, NULL, ~0, NULL);
assert(datap->image);
shminfo.shmid = shmget (IPC_PRIVATE,
- datap->image->bytes_per_line*datap->image->height,
+ datap->image->stride*datap->image->height,
IPC_CREAT | 0777);
assert(shminfo.shmid != -1);
shminfo.shmaddr = shmat (shminfo.shmid, 0, 0);
assert(shminfo.shmaddr);
datap->image->data = shminfo.shmaddr;
- shminfo.shmseg = xcb_shm_seg_new (datap->conn);
+ shminfo.shmseg = xcb_generate_id (datap->conn);
xcb_shm_attach (datap->conn, shminfo.shmseg,
shminfo.shmid, 0);
shmctl_status = shmctl(shminfo.shmid, IPC_RMID, 0);
screen = xcb_aux_get_screen(data.conn, screen_num);
data.depth = xcb_aux_get_depth (data.conn, screen);
- win.window = screen->root;
+ win = screen->root;
- data.gc = xcb_gcontext_new (data.conn);
+ data.gc = xcb_generate_id (data.conn);
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
valgc[0] = screen->black_pixel;
valgc[1] = 0; /* no graphics exposures */
xcb_create_gc (data.conn, data.gc, win, mask, valgc);
- bgcolor = xcb_gcontext_new (data.conn);
+ bgcolor = xcb_generate_id (data.conn);
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
valgc[0] = screen->white_pixel;
valgc[1] = 0; /* no graphics exposures */
xcb_create_gc (data.conn, bgcolor, win, mask, valgc);
- data.draw.window = xcb_window_new (data.conn);
+ data.draw = xcb_generate_id (data.conn);
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK | XCB_CW_DONT_PROPAGATE;
valwin[0] = screen->white_pixel;
valwin[1] = XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_EXPOSURE;
valwin[2] = XCB_EVENT_MASK_BUTTON_PRESS;
xcb_create_window (data.conn, 0,
- data.draw.window,
+ data.draw,
screen->root,
0, 0, W_W, W_H,
10,
XCB_WINDOW_CLASS_INPUT_OUTPUT,
screen->root_visual,
mask, valwin);
- xcb_map_window (data.conn, data.draw.window);
+ xcb_map_window (data.conn, data.draw);
- rect.pixmap = xcb_pixmap_new (data.conn);
+ rect = xcb_generate_id (data.conn);
xcb_create_pixmap (data.conn, data.depth,
- rect.pixmap, data.draw,
+ rect, data.draw,
W_W, W_H);
xcb_poly_fill_rectangle(data.conn, rect, bgcolor, 1, &rect_coord);
t_previous = 0.0;
while (1)
{
- e = xcb_poll_for_event(data.conn, NULL);
+ e = xcb_poll_for_event(data.conn);
if (e)
{
switch (e->response_type)