return false;
}
+// TODO: uncomment when I find how to use intelfb instead of i915 GRRRR.-
+
+/*
fb_vblank vblank;
if(ioctl(dev_fd, FBIOGET_VBLANK, &vblank) == -1) {
fprintf(stderr, "FBIOGET_VBLANK error: %s\n", strerror(errno));
printf("count: %d\n", vblank.count);
printf("beam position: %d, %d\n", vblank.hcount, vblank.vcount);
}
+*/
return true;
}
void wait_vsync()
{
unsigned long arg = 0;
-
- timeval tvstart, tvend;
- gettimeofday(&tvstart, 0);
-
if(ioctl(dev_fd, FBIO_WAITFORVSYNC, &arg) == -1) {
- printf("ioctl error %s\n", strerror(errno));
+// printf("ioctl error %s\n", strerror(errno));
}
-
- gettimeofday(&tvend, 0);
- printf("%ld %ld\n", tvend.tv_sec - tvstart.tv_sec, tvend.tv_usec - tvstart.tv_usec);
}
#endif // WINNIE_FBDEV
void Window::draw(const Rect &dirty_region)
{
- Rect intersect = rect_intersection(rect, dirty_region);
+ Rect abs_rect = get_absolute_rect();
+ Rect intersect = rect_intersection(abs_rect, dirty_region);
if(intersect.width && intersect.height) {
if(callbacks.display) {
callbacks.display(this);
}
dirty = false;
- draw_children(rect);
+ draw_children(abs_rect);
}
}
frame->set_display_callback(display);
frame->set_mouse_button_callback(mouse);
frame->set_mouse_motion_callback(motion);
-
- frame->add_child(win);
frame->set_focusable(false);
+ frame->add_child(win);
windows.push_back(frame);