Possible expose race in GTK+ 2.4?


I'm building a large application on top of GTK+ 2.4. Sometimes, I have
noticed that widgets are not re-drawn properly.

So far, I have gathered the following data points

1) My application is single threaded.

2) The problem occurs _even_ when I use only stock GTK+ 2.4 widgets (as
opposed to widgets I wrote myself).

3) The problem occurs on several machines, with different Linux
distributions (Debian unstable, Gentoo).

4) The problem occurs with GTK+ 2.4, but only from time to time (let's
say 9 times out of 10). It looks like a race condition. I haven't
isolated a simple test case for you guys yet. I'm working on it.

5) The problem does _not_ occur with GTK+ 2.2. It could be that the
timings in GTK+ 2.2 are different, or it could be that a regression was
introduced in GTK+ 2.4.

6) By connecting handlers to the "size_request" and "size_allocate"
signals, as well as the "expose_event" event on a widget, I discovered
that when that widget is improperly re-drawn, the handlers are called in
this order 'expose, request, allocate' i.e. an expose does _not_ occur
after the last allocate, which seems wrong to me.

I'm posting here in the hope
o that either somebody already knows about the described issue, and can
point me to a solution,
o or that somebody will in the future notice the same symptoms, and
acknowledge that the issue is real.

Regis "HPReg" Duchesne

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]