fix: PVS-Studio V688
Signed-off-by: Vyacheslav Ivanov <islavaivanov76@gmail.com>
This commit is contained in:
parent
5369507938
commit
faa1635014
@ -74,27 +74,27 @@ bool ALStream::preloadBuffer(uint buffer, bool loop) {
|
|||||||
|
|
||||||
std::unique_ptr<Speaker> ALStream::createSpeaker(bool loop, int channel) {
|
std::unique_ptr<Speaker> ALStream::createSpeaker(bool loop, int channel) {
|
||||||
this->loop = loop;
|
this->loop = loop;
|
||||||
uint source = al->getFreeSource();
|
uint free_source = al->getFreeSource();
|
||||||
if (source == 0) {
|
if (free_source == 0) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
for (uint i = 0; i < ALStream::STREAM_BUFFERS; i++) {
|
for (uint i = 0; i < ALStream::STREAM_BUFFERS; i++) {
|
||||||
uint buffer = al->getFreeBuffer();
|
uint free_buffer = al->getFreeBuffer();
|
||||||
if (!preloadBuffer(buffer, loop)) {
|
if (!preloadBuffer(free_buffer, loop)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
AL_CHECK(alSourceQueueBuffers(source, 1, &buffer));
|
AL_CHECK(alSourceQueueBuffers(free_source, 1, &free_buffer));
|
||||||
}
|
}
|
||||||
return std::make_unique<ALSpeaker>(al, source, PRIORITY_HIGH, channel);
|
return std::make_unique<ALSpeaker>(al, free_source, PRIORITY_HIGH, channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ALStream::bindSpeaker(speakerid_t speaker) {
|
void ALStream::bindSpeaker(speakerid_t speakerid) {
|
||||||
auto sp = audio::get_speaker(this->speaker);
|
auto sp = audio::get_speaker(this->speaker);
|
||||||
if (sp) {
|
if (sp) {
|
||||||
sp->stop();
|
sp->stop();
|
||||||
}
|
}
|
||||||
this->speaker = speaker;
|
this->speaker = speakerid;
|
||||||
sp = audio::get_speaker(speaker);
|
sp = audio::get_speaker(speakerid);
|
||||||
if (sp) {
|
if (sp) {
|
||||||
auto alspeaker = dynamic_cast<ALSpeaker*>(sp); //FIXME: Potentional null pointer
|
auto alspeaker = dynamic_cast<ALSpeaker*>(sp); //FIXME: Potentional null pointer
|
||||||
alspeaker->stream = this; //-V522
|
alspeaker->stream = this; //-V522
|
||||||
@ -110,15 +110,15 @@ void ALStream::unqueueBuffers(uint alsource) {
|
|||||||
uint processed = AL::getSourcei(alsource, AL_BUFFERS_PROCESSED);
|
uint processed = AL::getSourcei(alsource, AL_BUFFERS_PROCESSED);
|
||||||
|
|
||||||
while (processed--) {
|
while (processed--) {
|
||||||
uint buffer;
|
uint bufferqueue;
|
||||||
AL_CHECK(alSourceUnqueueBuffers(alsource, 1, &buffer));
|
AL_CHECK(alSourceUnqueueBuffers(alsource, 1, &bufferqueue));
|
||||||
unusedBuffers.push(buffer);
|
unusedBuffers.push(bufferqueue);
|
||||||
|
|
||||||
uint bps = source->getBitsPerSample() / 8;
|
uint bps = source->getBitsPerSample()/ 8;
|
||||||
uint channels = source->getChannels();
|
uint channels = source->getChannels();
|
||||||
|
|
||||||
ALint bufferSize;
|
ALint bufferSize;
|
||||||
alGetBufferi(buffer, AL_SIZE, &bufferSize);
|
alGetBufferi(bufferqueue, AL_SIZE, &bufferSize);
|
||||||
totalPlayedSamples += bufferSize / bps / channels;
|
totalPlayedSamples += bufferSize / bps / channels;
|
||||||
if (source->isSeekable()) {
|
if (source->isSeekable()) {
|
||||||
totalPlayedSamples %= source->getTotalSamples();
|
totalPlayedSamples %= source->getTotalSamples();
|
||||||
@ -129,11 +129,11 @@ void ALStream::unqueueBuffers(uint alsource) {
|
|||||||
uint ALStream::enqueueBuffers(uint alsource) {
|
uint ALStream::enqueueBuffers(uint alsource) {
|
||||||
uint preloaded = 0;
|
uint preloaded = 0;
|
||||||
if (!unusedBuffers.empty()) {
|
if (!unusedBuffers.empty()) {
|
||||||
uint buffer = unusedBuffers.front();
|
uint first_buffer = unusedBuffers.front();
|
||||||
if (preloadBuffer(buffer, loop)) {
|
if (preloadBuffer(first_buffer, loop)) {
|
||||||
preloaded++;
|
preloaded++;
|
||||||
unusedBuffers.pop();
|
unusedBuffers.pop();
|
||||||
AL_CHECK(alSourceQueueBuffers(alsource, 1, &buffer));
|
AL_CHECK(alSourceQueueBuffers(alsource, 1, &first_buffer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return preloaded;
|
return preloaded;
|
||||||
@ -143,14 +143,14 @@ void ALStream::update(double delta) {
|
|||||||
if (this->speaker == 0) {
|
if (this->speaker == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto speaker = audio::get_speaker(this->speaker);
|
auto p_speaker = audio::get_speaker(this->speaker);
|
||||||
if (speaker == nullptr) {
|
if (p_speaker == nullptr) {
|
||||||
speaker = 0; //FIXME: Not used
|
p_speaker = 0; //FIXME: Not used
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ALSpeaker* alspeaker = dynamic_cast<ALSpeaker*>(speaker); //FIXME: Potentional null pointer
|
ALSpeaker* alspeaker = dynamic_cast<ALSpeaker*>(p_speaker); //FIXME: Potentional null pointer
|
||||||
if (alspeaker->stopped) { //-V522
|
if (alspeaker->stopped) { //-V522
|
||||||
speaker = 0; //FIXME: Not used
|
p_speaker = 0; //FIXME: Not used
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,11 +159,11 @@ void ALStream::update(double delta) {
|
|||||||
unqueueBuffers(alsource);
|
unqueueBuffers(alsource);
|
||||||
uint preloaded = enqueueBuffers(alsource);
|
uint preloaded = enqueueBuffers(alsource);
|
||||||
|
|
||||||
if (speaker->isStopped() && !alspeaker->stopped) { //FIXME: !alspeaker->stopped always true //-V560
|
if (p_speaker->isStopped() && !alspeaker->stopped) { //FIXME: !alspeaker->stopped always true //-V560
|
||||||
if (preloaded) {
|
if (preloaded) {
|
||||||
speaker->play();
|
p_speaker->play();
|
||||||
} else {
|
} else {
|
||||||
speaker->stop();
|
p_speaker->stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -271,11 +271,11 @@ void ALSpeaker::setLoop(bool loop) {
|
|||||||
void ALSpeaker::play() {
|
void ALSpeaker::play() {
|
||||||
paused = false;
|
paused = false;
|
||||||
stopped = false;
|
stopped = false;
|
||||||
auto channel = get_channel(this->channel);
|
auto p_channel = get_channel(this->channel);
|
||||||
AL_CHECK(alSourcef(
|
AL_CHECK(alSourcef(
|
||||||
source,
|
source,
|
||||||
AL_GAIN,
|
AL_GAIN,
|
||||||
volume * channel->getVolume() * get_channel(0)->getVolume()
|
volume * p_channel->getVolume() * get_channel(0)->getVolume()
|
||||||
));
|
));
|
||||||
AL_CHECK(alSourcePlay(source));
|
AL_CHECK(alSourcePlay(source));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,7 +72,7 @@ namespace audio {
|
|||||||
~ALStream();
|
~ALStream();
|
||||||
|
|
||||||
std::shared_ptr<PCMStream> getSource() const override;
|
std::shared_ptr<PCMStream> getSource() const override;
|
||||||
void bindSpeaker(speakerid_t speaker) override;
|
void bindSpeaker(speakerid_t speakerid) override;
|
||||||
std::unique_ptr<Speaker> createSpeaker(bool loop, int channel) override;
|
std::unique_ptr<Speaker> createSpeaker(bool loop, int channel) override;
|
||||||
speakerid_t getSpeaker() const override;
|
speakerid_t getSpeaker() const override;
|
||||||
void update(double delta) override;
|
void update(double delta) override;
|
||||||
|
|||||||
@ -31,27 +31,27 @@ void Camera::rotate(float x, float y, float z) {
|
|||||||
|
|
||||||
glm::mat4 Camera::getProjection() {
|
glm::mat4 Camera::getProjection() {
|
||||||
constexpr float epsilon = 1e-6f; // 0.000001
|
constexpr float epsilon = 1e-6f; // 0.000001
|
||||||
float aspect = this->aspect;
|
float aspect_ratio = this->aspect;
|
||||||
if (std::fabs(aspect) < epsilon) {
|
if (std::fabs(aspect_ratio) < epsilon) {
|
||||||
aspect = (float)Window::width / (float)Window::height;
|
aspect_ratio = (float)Window::width / (float)Window::height;
|
||||||
}
|
}
|
||||||
if (perspective)
|
if (perspective)
|
||||||
return glm::perspective(fov * zoom, aspect, 0.05f, 1500.0f);
|
return glm::perspective(fov * zoom, aspect_ratio, 0.05f, 1500.0f);
|
||||||
else if (flipped)
|
else if (flipped)
|
||||||
return glm::ortho(0.0f, fov * aspect, fov, 0.0f);
|
return glm::ortho(0.0f, fov * aspect_ratio, fov, 0.0f);
|
||||||
else
|
else
|
||||||
return glm::ortho(0.0f, fov * aspect, 0.0f, fov);
|
return glm::ortho(0.0f, fov * aspect_ratio, 0.0f, fov);
|
||||||
}
|
}
|
||||||
|
|
||||||
glm::mat4 Camera::getView(bool pos) {
|
glm::mat4 Camera::getView(bool pos) {
|
||||||
glm::vec3 position = this->position;
|
glm::vec3 camera_pos = this->position;
|
||||||
if (!pos) {
|
if (!pos) {
|
||||||
position = glm::vec3(0.0f);
|
camera_pos = glm::vec3(0.0f);
|
||||||
}
|
}
|
||||||
if (perspective) {
|
if (perspective) {
|
||||||
return glm::lookAt(position, position + front, up);
|
return glm::lookAt(camera_pos, camera_pos + front, up);
|
||||||
} else {
|
} else {
|
||||||
return glm::translate(glm::mat4(1.0f), position);
|
return glm::translate(glm::mat4(1.0f), camera_pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user