The fact that you wait for a callback before drawing is good. However you should probably draw first and wait for another callback before redrawing. Secondly, I think this one was overlooked...