Я не верю, что демо-версия spshell полностью воспроизводит музыку.
sp_session_player_play инструктирует libspotify, чтобы начать предоставлять вам аудиоданные. Он не играет за вас. Вы должны указать spotify с помощью обратного вызова music_delivery для получения аудиоданных, а затем вы должны организовать его воспроизведение самостоятельно. Посмотрите пример музыкального автомата.
notify_main_thread вызывается, когда libspotify требует вызова sp_session_process_events для основного потока. Ваш обратный вызов должен выполнять любое уведомление, необходимое для пробуждения основного потока, а затем вернуться, не дожидаясь его. Вы не должны вызывать sp_session_process_events из обратного вызова, иначе вы будете блокировать программу.
Когда вызывается sp_session_process_events, libspotify будет выполнять необходимую обработку, которую он должен выполнять в основном потоке, например, обновлять видимые пользователем структуры данных. second parameter - выходной параметр. Когда sp_session_process_events возвращаются, заостренное значение - это время в миллисекундах, пока вам не нужно будет вызвать sp_session_process_events. Таким образом, есть две причины, по которым вам может потребоваться вызвать sp_session_process_events: после того, как этот тайм-аут прошел или когда notify_main_thread был вызван.