Spinning pinwheel: Difference between revisions

Content deleted Content added
a bit extreme but waiting is after all waiting
 
(650 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|Cursor on macOS indicating that an application is busy}}
[[Image:Waitcursor.gif|right|frame|The spinning wait cursor in Mac OS X appears when a program is busy]]
{{more footnotes needed|date=June 2016}}
The '''Spinning wait cursor''' icon in [[Apple Computer|Apple]]'s [[Mac OS X]] (sometimes called the '''spinning beachball''') is similar in intent to the [[Hourglass|hourglass]] icon in [[Microsoft Windows|Windows]]. The wait cursor will appear while an [[Application software|application]] or [[Computer program|program]] is unresponsive.
[[File:OS X 10.11 Beta Beach Ball.jpg|thumb|Spinning Wait Cursor as seen in [[OS X El Capitan]]]]
 
The '''spinning pinwheel''' is a type of [[progress indicator]] and a variation of the mouse [[pointer (graphical user interfaces)|pointer]] used in [[Apple Inc.|Apple]]'s [[macOS]] to indicate that an [[application software|application]] is busy.<ref name="cnet 2005">{{cite news|title=Mini-Tutorial: The dreaded spinning pinwheel; Avoiding unresponsiveness/slow-downs in Mac OS X|url=http://reviews.cnet.com/8301-13727_7-10334440-263.html?tag=mfiredir|accessdate=16 July 2012|newspaper=[[CNet]]|date=10 March 2005}}</ref>
 
Officially, the ''macOS Human Interface Guidelines'' refer to it as the '''spinning wait cursor''',<ref>{{Cite web|url=https://developer.apple.com/library/content/documentation//UserExperience/Conceptual/OSXHIGuidelines/Pointers.html#//apple_ref/doc/uid/20000957-CH97-SW2|title=macOS Human Interface Guidelines: Pointers|website=developer.apple.com|language=en|access-date=2018-01-24|archive-date=2022-06-21|archive-url=https://web.archive.org/web/20220621131854/https://developer.apple.com/design/human-interface-guidelines/platforms/designing-for-macos/#//apple_ref/doc/uid/20000957-CH97-SW2|url-status=live}}</ref> but it is also known by other names. These include, but are not limited to, the '''spinning [[beach ball]]''',<ref>{{Cite web|url=https://www.macworld.com/article/1151583/spinningbeachballofdeath.html|title=Troubleshoot the spinning beach ball|date=2010-05-28|website=Macworld|language=en|access-date=2020-03-22|archive-date=2020-03-22|archive-url=https://web.archive.org/web/20200322050141/https://www.macworld.com/article/1151583/spinningbeachballofdeath.html|url-status=live}}</ref> the '''spinning wheel of death''',<ref>{{Cite web|url=https://macpaw.com/how-to/the-spinning-wheel-on-mac|title=How to Fix a Spinning Wheel of Death on Mac|website=MacPaw|language=en|access-date=2020-03-22|archive-date=2020-03-22|archive-url=https://web.archive.org/web/20200322050142/https://macpaw.com/how-to/the-spinning-wheel-on-mac|url-status=live}}</ref> and the '''spinning beach ball of death'''.<ref>{{Cite web|url=https://www.macobserver.com/tmo/article/frozen-how-to-force-quit-an-os-x-app-showing-a-spinning-beachball-of-death|title=Frozen: How to Force Quit an OS X App Showing a Spinning Beachball of Death – The Mac Observer|website=www.macobserver.com|date=2 September 2015 |access-date=2020-03-22|archive-date=2020-03-22|archive-url=https://web.archive.org/web/20200322050142/https://www.macobserver.com/tmo/article/frozen-how-to-force-quit-an-os-x-app-showing-a-spinning-beachball-of-death|url-status=live}}</ref>
 
==History==
A [[Watch|wristwatch]] was used as 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".
The first wait cursor was a wrist-watch in [[System 7 (Macintosh)|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.
 
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 (FTP client)|Fetch]]'s running dog, [[Retrospect (software)|Retrospect]]'s spinning tape, and [[Pro Tools]]' tapping fingers. Apple provided the standard interfaces for animating cursors: originally the Cursor Utilities (SpinCursor, RotateCursor)<ref>{{cite web|url=https://developer.apple.com/DOCUMENTATION/mac/QuickDraw/QuickDraw-371.html |title=Using the Cursor Utilities (IM: Im) |publisher=Developer.apple.com |date= |accessdate=2010-04-30}}</ref> and, in [[Mac OS 8]] and later, the [[Appearance Manager]] (SetAnimatedThemeCursor).<ref>{{cite web|url=https://developer.apple.com/documentation/macos8/HumanInterfaceToolbox/AppManager/ProgWithAppearanceMgr/Appearance.3e.html |title=SetAnimatedThemeCursor |publisher=Developer.apple.com |date= |accessdate=2010-04-30}}</ref>
 
===From NeXT Step to MacOS X===
[[File:NeXTSTEP WaitCursor (monochrome).png|thumbnail|right|NeXTStep monochrome (2 bit)]]
 
[[NeXTSTEP|NeXTStep 1.0]] used a [[monochrome]] icon resembling a spinning [[Magneto-optical drive|magneto-optical disk]].{{efn|[http://www.thegogglesdonothing.com/archives/2010/03/next_optical_discs.shtml NeXT Optical Discs], [https://www.flickr.com/photos/peterl/4412309785/in/photolist-7HUeYD-48246d-9B3cMx-8UHiBT-4yKV9B-asA5jU-DonUQ-9mMqHx-5WoGvo-jBdptu-4GXcBN-aa6dWV-oUU5hm-mpSDSk-atpDYL-oTqKnK-pjABF-x4shkA-9U3nnH-ehmWuS-5GXYNw-ixiHFH-at2xdH-pwYCYF-rxpLxy-8VYstt-B7DiU-6ujLjB-9635ah-rL4X8-qPNv8X-khREKc-oT5eQQ-pxfbUq-4y24in-rjgcCa-6iVcuF-uX6bGr-qTaLrx-ru2Mn3-qPLo3Z-5WoGsd-fa3Bty-oT5eKQ-62QGVY-9ftpkH-4vMh8G-9RTeA4-rLu5Bs-qPzxoL/ 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 Computer|NeXT Cubes]].)}} Some NeXT computers included an optical drive, which was often slower than a magnetic hard drive. This made it a common reason for the wait cursor to appear.
 
[[File:NeXTSTEP WaitCursor (color).png|thumbnail|right|NeXTStep color (12 bit)]]
 
When color support was added in NeXTStep 2.0, color versions of all icons were added. The wait cursor was updated to reflect the bright rainbow surface of these removable disks, and that icon remained, even when [[NeXTstation|later machines]] began using hard disk drives as primary storage. <!-- MO was primary, FDD secondary in the NeXT cubes, with a HDD often used only as cache; the NeXTstation had an internal HDD and 2.88 MB FDD, but no MO drive --> Contemporary [[CD-ROM]] drives were even slower (at 1x, 150 kbit/s).{{efn|often an external [[AppleCD]] drive was used}}
 
[[File:WaitCursor-300p.gif|thumb|Mac OS X (24 bit)]]
With the arrival of Mac OS X, the wait cursor was often called the "spinning beach ball" in the press,<ref>{{Cite web |url=http://www.macworld.com/article/1002489/firstaid.html |title=Macworld 2002-04-01 |access-date=2015-10-02 |archive-date=2015-10-03 |archive-url=https://web.archive.org/web/20151003090240/http://www.macworld.com/article/1002489/firstaid.html |url-status=live }}</ref> presumably by authors not knowing its NeXT history or relating it to the HyperCard wait cursor.
 
The two-dimensional appearance was kept essentially unchanged{{efn|not a single bit was changed}} from NeXT to [[Rhapsody (operating system)|Rhapsody]]/[[Mac OS X Server 1.0]] which otherwise had a user interface design resembling [[Mac OS 8]]/[[Platinum (theme)|Platinum theme]]. This continued through [[Mac OS X 10.0|Mac OS X 10.0/Cheetah]] and [[Mac OS X 10.1|Mac OS X 10.1/Puma]], which introduced the [[Aqua user interface]] theme.
 
[[Mac OS X 10.2|Mac OS X 10.2/Jaguar]] gave the cursor a glossy rounded "gumdrop" look in keeping with other [[Aqua (user interface)|OS X interface]] elements.<ref>[https://arstechnica.com/apple/2002/09/macosx-10-2/9/ Ars Technica Jaguar review: "The dreading "spinning rainbow disc" has an all new look in Jaguar"]</ref>
In [[OS X 10.10]], the entire pinwheel rotates (previously only the overlaying translucent layer moved).
With [[OS X 10.11|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 and the colors also turn with the spinning, not just the texture.
 
==System usage==
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.
In single-task operating systems like the original [[Macintosh 128K|Macintosh]] [[operating system]], the wait cursor might indicate that the computer was completely unresponsive to user input, or just indicate that response may temporarily be slower than usual due to disk access. This changed with multitasking operating systems such as [[Classic Mac OS#System Software 5|System Software 5]], where it is possible to switch to another application and continue to work there. Individual applications could also choose to display the wait cursor during long operations (and were often able to cancel this display with a keyboard command).
 
After the transition to Mac OS X ([[macOS]]), the display of the wait cursor was only able to be controlled by the operating system, not by the [[Application software|application]]. This could indicate that the application was in an [[infinite loop]], or just performing a lengthy operation and ignoring events. Each application has an [[Message queue|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<ref>{{cite web|title = WWDC 2012 – Session 709 – What's New in the File System|url = https://developer.apple.com/devcenter/download.action?path=/wwdc_2012/wwdc_2012_session_pdfs/session_709__whats_new_in_the_filesystem.pdf|website = Apple|accessdate = 2018-05-23|quote = Applications SPOD if they don’t service the event loop for two seconds|archive-date = 2023-09-05|archive-url =https://web.archive.org/web/20230905001130/https://docs.huihoo.com/apple/wwdc/2012/session_709__whats_new_in_the_filesystem.pdf |url-status = dead}}</ref> 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.
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.
 
The icon is meant to indicate that the application is temporarily unresponsive, a state from which it should recover. It may also indicate that all or part of the application has entered an unrecoverable state or an infinite loop. During this time the user may be 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 which are usually redrawn, even when the application is otherwise unresponsive). While one application is unresponsive, typically other applications are usable. A file system and network delays are another common cause.
==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.
 
==Guidelines, tools and methods for developers==
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) to terminate an unresponsive application.
By default, events (and any actions they initiate) are processed sequentially, intended to limit the trivial amount of processing from each event. The spinning wait cursor will appear until the operation is complete. If the operation takes too long, the application will appear unresponsive. Developers may prevent this by using separate [[thread (computing)|threads]] for lengthy processing, allowing the application's main thread to continue responding to external events. However, this greatly increases the application's complexity. Another approach is to divide the work into smaller packets and use [https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/#//apple_ref/occ/instm/NSRunLoop/performSelector:target:argument:order:modes: NSRunLoop] or [[Grand Central Dispatch]].
 
* [[Computer bugs|Bugs]] in applications can cause them to stop responding to events; for instance, an [[infinite loop]] or a deadlock. Applications afflicted rarely recover.
While one application is unresponsive, typically other applications are usable in the meantime. For example, if [[Safari (web browser)|Safari]] freezes up and the beach ball appears, users can switch to [[iTunes]] and use that until Safari begins to respond again.
* 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.
 
[[Apple Developer Tools#Instruments|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.
The wait cursor can also indicate a problem with the [[virtual memory]] system, as virtual memory [[paging|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.
 
Apple's guidelines suggest that developers try to avoid manually settinginvoking the spinning wait cursor, and instead suggest using other [[UIuser interface]] indicators, such as an asynchronous [[progress indicator]]. Developers have limited control over the behavior of the wait cursor:
The wait cursor can also indicate other [[Computer bug|bugs]] in Mac OS X, although this is becoming less common as Mac OS X matures.
 
==See also==
==Human Interface Guidelines==
* [[Pointer (user interface)]]
The spinning wait cursor will be automatically displayed by the [[Quartz Compositor|Window Server]] when an application cannot process all of the events it receives; if an application does not respond for longer than 2 seconds, 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.
* [[Throbber]]
* [[Windows wait cursor]]
 
===Developers=Notes==
{{notelist}}
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 (computing)|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 (software)|Cocoa]], the spinning wait cursor's behavior is managed by the standard NSCursor methods.
 
===Nomenclature=References==
{{Reflist|30em}}
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 [[Microsoft Windows|Windows]] [[Blue Screen of Death]]), "the spinning pizza of death" or just "SPOD". Other names include the [[Catherine Wheel]], a medieval torture device (aka:[[Breaking wheel]]) a bit extreme but waiting ''is'' after all waiting.
 
==External linklinks==
An application showing this cursor can be said to be "beachballing", as in "Safari is beachballing me, give me a sec".
* [https://support.apple.com/en-my/guide/mac-help/mh35695/mac Pointers in macOS] from Apple's website.
* [http://www.thexlab.com/faqs/sbbod.html 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.
 
{{error messages}}
==External link==
* [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGCursors/chapter_15_section_2.html ''Apple Human Interface Guidelines: Standard Cursors''] from Apple's website.
 
{{DEFAULTSORT:Spinning Wait Cursor}}
[[Category:Mac OS X]]
[[Category:Computer errors]]
[[Category:Mac OS XMacOS]]