RE: Signal dispatching slowed down after upgrade
- From: BALLABIO GERARDO <GERARDO BALLABIO ESTERNI GRUPPO MPS IT>
- To: "gtkmm-list gnome org" <gtkmm-list gnome org>
- Subject: RE: Signal dispatching slowed down after upgrade
- Date: Wed, 16 Feb 2011 12:03:32 +0100
From: BALLABIO GERARDO
> From: Krzysztof Kosiński [mailto:tweenk pl gmail com]
> > The slowdown is not caused by signal emission, but by modify_bg. If you write a custom expose handler that draws the cells, the updates are instantaneous. See the attached file.
>
> Wow. I still don't understand why modify_bg would be that slow, but at least I can work around it, so thank you.
I think now I understand. I guess that modify_bg doesn't just change the background of the widget, but also sends an expose event to have it redrawn. Indeed I removed the queue_draw() call from my example and the cells still get updated. So if I change the background of 400 cells, 400 expose events are queued and it takes quite a lot of time to process them. (Yet the previous Debian release did it much faster, and I don't think it's a theming issue, I'm using the same standard Clearlooks theme, as far as I can see only the wallpaper has changed. So I'd still think it's a regression.)
Is there a way to merge all those events into a single one? I suppose that would give a major speedup.
Also, can anybody answer my further question (quoted below)?
> But now I have another question. If I move the pointer around with no buttons pressed, the cells change color every time it enters a new cell. But if I press any button and move the pointer while keeping it pressed, then nothing happens any more. Only when I release the button the cell where the pointer is at that moment is activated. In other words, it seems that pressing buttons inhibits the generation of enter_notify events. I've tried also with pointer_motion events, but it does exactly the same thing (except it doesn't activate the cell even when I release the button). I want the program to behave in the same way whether buttons are pressed or not. How can I do that?
Thank you
Gerardo
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]