the over state changes immediately, but the over state doesn't draw for 5 seconds or so
Did you measure the time using the method I posted in the post before the one I just quoted? If you did, and it took 5 seconds, then it was your Draw() method taking 5 seconds to complete.
Ok so I exported this whole module class to a standalone program and everything worked perfect with the code unchanged. What does this tell us edgar?
It depends. There has to be something different. In the program that was slow to visually update, you were using a second display. Did you load any resources used in it in the same thread that you created the display in? Or if there were any resources, were they loaded in a separate thread? That would cause them to be slow memory bitmaps. In fact, I don't see you loading your card images anywhere in the code you posted.
Your resources may be attached to another display - you'd have to ask the Allegro devs about that - that might be causing part of the problem.
The first display shouldn't be taking any processor power except for the allegro thread that runs it's window process, which should be minimal.
Still not sure what's wrong though.