The SwapBitsRastPortClipRect() routine is for applications that do not want to worry about clipping rectangles. void SwapBitsRastPortClipRect( struct RastPort *rp, struct ClipRect *cr ); For instance, you may use The SwapBitsRastPortClipRect() to produce a menu without using Intuition. There are two ways to produce such a menu: 1. Create an up-front layer with CreateUpfrontLayer(), then render the menu in it. This could use lots of memory and require a lot of (very temporary) "slice-and-dice" operations to create all of the clipping rectangles for the existing windows and so on. 2. Use SwapBitsRastPortClipRect(), directly on the display drawing area: * Render the menu in a back-up area off the display, then lock all of the on-display layers so that no task may use graphics routines to draw over the menu area on the display. * Next, swap the on-display bits with the off-display bits, making the menu appear. * When finished with the menu, swap again and unlock the layers. The second method is faster and leaves the clipping rectangles and most of the rest of the window data structures untouched. Warning: -------- All of the layers must be locked while the menu is visible if you use the second method above. Any task that is using any of the layers for graphics output will be halted while the menu operations are taking place. If, on the other hand, the menu is rendered as a layer, no task need be halted while the menu is up because the lower layers need not be locked.