aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Library/ml_plg/AlbumID.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Library/ml_plg/AlbumID.cpp')
-rw-r--r--Src/Plugins/Library/ml_plg/AlbumID.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_plg/AlbumID.cpp b/Src/Plugins/Library/ml_plg/AlbumID.cpp
new file mode 100644
index 00000000..2fd6d14b
--- /dev/null
+++ b/Src/Plugins/Library/ml_plg/AlbumID.cpp
@@ -0,0 +1,45 @@
+#include "playlist.h"
+#include "main.h"
+#include "api__ml_plg.h"
+#include "../../General/gen_ml/ml.h"
+#include <atlbase.h>
+#include "IDScanner.h"
+
+IConnectionPoint *GetConnectionPoint(IUnknown *punk, REFIID riid)
+{
+ if (!punk)
+ return 0;
+
+ IConnectionPointContainer *pcpc;
+ IConnectionPoint *pcp = 0;
+
+ HRESULT hr = punk->QueryInterface(IID_IConnectionPointContainer, (void **) & pcpc);
+ if (SUCCEEDED(hr))
+ {
+ pcpc->FindConnectionPoint(riid, &pcp);
+ pcpc->Release();
+ }
+ return pcp;
+}
+
+bool IDScanner::SetupMusicID()
+{
+ if (!SetupPlaylistSDK())
+ return false;
+
+ if (musicID)
+ return true;
+
+ musicID = AGAVE_API_GRACENOTE->GetMusicID();
+ if (musicID)
+ {
+ IConnectionPoint *icp = GetConnectionPoint(musicID, DIID__ICDDBMusicIDManagerEvents);
+ if (icp)
+ {
+ icp->Advise(static_cast<IDispatch *>(this), &m_dwCookie);
+ icp->Release();
+ }
+ return true;
+ }
+ return false;
+}