diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index a53c4f597f29d2777a71fc5aea314130060b0a53..3bdf79bd2bf462b705d2fa1c437c8259bbdd3ee9 100644 --- a/src/GroovePlayer.cpp +++ b/src/GroovePlayer.cpp @@ -157,12 +157,34 @@ void GroovePlayerMgr::grooveEventLoop() struct GroovePlayer* player = groove_player_create(); if(!player) {return;} + groove_playlist_insert(playlist, groove_file_open(selectedTrack->trackPath.c_str()),1.0,1.0,nullptr); - //TODO + //Now start loop + groove_player_attach(player, playlist); + + while(getInstance()->continueEventLoop) + { + PlayerEvents event = getInstance()->getNextPlayerEvent(); + if(event == NOTHING) + { + continue; + } + //TODO + } + + groove_player_detach(player); + groove_player_destroy(player); + groove_playlist_destroy(playlist); +} + +void GroovePlayerMgr::shutdown() +{ + continueEventLoop = false; } GroovePlayerMgr::PlayerEvents GroovePlayerMgr::getNextPlayerEvent() { + return NOTHING; //TODO } diff --git a/src/GroovePlayer.h b/src/GroovePlayer.h index 57845e5161e7a7801960beb2a1094e34d2a1fe39..603da112e49e753da70b80eabf9934c7218705c7 100644 --- a/src/GroovePlayer.h +++ b/src/GroovePlayer.h @@ -37,18 +37,20 @@ class GroovePlayerMgr public: static std::filesystem::path musicScanDir; static GroovePlayerMgr* getInstance() { + musicScanDir = std::filesystem::current_path()/"music"; static GroovePlayerMgr instance("music.db"); - musicScanDir = std::filesystem::path("music"); return &instance; }; - GroovePlayerMgr ( GroovePlayerMgr const&) = delete; + GroovePlayerMgr ( GroovePlayerMgr const&) = delete; void operator=( GroovePlayerMgr const&) = delete; + void shutdown(); private: enum PlayerEvents {NOTHING, GROOVE_NOWPLAYING, VOTING_ENDED, VOTE_CAST, PLAYING_PAUSED, PLAYING_RESUMED, SKIP_REQUESTED, SKIP_VOTE_CAST, SKIP_VOTING_ENDED, ADMIN_FORCE_SKIP}; GroovePlayerMgr (std::string dbFile); Wt::Dbo::backend::Sqlite3 sqliteConnection; Wt::Dbo::Session sqlSession; + bool continueEventLoop = true; std::list requestQueue; std::list lastInternalEvents; diff --git a/src/main.cpp b/src/main.cpp index 6ddfe8c76de6a47236cca6e99bfc27ba0fe9c4c9..e3a2296c79ca46b63fead8c69b6b2a8dd7570b36 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,7 @@ int main ( int argc, char** argv ) { GroovePlayerMgr::getInstance(); int sig = Wt::WServer::waitForShutdown(argv[0]); + GroovePlayerMgr::getInstance()->shutdown(); server.stop(); } return 0;