Installer: Now removes %TEMP%\Rainmeter-Cache on uninstall.

NowPlayingPlugin: Fixed crash on refresh when the plugin is used in multiple skins with different players.
This commit is contained in:
Birunthan Mohanathas 2011-05-22 14:45:54 +00:00
parent 3ba7d39bc4
commit 7dd3bb1ed4
7 changed files with 39 additions and 23 deletions

View File

@ -26,12 +26,12 @@
#include "PlayerWinamp.h" #include "PlayerWinamp.h"
#include "PlayerWMP.h" #include "PlayerWMP.h"
static CPlayer* g_AIMP = NULL; CPlayer* g_AIMP = NULL;
static CPlayer* g_Foobar = NULL; CPlayer* g_Foobar = NULL;
static CPlayer* g_iTunes = NULL; CPlayer* g_iTunes = NULL;
static CPlayer* g_Spotify = NULL; CPlayer* g_Spotify = NULL;
static CPlayer* g_Winamp = NULL; CPlayer* g_Winamp = NULL;
static CPlayer* g_WMP = NULL; CPlayer* g_WMP = NULL;
static MeasureMap g_Values; static MeasureMap g_Values;
static bool g_DisableLeazingZero = false; static bool g_DisableLeazingZero = false;
@ -99,9 +99,11 @@ UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id)
if (!data->player) if (!data->player)
{ {
std::wstring error = L"NowPlayingPlugin: The referenced measure PlayerName="; std::wstring error = L"NowPlayingPlugin: PlayerName=";
error += str; error += str;
error += L" does not exist."; error += L" in section [";
error += section;
error += L"] does not exist.";
LSLog(LOG_WARNING, L"Rainmeter", error.c_str()); LSLog(LOG_WARNING, L"Rainmeter", error.c_str());
return maxValue; return maxValue;
} }
@ -164,9 +166,9 @@ UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id)
{ {
std::wstring error = L"NowPlayingPlugin: PlayerName="; std::wstring error = L"NowPlayingPlugin: PlayerName=";
error += str; error += str;
error += L" is not valid in section ["; error += L" in section [";
error += section; error += section;
error += L"]."; error += L"] is not valid.";
LSLog(LOG_ERROR, L"Rainmeter", error.c_str()); LSLog(LOG_ERROR, L"Rainmeter", error.c_str());
delete data; delete data;
return maxValue; return maxValue;

View File

@ -19,6 +19,8 @@
#include "StdAfx.h" #include "StdAfx.h"
#include "PlayerAIMP.h" #include "PlayerAIMP.h"
extern CPlayer* g_AIMP;
/* /*
** CPlayerAIMP ** CPlayerAIMP
** **
@ -72,6 +74,7 @@ void CPlayerAIMP::RemoveInstance()
{ {
if (--m_InstanceCount == 0) if (--m_InstanceCount == 0)
{ {
g_AIMP = NULL;
delete this; delete this;
} }
} }
@ -199,6 +202,16 @@ void CPlayerAIMP::UpdateData()
stringData += info->nArtistLen; stringData += info->nArtistLen;
stringData += info->nDateLen; stringData += info->nDateLen;
std::wstring filepath(stringData, info->nFileNameLen); std::wstring filepath(stringData, info->nFileNameLen);
stringData += info->nFileNameLen;
stringData += info->nGenreLen;
m_Title.assign(stringData, info->nTitleLen);
m_Duration = info->nDuration / 1000;
// Get rating through the AIMP Winamp API
m_Rating = SendMessage(m_WinampWindow, WM_WA_IPC, 0, IPC_GETRATING);
if (filepath != m_FilePath) if (filepath != m_FilePath)
{ {
m_FilePath = filepath; m_FilePath = filepath;
@ -235,18 +248,6 @@ void CPlayerAIMP::UpdateData()
m_CoverPath.clear(); m_CoverPath.clear();
} }
} }
stringData += info->nFileNameLen;
stringData += info->nGenreLen;
m_Title.assign(stringData, info->nTitleLen);
m_Duration = info->nDuration / 1000;
if (m_WinampWindow)
{
// Get the rating through the AIMP Winamp API
m_Rating = SendMessage(m_WinampWindow, WM_WA_IPC, 0, IPC_GETRATING);
}
} }
} }

View File

@ -19,6 +19,8 @@
#include "StdAfx.h" #include "StdAfx.h"
#include "PlayerFoobar.h" #include "PlayerFoobar.h"
extern CPlayer* g_Foobar;
/* /*
** CPlayerFoobar ** CPlayerFoobar
** **
@ -70,6 +72,7 @@ void CPlayerFoobar::RemoveInstance()
{ {
if (--m_InstanceCount == 0) if (--m_InstanceCount == 0)
{ {
g_Foobar = NULL;
delete this; delete this;
} }
} }

View File

@ -19,7 +19,7 @@
#include "StdAfx.h" #include "StdAfx.h"
#include "PlayerITunes.h" #include "PlayerITunes.h"
extern std::wstring g_CachePath; extern CPlayer* g_iTunes;
/* /*
** CEventHandler ** CEventHandler
@ -166,6 +166,7 @@ void CPlayerITunes::RemoveInstance()
{ {
if (--m_InstanceCount == 0) if (--m_InstanceCount == 0)
{ {
g_iTunes = NULL;
delete this; delete this;
} }
} }

View File

@ -19,6 +19,8 @@
#include "StdAfx.h" #include "StdAfx.h"
#include "PlayerSpotify.h" #include "PlayerSpotify.h"
extern CPlayer* g_Spotify;
/* /*
** CPlayerSpotify ** CPlayerSpotify
** **
@ -62,6 +64,7 @@ void CPlayerSpotify::RemoveInstance()
{ {
if (--m_InstanceCount == 0) if (--m_InstanceCount == 0)
{ {
g_Spotify = NULL;
delete this; delete this;
} }
} }

View File

@ -19,6 +19,8 @@
#include "StdAfx.h" #include "StdAfx.h"
#include "PlayerWMP.h" #include "PlayerWMP.h"
extern CPlayer* g_WMP;
/* /*
** CRemoteHost ** CRemoteHost
** **
@ -198,6 +200,7 @@ void CPlayerWMP::RemoveInstance()
{ {
if (--m_InstanceCount == 0) if (--m_InstanceCount == 0)
{ {
g_WMP = NULL;
delete this; delete this;
} }
} }

View File

@ -19,6 +19,8 @@
#include "StdAfx.h" #include "StdAfx.h"
#include "PlayerWinamp.h" #include "PlayerWinamp.h"
extern CPlayer* g_Winamp;
/* /*
** CPlayerWinamp ** CPlayerWinamp
** **
@ -55,6 +57,7 @@ void CPlayerWinamp::AddInstance(MEASURETYPE type)
if (type == MEASURE_COVER) if (type == MEASURE_COVER)
{ {
g_Winamp = NULL;
m_HasCoverMeasure = true; m_HasCoverMeasure = true;
} }
} }