nsf / termbox

Library for writing text-based user interfaces
http://code.google.com/p/termbox
MIT License
1.96k stars 185 forks source link

Add tb_poll_fds() to obtain file descriptors for polling #119

Open tobyp opened 5 years ago

tobyp commented 5 years ago

This adds a function to obtain file descriptors from termbox that can be be polled for IO-readiness. This can be used to integrate termbox into an event loop like asyncio or curio in python, or libuv in C, so the program can process other things (like network sockets) asynchronously with UI events.

The idea is to use tb_poll_fds() to get a set of descriptors, register them for polling (e.g. with EPOLLIN), and when any events arrive, the next tb_poll_event() can be expected to complete quickly.

(edit: markdown formatting and C usage example)

tobyp commented 4 years ago

Any feedback/requests on this? In theory, the function could output struct pollfds with the correct event masks set, but this ties the implementation to poll(), and doesn't map neatly for epoll, kqueue, and others. But, since there's a non-blocking tb_peek_event() function, it should be viable to poll for all read-like states, and risk a few spurious wake-ups.

nsf commented 4 years ago

Sorry for not responding. As you can see this project is not exactly well maintained. I'm sure main loop issues are relevant for the C world as what is offered is not perfect. But yeah, I don't think I have time for any sensible project maintenance right now. Feel free to keep the changes in your own fork if you need them.

I should probably add a note to README that this project is no longer maintained.