diff --git a/src/ui/RequestInterface.cpp b/src/ui/RequestInterface.cpp index c85fbdb04fe7905c439c93937e2060be01e72950..e8104af93b24ca499b55ead31aadaa773cc3c9f1 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; }