Allegro.cc - Online Community

Allegro.cc Forums » Programming Questions » events becoming slow

This thread is locked; no one can reply to it. rss feed Print
events becoming slow
shadyvillian
Member #12,426
December 2010

The events in my program are starting to become slow. for example when you click over some text in a list a white box is draw around the selected text. and theres fifteen lines of text that can be selected so it has to check for all of that. but sometimes I have to click on the same spot multiple times for in to work and I'd like it to be instant. Do you think its just way that I'm doing it is slow?

Software Engineer by day, hacker by night.

Thomas Fjellstrom
Member #476
June 2000
avatar

You need to make sure you aren't letting events pile up in the queue. The event loop template I used in the wiki's Allegro 5 tutorial keeps that from happening.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

shadyvillian
Member #12,426
December 2010

ALLEGRO_EVENT ev;
ALLEGRO_TIMEOUT timeout;
al_init_timeout(&timeout, 0.06);
 
bool get_event = al_wait_for_event_until(event_queue, &ev, &timeout);

You mean this?

Software Engineer by day, hacker by night.

Thomas Fjellstrom
Member #476
June 2000
avatar

Thats part of it, your main loop needs to not always redraw every loop, or you need to drain the events (and properly handle them) before you get that far.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

OnlineCop
Member #7,919
October 2006
avatar

One way a company I worked for handled things like this was to have commands and events. With events, everything gets notified. With commands, if the top object doesn't handle it, it passes it along to the next one. If the command gets all the way up the chain and no one "answers" it, the command is simply discarded by the object manager.

Say you have 3 windows on top of each other. If the top-most one is a modal dialogue box, you DON'T want the ones below it to receive the click event. So instead of an event, you pass up commands. The button will respond that it handled the command, and the command is flushed so nothing else sees it.

That may be one way you can handle this kind of construct with all of that text on top of each other...

Go to: