On Fri, Nov 01, 2002 at 04:18:47PM -0600, Billy Biggs wrote: > Owen Taylor ([EMAIL PROTECTED]): > > > Michel D?nzer <[EMAIL PROTECTED]> writes: > > > > > The interface we've implemented in the DRM is an ioctl which > > > basically blocks for a requested number of vertical blanks (it's > > > more flexible in fact). Maybe a daemon or something could provide a > > > file descriptor to select against? > > > > Both select and a blocking ioctl are really the wrong interface here. > > > > select() or poll() are problematical because select() waits for a > > condition, not an event. That is, these function calls are designed > > things like "tell me when there is more data to read". > > > > The blocking ioctl is a pain because it means you have to devote a > > thread to waiting for the VBI; but it at least is well defined. > > > > Unix signals are another possibility - a real pain to program, but at > > least they were designed for things like this. "Tell me when the next > > VBI occurs" has very similar semantics to alarm(2). > > I like the idea of a file descriptor that, when you read() from it, > gives the timestamp of the last VBI. This has a natural mapping to > hardware interrupts (unlike giving milliseconds until the next VBI as > was suggested in another response, since we don't really know that), and > it matches the semantics of select(). It also allows nicely for async > access. > > Good timestamps (preferably ones matches those returned from APIs like > ALSA or V4L2) are essential for most of the applications I can think of, > and if anyone disagrees with me on this point let me know. :)
You need to be able to block on it, though. Otherwise, you have to poll it: for(;;) { read(vblank, ×tamp, sizeof(struct timestamp)); if(timestamp.vblank_number > prev_vblank_number) { prev_vblank_number = timestamp.vblank_number; swap_buffers(); } perform_less_than_1_millisecond_of_work_or_possibly_just_spin(); } This will not make you happy, especially since this needs to be running in a real-time scheduling class. :-) -J _______________________________________________ Xpert mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xpert