From a74ee23da35cd9e65215476b3c651d7271ae17e9 Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Sun, 10 Jul 2011 09:30:51 +0000 Subject: [PATCH] NowPlayingPlugin: Fixed PlayPause issue with MusicBee. --- Plugins/PluginNowPlaying/NowPlaying.cpp | 7 ------- Plugins/PluginNowPlaying/Player.cpp | 4 ++-- Plugins/PluginNowPlaying/PlayerCAD.cpp | 14 +++++++++++--- Plugins/PluginNowPlaying/PlayerCAD.h | 1 + Plugins/PluginNowPlaying/PluginNowPlaying.rc | 4 ++-- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Plugins/PluginNowPlaying/NowPlaying.cpp b/Plugins/PluginNowPlaying/NowPlaying.cpp index 371e13e7..21a701de 100644 --- a/Plugins/PluginNowPlaying/NowPlaying.cpp +++ b/Plugins/PluginNowPlaying/NowPlaying.cpp @@ -154,12 +154,6 @@ UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id) } else { - if (_wcsicmp(L"MusicBee", str) == 0) - { - // TODO: Remove this in a few weeks (left here for MusicBee backwards compatibility) - MessageBox(NULL, L"Due to some internal changes in the NowPlaying plugin, PlayerName=MusicBee is not valid any longer.\n\nPlease edit the skin and change to PlayerName=CAD to continue use with MusicBee.", L"NowPlaying", MB_OK | MB_ICONINFORMATION | MB_TOPMOST); - } - std::wstring error = L"NowPlayingPlugin: PlayerName="; error += str; error += L" in section ["; @@ -301,7 +295,6 @@ void Finalize(HMODULE instance, UINT id) } /* - ** Update ** ** Called on each update. diff --git a/Plugins/PluginNowPlaying/Player.cpp b/Plugins/PluginNowPlaying/Player.cpp index 78c88484..010594ab 100644 --- a/Plugins/PluginNowPlaying/Player.cpp +++ b/Plugins/PluginNowPlaying/Player.cpp @@ -76,12 +76,12 @@ void CPlayer::AddInstance() */ void CPlayer::RemoveInstance() { + m_UpdateCount = 0; + if (--m_InstanceCount == 0) { delete this; } - - m_UpdateCount = 0; } /* diff --git a/Plugins/PluginNowPlaying/PlayerCAD.cpp b/Plugins/PluginNowPlaying/PlayerCAD.cpp index f81bbc05..bda83ab6 100644 --- a/Plugins/PluginNowPlaying/PlayerCAD.cpp +++ b/Plugins/PluginNowPlaying/PlayerCAD.cpp @@ -34,7 +34,8 @@ extern std::wstring g_SettingsFile; */ CPlayerCAD::CPlayerCAD() : CPlayer(), m_Window(), - m_PlayerWindow() + m_PlayerWindow(), + m_ExtendedAPI(false) { Initialize(); } @@ -138,6 +139,12 @@ void CPlayerCAD::Initialize() LPCTSTR classSz = className.empty() ? NULL : className.c_str(); LPCTSTR windowSz = windowName.empty() ? NULL : windowName.c_str(); + if (windowName == L"VLC") + { + // Temporary workaround + m_ExtendedAPI = true; + } + if (classSz || windowSz) { m_PlayerWindow = FindWindow(classSz, windowSz); @@ -339,6 +346,7 @@ LRESULT CALLBACK CPlayerCAD::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM if (player->m_PlayerWindow) { player->m_Initialized = true; + player->m_ExtendedAPI = (windowName == L"VLC"); player->m_State = (PLAYSTATE)SendMessage(player->m_PlayerWindow, WM_USER, 0, IPC_GET_STATE); if (player->m_State != PLAYER_STOPPED) @@ -379,7 +387,7 @@ void CPlayerCAD::UpdateData() */ void CPlayerCAD::Pause() { - SendMessage(m_PlayerWindow, WM_USER, 0, IPC_PAUSE); + SendMessage(m_PlayerWindow, WM_USER, 0, m_ExtendedAPI ? IPC_PAUSE : IPC_PLAYPAUSE); } /* @@ -390,7 +398,7 @@ void CPlayerCAD::Pause() */ void CPlayerCAD::Play() { - SendMessage(m_PlayerWindow, WM_USER, 0, IPC_PLAY); + SendMessage(m_PlayerWindow, WM_USER, 0, m_ExtendedAPI ? IPC_PLAY : IPC_PLAYPAUSE); } /* diff --git a/Plugins/PluginNowPlaying/PlayerCAD.h b/Plugins/PluginNowPlaying/PlayerCAD.h index 1e015931..aa58e8a4 100644 --- a/Plugins/PluginNowPlaying/PlayerCAD.h +++ b/Plugins/PluginNowPlaying/PlayerCAD.h @@ -57,6 +57,7 @@ private: HWND m_Window; HWND m_PlayerWindow; std::wstring m_PlayerPath; + bool m_ExtendedAPI; }; #endif diff --git a/Plugins/PluginNowPlaying/PluginNowPlaying.rc b/Plugins/PluginNowPlaying/PluginNowPlaying.rc index 0082f141..32ed3dc1 100644 --- a/Plugins/PluginNowPlaying/PluginNowPlaying.rc +++ b/Plugins/PluginNowPlaying/PluginNowPlaying.rc @@ -18,9 +18,9 @@ VS_VERSION_INFO VERSIONINFO #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG #else - FILEFLAGS 0x0L + FILEFLAGS 0x0L #endif - FILEOS VOS_NT_WINDOWS32 + FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE VFT_UNKNOWN BEGIN