X-Git-Url: https://git.ti.com/gitweb?p=glsdk%2Fkmscube.git;a=blobdiff_plain;f=kmscube.c;h=f0b1d6e4a3b9e17585c2fa571e85a3f0838dcf75;hp=e8c90d4b1f0969c6686fa2312fb7e58e9de50805;hb=3e9807ddcf2b4e8ccf711cdaf851752ec40d7904;hpb=24e94f583119896b3ab8ecc7b35c7de3160dcb1f diff --git a/kmscube.c b/kmscube.c index e8c90d4..f0b1d6e 100644 --- a/kmscube.c +++ b/kmscube.c @@ -826,7 +826,7 @@ static void page_flip_handler(int fd, unsigned int frame, unsigned int sec, unsigned int usec, void *data) { int *waiting_for_flip = data; - *waiting_for_flip = 0; + *waiting_for_flip = *waiting_for_flip - 1; } void print_usage() @@ -955,7 +955,8 @@ int main(int argc, char *argv[]) while (frame_count != 0) { struct gbm_bo *next_bo; - int waiting_for_flip = 1; + int waiting_for_flip; + int cc; draw(i++); @@ -968,11 +969,24 @@ int main(int argc, char *argv[]) * hw composition */ - ret = drmModePageFlip(drm.fd, drm.crtc_id[DISP_ID], fb->fb_id, - DRM_MODE_PAGE_FLIP_EVENT, &waiting_for_flip); - if (ret) { - printf("failed to queue page flip: %s\n", strerror(errno)); - return -1; + if (all_display) { + for (cc=0;ccfb_id, + DRM_MODE_PAGE_FLIP_EVENT, &waiting_for_flip); + if (ret) { + printf("failed to queue page flip: %s\n", strerror(errno)); + return -1; + } + } + waiting_for_flip = drm.ndisp; + } else { + ret = drmModePageFlip(drm.fd, drm.crtc_id[DISP_ID], fb->fb_id, + DRM_MODE_PAGE_FLIP_EVENT, &waiting_for_flip); + if (ret) { + printf("failed to queue page flip: %s\n", strerror(errno)); + return -1; + } + waiting_for_flip = 1; } while (waiting_for_flip) {