From 4233e5fb36d9fdd369f35acac00f4f6afc9c1ffd Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Wed, 22 Feb 2017 18:00:54 -0500 Subject: [PATCH] Sanity checks. Make sure track isn't in vote batch and remove it from request queue if there. --- src/ui/RequestInterface.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ui/RequestInterface.cpp b/src/ui/RequestInterface.cpp index c85fbdb..e8104af 100644 --- a/src/ui/RequestInterface.cpp +++ b/src/ui/RequestInterface.cpp @@ -64,13 +64,22 @@ void RequestInterface::trackRequestClicked(AudioTrack track) void RequestInterface::trackRemoveClicked(RequestItem* item, AudioTrack track) { - if(GroovePlayerMgr::getInstance()->currentTrack.trackFingerprint != track.trackFingerprint) + bool inVoting = false; + for(AudioTrack vtrack: GroovePlayerMgr::getInstance()->currentVoteBatch) + { + if(vtrack.trackFingerprint == track.trackFingerprint) inVoting = true; + } + if(GroovePlayerMgr::getInstance()->currentTrack.trackFingerprint != track.trackFingerprint && !inVoting) { Wt::Dbo::Session sqlSession; sqlSession.setConnectionPool(*GroovePlayerMgr::getInstance()->connectionPool); sqlSession.mapClass("user"); sqlSession.mapClass("tracks"); sqlSession.mapClass("actions"); + for(std::list>::const_iterator request = GroovePlayerMgr::getInstance()->requestQueue.begin(); request != GroovePlayerMgr::getInstance()->requestQueue.end(); request++) + { + if((*request).first.trackFingerprint == track.trackFingerprint) GroovePlayerMgr::getInstance()->requestQueue.erase(request); + } GroovePlayerMgr::getInstance()->removeTrack(&sqlSession,track); delete item; } -- GitLab