Spinning pinwheel

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by N-Bot (talk | contribs) at 20:04, 2 October 2006 (Changing links-to-redirects-to-lists to links-to-list-sections. See userpage for more info.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Jump to navigation Jump to search
File:Waitcursor.gif

The spinning wait cursor (sometimes called the spinning beachball of death, spinning pinwheel of death, spinning pizza of death, SBOD or SPOD) is a cursor in Apple's Mac OS X used to indicate that an application is unresponsive. It is similar to the hourglass icon in Windows.

History

The first wait cursor was a wrist-watch in System 7 and earlier. Other busy indicators were a spinning black and white disc, or a spinning red and yellow disc. These cursors would be activated by an application when it was performing a lengthy operation. Until Mac OS 8, implementation of animated cursors was left to the application. As a result, even beyond Mac OS 8 different applications use different busy indicators[citation needed].

In Mac OS X, Apple gave the wheel psychedelic colors and a more dynamic appearance. More significantly, Apple changed its meaning. Rather than being an indication that an application was performing an action it expected to take a while, it meant that the system software had noticed that an application had stopped responding to events. This could indicate that the application was in an infinite loop, or just performing a lengthy operation and ignoring events.

Like many other Mac OS 9 to Mac OS X changes, this new wait cursor originated with NEXTSTEP which eventually became the basis for Mac OS X.

Explanation

Each application has an event queue which receives events from the operating system (for example key presses and mouse button clicks). If an application takes too long to process the events in its event queue, then the operating system displays the wait cursor whenever the cursor hovers over that application's windows.

This is meant to indicate that the application is temporarily unresponsive, a state from which the application may recover, however it may also indicate that the application has entered an unrecoverable state. Users can use "Force Quit" under the Apple menu (or the keystroke command-option-escape) and from a right-click on the unresponsive application icon on the Dock to terminate an application.

While one application is unresponsive, typically other applications are usable in the meantime. For example, if Safari freezes up and the beach ball appears, users can switch to iTunes and use that until Safari begins to respond again.

The wait cursor can also indicate a problem with the virtual memory system, as virtual memory page swaps will cause an application to stop responding. If all applications stop responding frequently for an extended period of time, the hard disk should be inspected and/or replaced. This type of problem should be taken seriously; typically, users consider this symptom to be just an unstable operating system, and are caught by surprise (and often without backup) when the hard disk fails completely[citation needed].

The wait cursor can also indicate other bugs in Mac OS X, although this is becoming less common as Mac OS X matures[citation needed].

Human Interface Guidelines

The spinning wait cursor will be automatically displayed by the Window Server when an application cannot process all of the events it receives; if an application does not respond for a certain amount of time (currently five seconds, up from two seconds in earlier versions of the operating system), the spinning wait cursor appears. Apple's Human Interface Guidelines suggest to developers that situations that cause spinning wait cursors should be eliminated programatically; their Xcode library provides an application called "Spin Control" to isolate these sections of code.

Developers

File:Spin Control.png
Spin Control is a developer tool used to monitor hangs, a situation that calls the spinning wait cursor.

Apple's guidelines suggest that developers try to avoid manually setting the spinning wait cursor, and suggest other UI indicators, such as an asynchronous progress indicator. Developers have limited control over the behavior of the wait cursor:

  • In Carbon, the Carbon Events Manager manages the wait cursor. Excessive polling of input devices can cause the spinning wait cursor to appear, or even cause the application to hang.
  • In Cocoa, the spinning wait cursor's behavior is managed by the standard NSCursor methods.

Nomenclature

The official Apple Human Interface Guidelines refers to this cursor as the "spinning wait cursor". Some Mac users often refer to the colorful wait cursor by a variety of more creative names, for example "the spinning beach ball of death" (a reference to Windows Blue Screen of Death), and the act of an application getting the spinning wait cursor is often referred to as "beachballing" or "SPODing".

Spin Control

Spin Control is an application that comes with the Mac OS X Developer Tools. It allows the user to monitor and sample applications that are either not responding or performing a lengthy operation. Each time an application does not respond and shows the spinning wait cursor which is activated by CoreImage, Spin Control will sample the application to determine which code is causing the application to stop responding. With this information you (or the developer) can determine what code is the cause of the application not responding. This will also allow the developer to rewrite code to avoid the hang.