[vox-tech] Xlib event loop

R. Douglas Barbieri vox-tech@lists.lugod.org
Thu, 18 Dec 2003 18:13:46 -0800


--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Dec 19, 2003 at 11:47:00AM +1100, Julie Russell wrote:
> Hi Everyone,
>=20
> I am programming in c++ and xlib using common c++ threads. I want to slee=
p a
> thread (which I have initiated as detached). During that process I want to
> recieve events from the xlib event loop and if triggered, interrupt the
> sleeping thread, or if not interrupted, have the thread wake up on it's o=
wn
> after 20 seconds. The problem is, while that thread is asleep, for some
> reason, my event loop appears to be blocked. How can I sleep a thread so
> that the loop doesn't block and then interrupt it cleanly. Why does the x=
lib
> event loop appear to be blocked during this process.

I can think of how I would do this in Win32 There is a API function
called PeekMessage() which "peeks" at the pending message waiting but
does not block. I would use that, but for sleeping the thread, use
WaitOnMultipleObjects().

So, if there is a similar function for xlib which allows just a "peek,"
I would use it instead so that the thread doesn't block there. Then
use the pthread_cond_timeout() function to sleep. A signal to the
conditional object terminates the thread loop then.

I read somewhere that X likes all X-related calls to happen in just one
thread. It could be that when you read the next event, it blocks because
there is other X activity in the other thread? Just a guess, really.

>=20
> Thanks in advance,
> Julie.
>=20
>=20
>=20
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech

--=20
R. Douglas Barbieri
doug@dooglio.net
http://www.dooglio.net

GPG Fingerprint : FE6A 6A57 2B95 7594 E534  BFEE 45F1 9E5E F30A 8A27
MIT.edu recv-key: C55B91D4
GPG Public key  : http://www.dooglio.net/dooglio.asc

--4Ckj6UjgE2iN1+kY
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iQCVAwUBP+Je2UXxnl7zCoonAQLL/gP8DkuZqdltBskYakfbCM3vD3VG0P9UeJ+D
/CkcAHpiRkzMT6TvvF8iCdV5W+2zI+sGNS9vEZ8S6gaxk9n3EnO4DvhzKZjLmXfD
O8zekrOETFFci22rugfiE2e6tIHTk0Ev7f/xSc1Y3fYVbXIWGpTP9SUcdzCAehbA
1eXBqcDfdoQ=
=HfWh
-----END PGP SIGNATURE-----

--4Ckj6UjgE2iN1+kY--