What's happening is simple: only your original window is calling glutPostRedisplay(). A simple solution is to make sure that the glutIdleFunc callback is calling your display function.