Home | History | Annotate | Download | only in test

Lines Matching refs:pp

389 	struct perpixel *pp;
398 pp = calloc(sz, sizeof(*pp));
399 if (!pp)
405 pp[i].win = XCreateWindow(dpy, DefaultRootWindow(dpy),
410 XMapWindow(dpy, pp[i].win);
411 list_init(&pp[i].mru);
413 pp[i].buffer[n].pixmap = xcb_generate_id(c);
414 xcb_create_pixmap(c, depth, pp[i].buffer[n].pixmap,
415 pp[i].win, 1, 1);
416 pp[i].buffer[n].fence.xid = 0;
417 pp[i].buffer[n].fd = -1;
418 pp[i].buffer[n].id = n;
423 if (dri3_create_fence(dpy, pp[i].win, &pp[i].buffer[n].fence))
427 xcb_dri3_buffer_from_pixmap(c, pp[i].buffer[n].pixmap),
433 pp[i].buffer[n].fd = fds[0];
437 xshmfence_trigger(pp[i].buffer[n].fence.addr);
439 pp[i].buffer[n].busy = 0;
440 list_add(&pp[i].buffer[n].link, &pp[i].mru);
444 pp[i].eid = xcb_generate_id(c);
445 xcb_present_select_input(c, pp[i].eid, pp[i].win,
448 pp[i].Q = xcb_register_for_special_xge(c, &xcb_present_id, pp[i].eid, &stamp);
450 pp[i].queued = 0;
469 list_for_each_entry(tmp, &pp[i].mru, link) {
482 pp[i].queued--;
488 xcb_wait_for_special_event(c, pp[i].Q);
496 pp[i].queued--;
503 pp[i].buffer[ie->serial].busy = 0;
505 b = &pp[i].buffer[ie->serial];
510 } while ((ev = (xcb_present_generic_event_t *)xcb_poll_for_special_event(c, pp[i].Q)));
514 xcb_present_pixmap(c, pp[i].win, b->pixmap, b->id,
527 list_move(&b->link, &pp[i].mru);
528 pp[i].queued++;
541 xcb_create_pixmap(c, depth, pixmap, pp[i].win, 1, 1);
542 xcb_present_pixmap(c, pp[i].win, pixmap, 0xdeadbeef,
557 list_for_each_entry(b, &pp[i].mru, link)
561 completed += pp[i].queued;
562 } else while (pp[i].queued) {
566 xcb_wait_for_special_event(c, pp[i].Q);
574 pp[i].queued--;
581 } while ((ev = (xcb_present_generic_event_t *)xcb_poll_for_special_event(c, pp[i].Q)));
591 if (pp[i].buffer[n].fence.xid)
592 dri3_fence_free(dpy, &pp[i].buffer[n].fence);
593 if (pp[i].buffer[n].fd != -1)
594 close(pp[i].buffer[n].fd);
595 xcb_free_pixmap(c, pp[i].buffer[n].pixmap);
598 if (pp[i].Q) {
599 xcb_discard_reply(c, xcb_present_select_input_checked(c, pp[i].eid, pp[i].win, 0).sequence);
601 xcb_unregister_for_special_event(c, pp[i].Q);
604 XDestroyWindow(dpy, pp[i].win);
606 free(pp);