(Added a more thorough description) |
(Added info on IOKit) |
||
Line 1: | Line 1: | ||
'''backboardd''', or '''BackBoard''', is a daemon introduced in iOS 6 to take some of the workload off of [[SpringBoard]]. Its chief purpose is to handle events from the hardware, such as touches, button presses, and accelerometer information. It communicates with SpringBoard through [[BackBoardServices.framework]]. | '''backboardd''', or '''BackBoard''', is a daemon introduced in iOS 6 to take some of the workload off of [[SpringBoard]]. Its chief purpose is to handle events from the hardware, such as touches, button presses, and accelerometer information. It communicates with SpringBoard through [[BackBoardServices.framework]]. In iOS 6, it serves as the bridge between IOKit and userland processes. | ||
BackBoard also manages the launching, suspension, and termination of application processes. | BackBoard also manages the launching, suspension, and termination of application processes. | ||
Line 5: | Line 5: | ||
== Hardware Management == | == Hardware Management == | ||
BackBoard is responsible for forwarding the following hardware events to | BackBoard is responsible for forwarding the following hardware events to processes: | ||
* Accelerometer input | * Accelerometer input | ||
Line 13: | Line 13: | ||
* TV/Video out events | * TV/Video out events | ||
The above events are sent to the destination process via the [[GSEvent]] framework. | The above events are received from IOKit and processed into the corresponding [[GSEvent]], which is then sent to the destination process via the [[GSEvent]] framework. | ||
Going in the opposite direction, backboardd also allows processes (such as [[Preferences.app]] and [[SpringBoard]]) to | Going in the opposite direction, backboardd also allows processes (such as [[Preferences.app]] and [[SpringBoard]]) to interact with some parts of the hardware, such as changing the brightness level. This interaction is mainly handled by [[BackBoardServices.framework]]. | ||
== Handling Touch Events == | |||
BackBoard is responsible for deciding what application should receive the touch events that come in from IOKit. When a digitizer event is received, BackBoard calls the ''-contextIdAtPosition:'' method of the current '''CAWindowDisplayServer''' to get the context ID of which the touch should be sent. This is how it decides the process that should receive the touch. | |||
[[Category:Daemons]] | [[Category:Daemons]] |
Revision as of 14:07, 4 November 2013
backboardd, or BackBoard, is a daemon introduced in iOS 6 to take some of the workload off of SpringBoard. Its chief purpose is to handle events from the hardware, such as touches, button presses, and accelerometer information. It communicates with SpringBoard through BackBoardServices.framework. In iOS 6, it serves as the bridge between IOKit and userland processes.
BackBoard also manages the launching, suspension, and termination of application processes.
Hardware Management
BackBoard is responsible for forwarding the following hardware events to processes:
- Accelerometer input
- Hardware keyboard input
- Orientation events
- Proximity sensor events
- TV/Video out events
The above events are received from IOKit and processed into the corresponding GSEvent, which is then sent to the destination process via the GSEvent framework.
Going in the opposite direction, backboardd also allows processes (such as Preferences.app and SpringBoard) to interact with some parts of the hardware, such as changing the brightness level. This interaction is mainly handled by BackBoardServices.framework.
Handling Touch Events
BackBoard is responsible for deciding what application should receive the touch events that come in from IOKit. When a digitizer event is received, BackBoard calls the -contextIdAtPosition: method of the current CAWindowDisplayServer to get the context ID of which the touch should be sent. This is how it decides the process that should receive the touch.