]> sigrok.org Git - libsigrok.git/commit
session: Unify handling of I/O and timer sources
authorDaniel Elstner <redacted>
Mon, 31 Aug 2015 00:35:57 +0000 (02:35 +0200)
committerDaniel Elstner <redacted>
Thu, 3 Sep 2015 17:37:09 +0000 (19:37 +0200)
commitfaa5d7d997718acdd2b293a32dd62e28268b391f
treebc446ad9695e5575473908a47653dd0ab14e8534
parent62d7945f8059ccbf56dfa2e5eb60671dd5bc959b
session: Unify handling of I/O and timer sources

Handle I/O sources and timer ("dummy") sources within the same
polling loop, so that both may be used together. Slightly change
the API to improve consistency: a timeout value of -1 now disables
the timeout, and 0 makes the source always time out immediately.
The "dummy" sources already behaved that way, although it wasn't
documented as such.

Make sure that I/O events are processed preferentially: Skip any
timeout callbacks if an I/O event occurred within the same poll
iteration. This applies to both timer/idle sources and timeouts
of I/O sources.

Do not create dummy GPollFDs for timer/idle sources. Instead,
split the sources array into an I/O section and a timer section,
and create corresponding GPollFDs only for the I/O section. Use
GArray to simplify the handling of the dynamic arrays.
src/libsigrok-internal.h
src/session.c