aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2023-05-06 13:45:25 -0700
committerChris Robinson <[email protected]>2023-05-06 13:45:25 -0700
commit2d0774d6a56fc43a54107beb128a26bd83d6101e (patch)
tree0b8637dfacaec642a5f0ac815b6ec4f29b9c3ea9
parent3af99318876c40547233d0f4407d1533558ab94f (diff)
Only check isfinite for floating point values
-rw-r--r--al/source.cpp47
1 files changed, 28 insertions, 19 deletions
diff --git a/al/source.cpp b/al/source.cpp
index fd4fba38..efe65332 100644
--- a/al/source.cpp
+++ b/al/source.cpp
@@ -1650,7 +1650,8 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
case AL_SAMPLE_OFFSET:
case AL_BYTE_OFFSET:
CheckSize(1);
- CheckValue(std::isfinite(values[0]));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(std::isfinite(values[0]));
if(Voice *voice{GetSourceVoice(Source, Context)})
{
@@ -1688,7 +1689,10 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
break;
}
CheckSize(1);
- CheckValue(values[0] >= T{0} && std::isfinite(static_cast<float>(values[0])));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(values[0] >= T{0} && std::isfinite(static_cast<float>(values[0])));
+ else
+ CheckValue(values[0] >= T{0});
Source->Radius = static_cast<float>(values[0]);
return UpdateSourceProps(Source, Context);
@@ -1702,8 +1706,9 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
case AL_STEREO_ANGLES:
CheckSize(2);
- CheckValue(std::isfinite(static_cast<float>(values[0]))
- && std::isfinite(static_cast<float>(values[1])));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(std::isfinite(static_cast<float>(values[0]))
+ && std::isfinite(static_cast<float>(values[1])));
Source->StereoPan[0] = static_cast<float>(values[0]);
Source->StereoPan[1] = static_cast<float>(values[1]);
@@ -1712,9 +1717,10 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
case AL_POSITION:
CheckSize(3);
- CheckValue(std::isfinite(static_cast<float>(values[0]))
- && std::isfinite(static_cast<float>(values[1]))
- && std::isfinite(static_cast<float>(values[2])));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(std::isfinite(static_cast<float>(values[0]))
+ && std::isfinite(static_cast<float>(values[1]))
+ && std::isfinite(static_cast<float>(values[2])));
Source->Position[0] = static_cast<float>(values[0]);
Source->Position[1] = static_cast<float>(values[1]);
@@ -1723,9 +1729,10 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
case AL_VELOCITY:
CheckSize(3);
- CheckValue(std::isfinite(static_cast<float>(values[0]))
- && std::isfinite(static_cast<float>(values[1]))
- && std::isfinite(static_cast<float>(values[2])));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(std::isfinite(static_cast<float>(values[0]))
+ && std::isfinite(static_cast<float>(values[1]))
+ && std::isfinite(static_cast<float>(values[2])));
Source->Velocity[0] = static_cast<float>(values[0]);
Source->Velocity[1] = static_cast<float>(values[1]);
@@ -1734,9 +1741,10 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
case AL_DIRECTION:
CheckSize(3);
- CheckValue(std::isfinite(static_cast<float>(values[0]))
- && std::isfinite(static_cast<float>(values[1]))
- && std::isfinite(static_cast<float>(values[2])));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(std::isfinite(static_cast<float>(values[0]))
+ && std::isfinite(static_cast<float>(values[1]))
+ && std::isfinite(static_cast<float>(values[2])));
Source->Direction[0] = static_cast<float>(values[0]);
Source->Direction[1] = static_cast<float>(values[1]);
@@ -1745,12 +1753,13 @@ void SetProperty(ALsource *const Source, ALCcontext *const Context, const Source
case AL_ORIENTATION:
CheckSize(6);
- CheckValue(std::isfinite(static_cast<float>(values[0]))
- && std::isfinite(static_cast<float>(values[1]))
- && std::isfinite(static_cast<float>(values[2]))
- && std::isfinite(static_cast<float>(values[3]))
- && std::isfinite(static_cast<float>(values[4]))
- && std::isfinite(static_cast<float>(values[5])));
+ if constexpr(std::is_floating_point_v<T>)
+ CheckValue(std::isfinite(static_cast<float>(values[0]))
+ && std::isfinite(static_cast<float>(values[1]))
+ && std::isfinite(static_cast<float>(values[2]))
+ && std::isfinite(static_cast<float>(values[3]))
+ && std::isfinite(static_cast<float>(values[4]))
+ && std::isfinite(static_cast<float>(values[5])));
Source->OrientAt[0] = static_cast<float>(values[0]);
Source->OrientAt[1] = static_cast<float>(values[1]);