MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / event_loop

Function event_loop

util/fbxtest.cpp:573–684  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

571
572
573void event_loop(void)
574{
575 fbx_struct fb[10];
576 int frame = 0, inc = -1; bool first = true;
577 unsigned long frames = 0;
578 Timer timer;
579 double elapsed, mpixels = 0.;
580 char temps[256];
581
582 for(int i = 0; i < 10; i++)
583 {
584 memset(&fb[i], 0, sizeof(fb[i]));
585 }
586
587 try
588 {
589 for(int i = 0; i < 10; i++)
590 {
591 TRY_FBX(fbx_init(&fb[i], wh, 0, 0, doShm ? 1 : 0));
592 snprintf(temps, 256, "frame%d.ppm", i);
593 unsigned char *buf = NULL; int tempw = 0, temph = 0;
594 if(bmp_load(temps, &buf, &tempw, 1, &temph, fb[i].pf->id,
595 BMPORN_TOPDOWN) == -1)
596 THROW(bmp_geterr());
597 for(int j = 0; j < min(temph, fb[i].height); j++)
598 memcpy(&fb[i].bits[fb[i].pitch * j], &buf[tempw * fb[i].pf->size * j],
599 min(tempw, fb[i].width) * fb[i].pf->size);
600 free(buf);
601 }
602
603 timer.start();
604 while(1)
605 {
606 advance = false; doDisplay = false;
607 if(first)
608 {
609 doDisplay = true; first = false;
610 }
611
612 #ifdef _WIN32
613
614 int ret; MSG msg;
615 if((ret = GetMessage(&msg, NULL, 0, 0)) == -1) { THROW_W32(); }
616 else if(ret == 0)
617 {
618 for(int i = 0; i < 10; i++) fbx_term(&fb[i]);
619 break;
620 }
621 TranslateMessage(&msg);
622 DispatchMessage(&msg);
623
624 #else
625
626 while(1)
627 {
628 XEvent event;
629 if(XPending(wh.dpy) > 0) XNextEvent(wh.dpy, &event);
630 else break;

Callers 1

mainFunction · 0.70

Calls 8

bmp_loadFunction · 0.85
bmp_geterrFunction · 0.85
fbx_termFunction · 0.85
XNextEventFunction · 0.85
fbx_writeFunction · 0.85
elapsedMethod · 0.80
minFunction · 0.50
startMethod · 0.45

Tested by

no test coverage detected