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


NAME
    LockIBase -- Invoke semaphore arbitration of IntuitionBase.

SYNOPSIS
    Lock = LockIBase( LockNumber )
    D0                D0

    ULONG LockIBase( ULONG );

FUNCTION
    Grabs Intuition internal semaphore so that caller may examine
    IntuitionBase safely.  This function is not a magic "fix all my
    race conditions" panacea.

    The idea here is that you can get the locks Intuition needs before
    such IntuitionBase fields as ActiveWindow and FirstScreen are
    changed, or linked lists of windows and screens are changed.

    Do Not Get Tricky with this entry point, and do not hold these locks
    for long, as all Intuition input processing will wait for you to
    surrender the lock by a call to UnlockIBase().

    NOTE WELL: A call to this function MUST be paired with a subsequent
    call to UnlockIBase(), and soon, please.

    NOTE WELL: Do not call any Intuition functions (nor any graphics,
    layers, dos, or other high-level system function) while
    holding this lock.

INPUTS
    A long unsigned integer, LockNumber, specifies which of Intuition's
    internal locks you want to get.  This parameter should be zero for all
    forseeable uses of this function, which will let you examine active
    fields and linked lists of screens and windows with safety.

RESULT
    Returns another ULONG which should be passed to UnlockIBase() to
    surrender the lock gotten by this call.

BUGS
    This function must not be called while holding any other system locks
    such as layer or LayerInfo locks.

SEE ALSO
    UnlockIBase(), layers.library/LockLayerInfo(),
    exec.library/ObtainSemaphore()


[Back to Amiga Developer Docs]