@@ -2239,22 +2239,25 @@ public final class WebAppController: ViewController, AttachmentContainable {
22392239 self . motionManager. deviceMotionUpdateInterval = 1.0
22402240 }
22412241
2242+ var effectiveIsAbsolute = false
22422243 let referenceFrame : CMAttitudeReferenceFrame
22432244 if absolute && CMMotionManager . availableAttitudeReferenceFrames ( ) . contains ( . xMagneticNorthZVertical) {
22442245 referenceFrame = . xMagneticNorthZVertical
2246+ effectiveIsAbsolute = true
22452247 } else {
22462248 if CMMotionManager . availableAttitudeReferenceFrames ( ) . contains ( . xArbitraryCorrectedZVertical) {
22472249 referenceFrame = . xArbitraryCorrectedZVertical
22482250 } else {
22492251 referenceFrame = . xArbitraryZVertical
22502252 }
2253+ effectiveIsAbsolute = false
22512254 }
22522255 self . motionManager. startDeviceMotionUpdates ( using: referenceFrame, to: OperationQueue . main) { [ weak self] data, error in
22532256 guard let self, let data else {
22542257 return
22552258 }
22562259 var alpha : Double
2257- if absolute {
2260+ if effectiveIsAbsolute {
22582261 alpha = data. heading * . pi / 180.0
22592262 if alpha > . pi {
22602263 alpha -= 2.0 * . pi
@@ -2266,7 +2269,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
22662269 }
22672270 self . webView? . sendEvent (
22682271 name: " device_orientation_changed " ,
2269- data: " {absolute: true, alpha: \( alpha) , beta: \( data. attitude. pitch) , gamma: \( data. attitude. roll) } "
2272+ data: " {absolute: \( effectiveIsAbsolute ? " true " : " false " ) , alpha: \( alpha) , beta: \( data. attitude. pitch) , gamma: \( data. attitude. roll) } "
22702273 )
22712274 }
22722275 } else {
0 commit comments