alignment to 4.0 + misc cspot fixes

This commit is contained in:
Philippe G
2021-12-22 12:15:05 -08:00
parent 80270b772b
commit 9dfe90c26f
17 changed files with 60 additions and 41 deletions

View File

@@ -34,6 +34,7 @@ namespace bell
bool hasFixedSize = false;
std::vector<uint8_t> remainingData;
size_t contentLength = -1;
size_t currentPos = -1;

View File

@@ -175,7 +175,7 @@ size_t bell::HTTPStream::read(uint8_t *buf, size_t nbytes)
if (nread < nbytes)
{
return read(buf + nread, nbytes - nread);
return nread + read(buf + nread, nbytes - nread);
}
return nread;
}

View File

@@ -99,6 +99,11 @@ public:
void nextSong();
void setEventHandler(cspotEventHandler handler);
void stopPlayer();
/**
* @brief Disconnect players and notify
*/
void disconnect();
};
#endif

View File

@@ -76,6 +76,8 @@ std::string ApResolve::getApList()
jsonData += cur;
}
close(sockFd);
return jsonData;
}

View File

@@ -192,7 +192,6 @@ void MercuryManager::stop() {
isRunning = false;
audioChunkManager->close();
std::scoped_lock(audioChunkManager->runningMutex, this->runningMutex);
this->session->close();
CSPOT_LOG(debug, "mercury stopped");
}

View File

@@ -164,7 +164,8 @@ size_t PlainConnection::writeBlock(const std::vector<uint8_t> &data)
void PlainConnection::closeSocket()
{
CSPOT_LOG(info, "Closing socket...");
shutdown(this->apSock, SHUT_RDWR);
close(this->apSock);
CSPOT_LOG(info, "Closing socket...");
shutdown(this->apSock, SHUT_RDWR);
close(this->apSock);
this->apSock = -1;
}

View File

@@ -43,13 +43,20 @@ void SpircController::setPause(bool isPaused, bool notifyPlayer) {
CSPOT_LOG(debug, "External pause command");
if (notifyPlayer) player->pause();
state->setPlaybackState(PlaybackState::Paused);
notify();
} else {
CSPOT_LOG(debug, "External play command");
if (notifyPlayer) player->play();
state->setPlaybackState(PlaybackState::Playing);
notify();
}
notify();
}
void SpircController::disconnect(void) {
player->cancelCurrentTrack();
stopPlayer();
state->setActive(false);
notify();
sendEvent(CSpotEventType::DISC);
}
void SpircController::playToggle() {
@@ -104,10 +111,7 @@ void SpircController::handleFrame(std::vector<uint8_t> &data) {
// Pause the playback if another player took control
if (state->isActive() &&
state->remoteFrame.device_state->is_active.value()) {
sendEvent(CSpotEventType::DISC);
state->setActive(false);
notify();
player->cancelCurrentTrack();
disconnect();
}
break;
}