You have the main framebuffer on the OpenMV Cam. This holds your image you are working on. There are also back buffers which DMA is writing images to if you set the number of framebuffers higher than 1. By default the system will try to use up to 3 buffers to give you the best frame rate. However, you can set the number of frame buffers to 1 such that there’s only one and that the system isn’t doing anything else until you call snapshot.
Then there’s the jpeg buffer which is what the IDE reads. It’s only updated when snapshot is called or you call flush. Note that the jpeg buffer is locked by the IDE when it’s reading it so it’s not guaranteed that calling flush will update what’s in the IDE as it may be reading the previous image. Only print(compressed_for_ide()) can force an image to the IDE. But, at the cost of blocking.