update frame, add max idle check