The name of this flag seems backwards. "touchFocusDone = false" means to me that the camera is still focusing and that touches should not be allowed to initiate new focus attempts.  But the code uses the flag the other way, which just doesn't make sense to me.

I suggest you call this variable 'focusing'