From a882eddcba5fd22adab1454c8d2ff9c224bc7aa7 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 22 May 2015 17:13:43 +0000 Subject: standard /delayload functionality enabled for bass.dll git-svn-id: http://svn.miranda-ng.org/main/trunk@13759 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/BASS_interface/src/Main.cpp | 82 ++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 37 deletions(-) (limited to 'plugins/BASS_interface/src/Main.cpp') diff --git a/plugins/BASS_interface/src/Main.cpp b/plugins/BASS_interface/src/Main.cpp index 05cb137467..d15a16a7a0 100644 --- a/plugins/BASS_interface/src/Main.cpp +++ b/plugins/BASS_interface/src/Main.cpp @@ -3,10 +3,27 @@ Copyright (C) 2010, 2011 tico-tico */ #include "stdafx.h" -#define BASSDEF(f) (WINAPI *f) + +#include #include "bass.h" -#define LOADBASSFUNCTION(f) (*((void**)&f)=(void*)GetProcAddress(hBass,#f)) +#pragma comment(lib, "delayimp.lib") +#ifdef _WIN64 + #pragma comment(lib, "src\\bass64.lib") +#else + #pragma comment(lib, "src\\bass.lib") +#endif + +static HINSTANCE hBass = NULL; + +FARPROC WINAPI delayHook(unsigned dliNotify, PDelayLoadInfo) +{ + if (dliNotify == dliNotePreLoadLibrary) + return (FARPROC)hBass; + return NULL; +} + +extern "C" PfnDliHook __pfnDliNotifyHook2 = &delayHook; HINSTANCE hInst; int hLangpack; @@ -25,8 +42,6 @@ PLUGININFOEX pluginInfo = { { 0x2f07ea05, 0x05b5, 0x4ff0, { 0x87, 0x5d, 0xc5, 0x90, 0xda, 0x2d, 0xda, 0xc1 } } }; -static HINSTANCE hBass = NULL; - BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD, LPVOID) { hInst = hinstDLL; @@ -482,46 +497,39 @@ void LoadBassLibrary(TCHAR CurrBassPath[MAX_PATH]) { hBass = LoadLibrary(CurrBassPath); if (hBass != NULL) { - if (LOADBASSFUNCTION(BASS_Init) != NULL && LOADBASSFUNCTION(BASS_SetConfig) != NULL && - LOADBASSFUNCTION(BASS_ChannelPlay) != NULL && LOADBASSFUNCTION(BASS_StreamCreateFile) != NULL && - LOADBASSFUNCTION(BASS_GetVersion) != NULL && LOADBASSFUNCTION(BASS_StreamFree) != NULL && - LOADBASSFUNCTION(BASS_GetDeviceInfo) != NULL && LOADBASSFUNCTION(BASS_Free)) - { - BASS_DEVICEINFO info; + newBass = (BASS_SetConfig(BASS_CONFIG_DEV_DEFAULT, TRUE) != 0); // will use new "Default" device - newBass = (BASS_SetConfig(BASS_CONFIG_DEV_DEFAULT, TRUE) != 0); // will use new "Default" device + DBVARIANT dbv = { 0 }; - DBVARIANT dbv = { 0 }; + BASS_DEVICEINFO info; + if (!db_get_ts(NULL, ModuleName, OPT_OUTDEVICE, &dbv)) + for (int i = 1; BASS_GetDeviceInfo(i, &info); i++) + if (!mir_tstrcmp(dbv.ptszVal, _A2T(info.name))) + device = i; - if (!db_get_ts(NULL, ModuleName, OPT_OUTDEVICE, &dbv)) - for (int i = 1; BASS_GetDeviceInfo(i, &info); i++) - if (!mir_tstrcmp(dbv.ptszVal, _A2T(info.name))) - device = i; - - db_free(&dbv); + db_free(&dbv); - sndLimSnd = db_get_b(NULL, ModuleName, OPT_MAXCHAN, MAXCHAN); - if (sndLimSnd > MAXCHAN) - sndLimSnd = MAXCHAN; - TimeWrd1 = db_get_w(NULL, ModuleName, OPT_TIME1, 0); - TimeWrd2 = db_get_w(NULL, ModuleName, OPT_TIME2, 0); - QuietTime = db_get_b(NULL, ModuleName, OPT_QUIETTIME, 0); - EnPreview = db_get_b(NULL, ModuleName, OPT_PREVIEW, 0); + sndLimSnd = db_get_b(NULL, ModuleName, OPT_MAXCHAN, MAXCHAN); + if (sndLimSnd > MAXCHAN) + sndLimSnd = MAXCHAN; + TimeWrd1 = db_get_w(NULL, ModuleName, OPT_TIME1, 0); + TimeWrd2 = db_get_w(NULL, ModuleName, OPT_TIME2, 0); + QuietTime = db_get_b(NULL, ModuleName, OPT_QUIETTIME, 0); + EnPreview = db_get_b(NULL, ModuleName, OPT_PREVIEW, 0); - StatMask = db_get_w(NULL, ModuleName, OPT_STATUS, 0x3ff); + StatMask = db_get_w(NULL, ModuleName, OPT_STATUS, 0x3ff); - ClistHWND = (HWND)CallService("CLUI/GetHwnd", 0, 0); - BASS_Init(device, 44100, 0, ClistHWND, NULL); + ClistHWND = (HWND)CallService("CLUI/GetHwnd", 0, 0); + BASS_Init(device, 44100, 0, ClistHWND, NULL); - Volume = db_get_b(NULL, ModuleName, OPT_VOLUME, 33); - BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, Volume * 100); - hPlaySound = HookEvent(ME_SKIN_PLAYINGSOUND, OnPlaySnd); - CreateFrame(); - } - else { - FreeLibrary(hBass); - hBass = NULL; - } + Volume = db_get_b(NULL, ModuleName, OPT_VOLUME, 33); + BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, Volume * 100); + hPlaySound = HookEvent(ME_SKIN_PLAYINGSOUND, OnPlaySnd); + CreateFrame(); + } + else { + FreeLibrary(hBass); + hBass = NULL; } } -- cgit v1.2.3