Spinning pinwheel

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.Lua error in package.lua at line 80: module 'strict' not found.

Spinning Wait Cursor as seen in OS X El Capitan

The spinning wait cursor is a variation of the mouse pointer arrow, used in Apple's OS X to indicate that an application is busy.[1]

The icon is also commonly referred to as the spinning beach ball[lower-alpha 1] and the spinning wheel of death. Officially, the OS X Human Interface Guidelines refers to it as the spinning wait cursor,[2] but it is also known by many other names.

The spinning wheel is used in many other operating systems and contexts.

History

A wristwatch was the first wait cursor in early versions of Mac OS. Apple's HyperCard first popularized animated cursors, including a black and white spinning quartered circle resembling a beach ball. The cursors could be advanced by repeated HyperTalk invocations of "set cursor to busy." The beach ball cursor was also adopted to indicate running script code in the HyperTalk-like AppleScript.

These cursors are activated by applications performing lengthy operations. (Microsoft Windows would later adopt the Apple Lisa hourglass for the same concept.) 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 monochrome (2 bit)

NeXTStep 1.0 originally used a monochrome icon resembling a spinning Magneto-Optical disk[lower-alpha 2] This drive was quite slow and so was a common reason for the wait cursor to appear.

NeXTStep color (12 bit)

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 (and most of them had already died due to dust) but the icon remained. It soon got a new meaning as the contemporary[lower-alpha 3] CD Rom drives were even slower (at 1x, 150 KiB/s).

File:WaitCursor-300p.gif
Mac OS X (24 bit)

With the arrival of Mac OS X the cursor was often called the "spinning beach ball" in the press,[5] presumably by authors not knowing it's NeXT history or relating it to the hypercard wait cursor (which it was clearly not).

However that name stuck and presumably has influenced the redesign, uniting both histories.

The two dimensional appearance was kept essentially unchanged[lower-alpha 4] from NeXT through 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.0/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]

With OS X 10.11 El Capitan the spinning wait cursor's design was updated. It now shows less shadow and brighter, more solid colors to better match the design of the UI. The UI design was changed in OS X 10.10. Also for the first time ever the color pinwheel actually rotates. Instead of a semi dark and light transparent layer on top of the color pinwheel in previous versions.

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). If an application takes longer than 2 seconds[7] to process the events in its event queue (regardless of the exact 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 may recover, however it may also indicate that the application has entered an unrecoverable state or an infinite loop.

This prevents the user from closing, resizing, or even minimizing the windows of that application, however moving the window is still possible in OS X and previously hidden parts of the window are usually redrawn even when the application is unresponsive.

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.

While one application is unresponsive, typically other applications are usable in the meantime.

Guidelines, tools and methods for developers

Apple's guidelines suggest that developers try to avoid the spinning wait cursor, and suggest other user interface indicators, such as an asynchronous progress indicator.

Possible causes include:

  • By default, events (and any actions they initiate) are processed sequentially. This design works well when each event leads to only a trivial amount of processing, which causes the application to appear responsive. However, if the processing takes too long, the spinning wait cursor will appear until the operation is complete.

Developers may prevent this happening by performing processing on a separate thread, allowing the application's main thread to continue responding to events. However, this greatly increases the application complexity.

Another approach is to divide the work in smaller packets and use the NSRunLoop or to use Grand Central Dispatch.

  • Bugs in applications can cause them to stop responding to events; for instance, an infinite loop or a deadlock. Applications that do this rarely recover.
  • Problems with the virtual memory system such as slow paging caused by a spun-down hard disk (or, potentially, read errors) will cause the wait cursor to appear. In this case, multiple applications will display the wait cursor as they attempt to access memory that must be paged in 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.

Patronage

  • iOS
  • GNOME

Alternate names

The spinning wait cursor is commonly referred to as the (Spinning) x (of Death/Doom).[lower-alpha 5] The most common words or phrases x can be replaced with include:

See also

Notes

  1. <templatestyles src="Module:Hatnote/styles.css"></templatestyles>
  2. NeXT Optical Discs, Photo of the underside, showing the rainbow effect depicted on the icon (a then new type of media that was build into the early NeXT Cubes.)
  3. often an external AppleCD drive was used
  4. afaik not a single bit was changed
  5. named after the Blue Screen of Death
  6. frequently encountered across Mac users forums as The SPOD

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Macworld 2002-04-01
  6. Ars Technica Jaguar review: "The dreading "spinning rainbow disc" has an all new look in Jaguar"
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.

External links