mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 04:58:00 +00:00
Bug 1355648 - Part 2: Handle GampadPose losing tracking situation; r=kip,qdot
MozReview-Commit-ID: FAWnYBuDfFy --HG-- extra : rebase_source : c2e4c6f76f0f2f811c85ebbad16c252ada045949
This commit is contained in:
parent
8bd65ecdd5
commit
df7c980c42
@ -55,8 +55,9 @@ GamepadPose::GetPosition(JSContext* aJSContext,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
SetFloat32Array(aJSContext, aRetval, mPosition, mPoseState.position, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Position), aRv);
|
||||
SetFloat32Array(aJSContext, aRetval, mPosition,
|
||||
mPoseState.isPositionValid ? mPoseState.position : nullptr, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Position), aRv);
|
||||
}
|
||||
|
||||
void
|
||||
@ -64,8 +65,9 @@ GamepadPose::GetLinearVelocity(JSContext* aJSContext,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
SetFloat32Array(aJSContext, aRetval, mLinearVelocity, mPoseState.linearVelocity, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Position), aRv);
|
||||
SetFloat32Array(aJSContext, aRetval, mLinearVelocity,
|
||||
mPoseState.isPositionValid ? mPoseState.linearVelocity : nullptr, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Position), aRv);
|
||||
}
|
||||
|
||||
void
|
||||
@ -73,8 +75,9 @@ GamepadPose::GetLinearAcceleration(JSContext* aJSContext,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
SetFloat32Array(aJSContext, aRetval, mLinearAcceleration, mPoseState.linearAcceleration, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_LinearAcceleration), aRv);
|
||||
SetFloat32Array(aJSContext, aRetval, mLinearAcceleration,
|
||||
mPoseState.isPositionValid ? mPoseState.linearAcceleration : nullptr, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_LinearAcceleration), aRv);
|
||||
}
|
||||
|
||||
void
|
||||
@ -82,8 +85,9 @@ GamepadPose::GetOrientation(JSContext* aJSContext,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
SetFloat32Array(aJSContext, aRetval, mOrientation, mPoseState.orientation, 4,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Orientation), aRv);
|
||||
SetFloat32Array(aJSContext, aRetval, mOrientation,
|
||||
mPoseState.isOrientationValid ? mPoseState.orientation : nullptr, 4,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Orientation), aRv);
|
||||
}
|
||||
|
||||
void
|
||||
@ -91,8 +95,9 @@ GamepadPose::GetAngularVelocity(JSContext* aJSContext,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
SetFloat32Array(aJSContext, aRetval, mAngularVelocity, mPoseState.angularVelocity, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Orientation), aRv);
|
||||
SetFloat32Array(aJSContext, aRetval, mAngularVelocity,
|
||||
mPoseState.isOrientationValid ? mPoseState.angularVelocity : nullptr, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_Orientation), aRv);
|
||||
}
|
||||
|
||||
void
|
||||
@ -100,8 +105,9 @@ GamepadPose::GetAngularAcceleration(JSContext* aJSContext,
|
||||
JS::MutableHandle<JSObject*> aRetval,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
SetFloat32Array(aJSContext, aRetval, mAngularAcceleration, mPoseState.angularAcceleration, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_AngularAcceleration), aRv);
|
||||
SetFloat32Array(aJSContext, aRetval, mAngularAcceleration,
|
||||
mPoseState.isOrientationValid ? mPoseState.angularAcceleration : nullptr, 3,
|
||||
bool(mPoseState.flags & GamepadCapabilityFlags::Cap_AngularAcceleration), aRv);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -42,6 +42,8 @@ struct GamepadPoseState
|
||||
float angularAcceleration[3];
|
||||
float linearVelocity[3];
|
||||
float linearAcceleration[3];
|
||||
bool isPositionValid;
|
||||
bool isOrientationValid;
|
||||
|
||||
GamepadPoseState()
|
||||
{
|
||||
@ -69,7 +71,9 @@ struct GamepadPoseState
|
||||
&& linearVelocity[2] == aPose.linearVelocity[2]
|
||||
&& linearAcceleration[0] == aPose.linearAcceleration[0]
|
||||
&& linearAcceleration[1] == aPose.linearAcceleration[1]
|
||||
&& linearAcceleration[2] == aPose.linearAcceleration[2];
|
||||
&& linearAcceleration[2] == aPose.linearAcceleration[2]
|
||||
&& isPositionValid == aPose.isPositionValid
|
||||
&& isOrientationValid == aPose.isOrientationValid;
|
||||
}
|
||||
|
||||
bool operator!=(const GamepadPoseState& aPose) const
|
||||
|
@ -62,6 +62,8 @@ struct ParamTraits<mozilla::dom::GamepadPoseState>
|
||||
WriteParam(aMsg, aParam.linearAcceleration[0]);
|
||||
WriteParam(aMsg, aParam.linearAcceleration[1]);
|
||||
WriteParam(aMsg, aParam.linearAcceleration[2]);
|
||||
WriteParam(aMsg, aParam.isPositionValid);
|
||||
WriteParam(aMsg, aParam.isOrientationValid);
|
||||
}
|
||||
|
||||
static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
|
||||
@ -85,7 +87,9 @@ struct ParamTraits<mozilla::dom::GamepadPoseState>
|
||||
!ReadParam(aMsg, aIter, &(aResult->linearVelocity[2])) ||
|
||||
!ReadParam(aMsg, aIter, &(aResult->linearAcceleration[0])) ||
|
||||
!ReadParam(aMsg, aIter, &(aResult->linearAcceleration[1])) ||
|
||||
!ReadParam(aMsg, aIter, &(aResult->linearAcceleration[2]))) {
|
||||
!ReadParam(aMsg, aIter, &(aResult->linearAcceleration[2])) ||
|
||||
!ReadParam(aMsg, aIter, &(aResult->isPositionValid)) ||
|
||||
!ReadParam(aMsg, aIter, &(aResult->isOrientationValid))) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user