mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
NowPlaying.dll: iTunes shuffle state change now detected immediately.
This commit is contained in:
@ -82,6 +82,10 @@ HRESULT STDMETHODCALLTYPE CPlayerITunes::CEventHandler::Invoke(DISPID dispidMemb
|
||||
{
|
||||
switch (dispidMember)
|
||||
{
|
||||
case ITEventDatabaseChanged:
|
||||
m_Player->OnDatabaseChange();
|
||||
break;
|
||||
|
||||
case ITEventPlayerPlay:
|
||||
m_Player->OnStateChange(true);
|
||||
m_Player->OnTrackChange();
|
||||
@ -339,6 +343,37 @@ void CPlayerITunes::UpdateData()
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** OnDatabaseChange
|
||||
**
|
||||
** Called by iTunes event handler when the database is changed.
|
||||
**
|
||||
*/
|
||||
void CPlayerITunes::OnDatabaseChange()
|
||||
{
|
||||
// Check the shuffle state. TODO: Find better way
|
||||
IITTrack* track;
|
||||
HRESULT hr = m_iTunes->get_CurrentTrack(&track);
|
||||
if (SUCCEEDED(hr) && track)
|
||||
{
|
||||
IITPlaylist* playlist;
|
||||
hr = track->get_Playlist(&playlist);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
VARIANT_BOOL shuffle;
|
||||
hr = playlist->get_Shuffle(&shuffle);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
m_Shuffle = (bool)shuffle;
|
||||
}
|
||||
|
||||
playlist->Release();
|
||||
}
|
||||
|
||||
track->Release();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** OnTrackChange
|
||||
**
|
||||
@ -376,13 +411,6 @@ void CPlayerITunes::OnTrackChange()
|
||||
hr = track->get_Playlist(&playlist);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
VARIANT_BOOL shuffle;
|
||||
hr = playlist->get_Shuffle(&shuffle);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
m_Shuffle = (bool)shuffle;
|
||||
}
|
||||
|
||||
ITPlaylistRepeatMode repeat;
|
||||
hr = playlist->get_SongRepeat(&repeat);
|
||||
if (SUCCEEDED(hr))
|
||||
|
@ -87,6 +87,7 @@ private:
|
||||
|
||||
void Initialize();
|
||||
void Uninitialize();
|
||||
void OnDatabaseChange();
|
||||
void OnTrackChange();
|
||||
void OnStateChange(bool playing);
|
||||
void OnVolumeChange(int volume);
|
||||
|
Reference in New Issue
Block a user