/* main loop */ static void BarMainLoop (BarApp_t *app) { pthread_t playerThread; if (!BarMainGetLoginCredentials (&app->settings, &app->input)) { return; } if (!BarMainLoginUser (app)) { return; } if (!BarMainGetStations (app)) { return; } BarMainGetInitialStation (app); /* little hack, needed to signal: hey! we need a playlist, but don't * free anything (there is nothing to be freed yet) */ memset (&app->player, 0, sizeof (app->player)); while (!app->doQuit) { /* song finished playing, clean up things/scrobble song */ if (app->player.mode == PLAYER_FINISHED) { BarMainPlayerCleanup (app, &playerThread); } /* check whether player finished playing and start playing new * song */ if (app->player.mode == PLAYER_DEAD && app->curStation != NULL) { /* what's next? */ if (app->playlist != NULL) { PianoSong_t *histsong = app->playlist; app->playlist = PianoListNextP (app->playlist); histsong->head.next = NULL; BarUiHistoryPrepend (app, histsong); } if (app->playlist == NULL) { BarMainGetPlaylist (app); } /* song ready to play */ if (app->playlist != NULL) { BarMainStartPlayback (app, &playerThread); } } BarMainHandleUserInput (app); /* show time */ if (app->player.mode == PLAYER_PLAYING) { BarMainPrintTime (app); } } if (app->player.mode != PLAYER_DEAD) { pthread_join (playerThread, NULL); } }
/* main loop */ static void BarMainLoop (BarApp_t *app) { pthread_t playerThread; BarMainGetLoginCredentials (&app->settings, &app->input); BarMainLoadProxy (&app->settings, &app->waith); if (!BarMainLoginUser (app)) { return; } if (!BarMainGetStations (app)) { return; } BarMainGetInitialStation (app); /* Make sure the app exits if a quit signal was recieved while waiting to * get a station. */ if (signal_quit) { BarUiActQuit(app, app->curStation, app->playlist, BAR_DC_GLOBAL); } /* little hack, needed to signal: hey! we need a playlist, but don't * free anything (there is nothing to be freed yet) */ memset (&app->player, 0, sizeof (app->player)); while (!app->doQuit) { /* song finished playing, clean up things/scrobble song */ if (app->player.mode == PLAYER_FINISHED_PLAYBACK) { BarMainPlayerCleanup (app, &playerThread); } /* check whether player finished playing and start playing new * song */ if (app->player.mode == PLAYER_FREED && app->curStation != NULL) { /* what's next? */ if (app->playlist != NULL) { PianoSong_t *histsong = app->playlist; app->playlist = app->playlist->next; BarUiHistoryPrepend (app, histsong); } if (app->playlist == NULL) { BarMainGetPlaylist (app); } /* song ready to play */ if (app->playlist != NULL) { BarMainStartPlayback (app, &playerThread); } } BarMainHandleUserInput (app); /* show time */ if (app->player.mode >= PLAYER_SAMPLESIZE_INITIALIZED && app->player.mode < PLAYER_FINISHED_PLAYBACK) { BarMainPrintTime (app); } /* check whether a signal was received */ if (signal_quit) { BarUiActQuit(app, app->curStation, app->playlist, BAR_DC_GLOBAL); } } if (app->player.mode != PLAYER_FREED) { pthread_join (playerThread, NULL); } }