Spinning pinwheel
The spinning pinwheel is a variation of the mouse pointer arrow, used in Apple's macOS to indicate that an application is busy.[1]
Officially, the OS X Human Interface Guidelines refers to it as the spinning wait cursor,[2] but it is also known by other names, including the spinning beach ball, the spinning wheel of death, and the spinning pizza of death (SPOD).
History
A wristwatch was the first wait cursor in early versions of the classic Mac OS. Apple's HyperCard first popularized animated cursors, including a black-and-white spinning quartered circle resembling a beach ball. The beach-ball cursor was also adopted to indicate running script code in the HyperTalk-like AppleScript. The cursors could be advanced by repeated HyperTalk invocations of "set cursor to busy".
Wait cursors are activated by applications performing lengthy operations. Some versions of the Apple Installer used an animated "counting hand" cursor. Other applications provided their own theme-appropriate custom cursors, such as a revolving Yin Yang symbol, Fetch's running dog, Retrospect's spinning tape, and Pro Tools' tapping fingers. Apple provided standard interfaces for animating cursors: originally the Cursor Utilities (SpinCursor, RotateCursor)[3] and, in Mac OS 8 and later, the Appearance Manager (SetAnimatedThemeCursor).[4]
From NeXTStep to Mac OS X
NeXTStep 1.0 used a monochrome icon resembling a spinning magneto-optical disk,[lower-alpha 1] whose drive was quite slow and so was a common reason for the wait cursor to appear.
When color support was added in NeXTStep 2.0, color versions of all icons were added. The magneto-optical drives were no longer delivered with these machines but its wait-cursor icon remained, continuing in its role, as the contemporary CD Rom drives were even slower (at 1x, 150 KB/s).[lower-alpha 2]
With the arrival of Mac OS X the wait cursor was often called the "spinning beach ball" in the press,[5] presumably by authors not knowing its NeXT history or relating it to the hypercard wait cursor.
The two-dimensional appearance was kept essentially unchanged[lower-alpha 3] from NeXT to Rhapsody/Mac OS X Server 1.0 which otherwise had a user interface design resembling Mac OS 8/Platinum theme, and through Mac OS X 10.0/Cheetah and Mac OS X 10.1/Puma, which introduced the Aqua user interface theme.
Mac OS X 10.2/Jaguar gave the cursor a glossy rounded "gumdrop" look in keeping with other OS X interface elements.[6] In OS X 10.10 The entire pinwheel rotates (previously only the overlaying translucent layer moved). With OS X 10.11 El Capitan the spinning wait-cursor's design was updated. It now has less shadowing and has brighter, more solid colors to better match the design of the user interface.
System usage
In single-tasking operating systems like the original MacOS, the wait cursor usually indicated that the computer was completely unresponsive to user input. This changed in multitasking operating systems like OS X, where it is usually possible to switch to another application and continue to work there.
The display of the wait cursor is controlled by the operating system, not by the application. This works as follows: each application has an event queue that receives events from the operating system (for example, key presses and mouse button clicks); and if an application takes longer than 2 seconds[7] to process the events in its event queue (regardless of the cause), 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 should recover. It also may indicate that the application has entered an unrecoverable state or an infinite loop. During this time the user is prevented from closing, resizing, or even minimizing the windows of the affected application, although moving the window is still possible in OS X, as well as previously hidden parts of the window being usually redrawn, even when the application is otherwise unresponsive. While one application is unresponsive, typically other applications are usable.
Users can choose to terminate an unresponsive application, by using "Force Quit" under the Apple menu, the keystroke command-option-escape, or the Force Quit command found by control-clicking (or right-clicking) the icon of an unresponsive application in the Dock.
Guidelines, tools and methods for developers
By default, events (and any actions they initiate) are processed sequentially, which works well when each event involves a trivial amount of processing, the spinning wait cursor appearing until the operation is complete. If processing takes long, the application will appear unresponsive. Developers may prevent this by using separate threads for lengthy processing, allowing the application's main thread to continue responding to external events. However, this greatly increases the application complexity. Another approach is to divide the work into smaller packets and use NSRunLoop or Grand Central Dispatch.
- Bugs in applications can cause them to stop responding to events; for instance, an infinite loop or a deadlock. Applications thus afflicted rarely recover.
- Problems with the virtual memory system—such as slow paging caused by a spun-down hard disk or disk read-errors—will cause the wait cursor to appear across multiple applications, until the hard disk and virtual memory system recover.
Instruments is an application that comes with the Mac OS X Developer Tools. Along with its other functions, 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 the spinning wait cursor is activated, Instruments can sample the process to determine which code is causing the application to stop responding. With this information, the developer can rewrite code to avoid the cursor being activated.
Apple's guidelines suggest that developers try to avoid invoking the spinning wait cursor, and suggest other user interface indicators, such as an asynchronous progress indicator.
Alternate names
The spinning wait cursor is commonly referred to as the (Spinning) x (of Death/Doom).[lower-alpha 4] The most common words or phrases x can be replaced with include:
- Disk
- (Beach) Ball[8][9]
- (Rainbow) wheel
- Pinwheel
- Pizza[lower-alpha 5]
- Marble
See also
Notes
- ↑ NeXT Optical Discs, Photo of the underside, showing the rainbow effect depicted on the icon (a then new type of media that was built into the early NeXT Cubes.)
- ↑ often an external AppleCD drive was used
- ↑ not a single bit was changed
- ↑ named after the Blue Screen of Death
- ↑ frequently encountered across Mac users forums as The SPOD
References
- ↑ "Mini-Tutorial: The dreaded spinning pinwheel; Avoiding unresponsiveness/slow-downs in Mac OS X". CNet. 10 March 2005. Retrieved 16 July 2012.
- ↑ "OS X Human Interface Guidelines". Apple, Inc. Retrieved 18 October 2012.
- ↑ "Using the Cursor Utilities (IM: Im)". Developer.apple.com. Retrieved 2010-04-30.
- ↑ "SetAnimatedThemeCursor". Developer.apple.com. Retrieved 2010-04-30.
- ↑ Macworld 2002-04-01
- ↑ Ars Technica Jaguar review: "The dreading "spinning rainbow disc" has an all new look in Jaguar"
- ↑ "WWDC 2012 – Session 709 – What's New in the File System" (PDF). Apple. Retrieved 2015-06-15.
Applications SPOD if they don’t service the event loop for two seconds
- ↑ Swain, Gregory E. (28 May 2010). "Troubleshoot the spinning beach ball". ((MacWorld)). Retrieved 16 July 2012.
- ↑ Todd, Charlie (9 March 2012). "Spinning Beach Ball of Death". ((Improv Everywhere)). Retrieved 16 July 2012.
External links
- Apple Human Interface Guidelines: Standard Cursors from Apple's website.
- Perceived Responsiveness: Avoid the Spinning Cursor from Apple's website.
- Troubleshooting the "Spinning Beach Ball of Death" Excerpt from “Troubleshooting Mac OS X” book where there are some information on how to deal with Spinning Wait Cursor problems.