[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

Bracketing the display updating in the BeginRefresh()/EndRefresh() pair
automatically restricts all rendering to the "damaged" areas.

    void BeginRefresh( struct Window *window );
    void EndRefresh  ( struct Window *window, long complete );

These functions makes sure that refreshing is done in the most efficient
way, only redrawing those portions of the window that really need to be
redrawn.  The rest of the rendering commands are discarded.

Operations performed between the BeginRefresh()/EndRefresh() pair should
be restricted to simple rendering.  All of the rendering functions in
Intuition library and Graphics library are safe.  Calls to
RefreshGadgets() are not permitted.  Avoid calls that may lock the
LayerInfo, or get complicated in Intuition, since BeginRefresh() leaves
the window's layer or layers locked.  Avoid AutoRequest(), and therefore
all direct or indirect disk related DOS calls.  See the
"Intuition Gadgets" chapter for more information on gadget restrictions
with BeginRefresh()/EndRefresh().

Certain applications do not need to receive refresh events, and can avoid
having to call BeginRefresh() and EndRefresh() by setting the
WFLG_NOCAREREFRESH flag or the WA_NoCareRefresh tag in the
OpenWindowTagList() call.

The EndRefresh() function takes a boolean value as an argument (complete
in the prototype above).  This value determines whether refreshing is
completely finished.  When set to FALSE, further refreshing may be
performed between subsequent BeginRefresh()/ EndRefresh() pairs.  Set the
boolean to TRUE for the last call to EndRefresh().

It is critical that applications performing multiple
BeginRefresh()/EndRefresh() pairs using EndRefresh(win,FALSE) hold layers
locked through the entire process.  The layer lock may only be released
after the final call to EndRefresh(win,TRUE). See the "Layers Library" for
more details.

The procedures outlined in this section take care of refreshing what is
inside the window.  Another function named RefreshWindowFrame() refreshes
window borders, including the title region and gadgets:

    void RefreshWindowFrame( struct Window *window );

Applications can use this function to update window borders after
overwriting them with graphics.

[Back to Amiga Developer Docs]