blob: b5f8e8e98d5b44e93736ad9489804fee4877774a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#include "workorder.h"
#include "main.h"
#include "cddb.h"
#include <shlwapi.h>
CDDBModuleWorkOrderManagerInterface *workorder=0;
static HMODULE musicIDLib = 0;
void OpenMusicIDWorkOrder()
{
if (!workorder)
{
char pluginpath[MAX_PATH] = {0};
GetModuleFileNameA(line.hDllInstance, pluginpath, MAX_PATH);
PathRemoveFileSpecA(pluginpath);
PathAppendA(pluginpath, "Gracenote");
char musicidpath[MAX_PATH] = {0};
PathCombineA(musicidpath, pluginpath, "CddbWOManagerWinamp.dll");
musicIDLib = LoadLibraryA(musicidpath);
if (musicIDLib)
{
CDDBModuleQueryInterfaceFunc qi = (CDDBModuleQueryInterfaceFunc)GetProcAddress(musicIDLib, "CDDBModuleQueryInterface");
if (qi)
{
ICDDBControl *pControl;
Cddb_GetIControl((void**)&pControl);
workorder = (CDDBModuleWorkOrderManagerInterface*)qi("workordermanager");
if (!(workorder && workorder->base.version == CDDBMODULE_VERSION && workorder->version == CDDBMODULE_WORKORDER_MGR_VERSION
&& workorder->base.Init && workorder->base.Init(0)
&& workorder->Initialize(pControl, pluginpath) == 0))
{
workorder = 0;
FreeLibrary(musicIDLib);
musicIDLib=0;
}
if (pControl) pControl->Release();
}
}
}
}
void ShutdownMusicIDWorkOrder()
{
if (workorder)
workorder->Shutdown();
workorder=0;
if (musicIDLib)
FreeLibrary(musicIDLib);
musicIDLib=0;
}
|