summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin10/lib/mir_core.libbin36494 -> 36730 bytes
-rw-r--r--bin10/lib/mir_core64.libbin33314 -> 33526 bytes
-rw-r--r--bin11/lib/mir_core.libbin36494 -> 36730 bytes
-rw-r--r--bin11/lib/mir_core64.libbin33314 -> 33526 bytes
-rw-r--r--include/delphi/m_core.inc4
-rw-r--r--include/delphi/m_helpers.inc16
-rw-r--r--include/m_core.h3
-rw-r--r--include/m_protomod.h8
-rw-r--r--src/mir_core/mir_core.def1
-rw-r--r--src/mir_core/miranda.cpp2
-rw-r--r--src/mir_core/miranda.h3
-rw-r--r--src/modules/protocols/protocols.cpp29
12 files changed, 18 insertions, 48 deletions
diff --git a/bin10/lib/mir_core.lib b/bin10/lib/mir_core.lib
index e6ca0d6dce..c91ae88aa6 100644
--- a/bin10/lib/mir_core.lib
+++ b/bin10/lib/mir_core.lib
Binary files differ
diff --git a/bin10/lib/mir_core64.lib b/bin10/lib/mir_core64.lib
index ab438211dc..d0d80964d2 100644
--- a/bin10/lib/mir_core64.lib
+++ b/bin10/lib/mir_core64.lib
Binary files differ
diff --git a/bin11/lib/mir_core.lib b/bin11/lib/mir_core.lib
index 464d66c965..b1a0f8e48c 100644
--- a/bin11/lib/mir_core.lib
+++ b/bin11/lib/mir_core.lib
Binary files differ
diff --git a/bin11/lib/mir_core64.lib b/bin11/lib/mir_core64.lib
index a333157872..583d63393c 100644
--- a/bin11/lib/mir_core64.lib
+++ b/bin11/lib/mir_core64.lib
Binary files differ
diff --git a/include/delphi/m_core.inc b/include/delphi/m_core.inc
index 04801f8702..2ab7632acc 100644
--- a/include/delphi/m_core.inc
+++ b/include/delphi/m_core.inc
@@ -521,10 +521,12 @@ function mir_vsntprintf(buffer:pWideChar;count:size_t;fmt:pWideChar;va:va_list):
///////////////////////////////////////////////////////////////////////////////
// protocol functions
+function ProtoBroadcastAck(const szModule: PAnsiChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int_ptr; stdcall;
+ external CoreDLL name 'ProtoBroadcastAck';
+
function ProtoServiceExists(const szModule, szName:PAnsiChar):int; stdcall;
external CoreDLL name 'ProtoServiceExists';
-
///////////////////////////////////////////////////////////////////////////////
// sha1 functions
type
diff --git a/include/delphi/m_helpers.inc b/include/delphi/m_helpers.inc
index 9c3881fe31..f14fab1727 100644
--- a/include/delphi/m_helpers.inc
+++ b/include/delphi/m_helpers.inc
@@ -38,7 +38,6 @@ procedure TranslateDialogDefault(hwndDlg: THandle);
procedure TranslateMenu(hMenu: HMENU);
function Langpack_Register:int_ptr;
-function ProtoBroadcastAck(const szModule: PAnsiChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int_ptr;
function CreateProtoServiceFunction(const szModule, szService: PAnsiChar; serviceProc: TMIRANDASERVICE): int_ptr;
function Srmm_AddIcon (sid: PStatusIconData):int_ptr;
@@ -330,21 +329,6 @@ begin
result:=CallService(MS_LANGPACK_REGISTER,WPARAM(@hLangpack),LPARAM(@PluginInfo));
end;
-
-function ProtoBroadcastAck(const szModule: PAnsiChar; hContact: THandle; type_: int; result_: int; hProcess: THandle; lParam: LPARAM): int_ptr;
-var
- ack: TACKDATA;
-begin
- ack.cbSize := sizeof(TACKDATA);
- ack.szModule := szModule;
- ack.hContact := hContact;
- ack._type := type_;
- ack._result := result_;
- ack.hProcess := hProcess;
- ack.lParam := lParam;
- Result := CallService(MS_PROTO_BROADCASTACK, 0, tlParam(@ack));
-end;
-
function CreateProtoServiceFunction(const szModule, szService: PAnsiChar; serviceProc: TMIRANDASERVICE): int_ptr;
var
szStr: array[0..MAXMODULELABELLENGTH*2] of AnsiChar;
diff --git a/include/m_core.h b/include/m_core.h
index 9c315e76d4..7e3c4ea99f 100644
--- a/include/m_core.h
+++ b/include/m_core.h
@@ -433,7 +433,8 @@ MIR_CORE_DLL(int) mir_vsntprintf(TCHAR *buffer, size_t count, const TCHAR* fm
///////////////////////////////////////////////////////////////////////////////
// protocol functions
-MIR_CORE_DLL(int) ProtoServiceExists(const char *szModule, const char *szService);
+MIR_CORE_DLL(int) ProtoServiceExists(const char *szModule, const char *szService);
+MIR_CORE_DLL(INT_PTR) ProtoBroadcastAck(const char *szModule, HANDLE hContact, int type, int result, HANDLE hProcess, LPARAM lParam);
///////////////////////////////////////////////////////////////////////////////
// sha1 functions
diff --git a/include/m_protomod.h b/include/m_protomod.h
index 4b7bcf2de1..3e28b55591 100644
--- a/include/m_protomod.h
+++ b/include/m_protomod.h
@@ -123,12 +123,4 @@ __forceinline INT_PTR ProtoChainRecvFile(HANDLE hContact, PROTORECVFILET *pre)
//See the notes in core/modules.h under NotifyEventHooks()
#define MS_PROTO_BROADCASTACK "Proto/BroadcastAck"
-__forceinline INT_PTR ProtoBroadcastAck(const char *szModule, HANDLE hContact, int type, int result, HANDLE hProcess, LPARAM lParam)
-{
- ACKDATA ack = { sizeof(ACKDATA), szModule, hContact, type, result, hProcess, lParam };
- return CallService(MS_PROTO_BROADCASTACK, 0, (LPARAM)&ack);
-}
-
#endif // M_PROTOMOD_H__
-
-
diff --git a/src/mir_core/mir_core.def b/src/mir_core/mir_core.def
index 52a16fc917..5631c9c335 100644
--- a/src/mir_core/mir_core.def
+++ b/src/mir_core/mir_core.def
@@ -162,3 +162,4 @@ wildcmpiw @159
mir_base64_encode @160
mir_base64_decode @161
ProtoServiceExists @162
+ProtoBroadcastAck @163
diff --git a/src/mir_core/miranda.cpp b/src/mir_core/miranda.cpp
index 640f2d89db..6fcd531f87 100644
--- a/src/mir_core/miranda.cpp
+++ b/src/mir_core/miranda.cpp
@@ -74,6 +74,7 @@ static void LoadCoreModule(void)
InitPathUtils();
InitialiseModularEngine();
+ InitProtocols();
}
MIR_CORE_DLL(void) UnloadCoreModule(void)
@@ -83,6 +84,7 @@ MIR_CORE_DLL(void) UnloadCoreModule(void)
CloseHandle(hThreadQueueEmpty);
TlsFree(mir_tls);
+ UninitProtocols();
DestroyModularEngine();
UnloadLangPackModule();
}
diff --git a/src/mir_core/miranda.h b/src/mir_core/miranda.h
index 3619cc9b56..1bfebf35c7 100644
--- a/src/mir_core/miranda.h
+++ b/src/mir_core/miranda.h
@@ -35,6 +35,9 @@ void DestroyModularEngine(void);
int InitPathUtils(void);
+void InitProtocols();
+void UninitProtocols();
+
extern HINSTANCE hInst;
extern HWND hAPCWindow;
extern HANDLE hStackMutex, hThreadQueueEmpty;
diff --git a/src/modules/protocols/protocols.cpp b/src/modules/protocols/protocols.cpp
index ef2a4b7eac..c89f4734ae 100644
--- a/src/modules/protocols/protocols.cpp
+++ b/src/modules/protocols/protocols.cpp
@@ -27,7 +27,7 @@ int LoadProtoChains(void);
int LoadProtoOptions(void);
HANDLE hAccListChanged;
-static HANDLE hAckEvent, hTypeEvent;
+static HANDLE hTypeEvent;
static BOOL bModuleInitialized = FALSE;
typedef struct
@@ -65,22 +65,6 @@ LIST<PROTOCOLDESCRIPTOR> filters(10, CompareProtos2);
//------------------------------------------------------------------------------------
-static INT_PTR Proto_BroadcastAck(WPARAM wParam, LPARAM lParam)
-{
- ACKDATA *ack = (ACKDATA*)lParam;
- if (ack && ack->type == ACKTYPE_AVATAR && ack->hProcess) {
- PROTO_AVATAR_INFORMATION* ai = (PROTO_AVATAR_INFORMATION*)ack->hProcess;
- if (ai->cbSize == sizeof(PROTO_AVATAR_INFORMATION)) {
- PROTO_AVATAR_INFORMATIONW aiw = { sizeof(aiw), ai->hContact, ai->format };
- MultiByteToWideChar(CP_ACP, 0, ai->filename, -1, aiw.filename, SIZEOF(aiw.filename));
-
- ack->hProcess = &aiw;
- }
- }
-
- return NotifyEventHooks(hAckEvent, wParam, lParam);
-}
-
INT_PTR __fastcall MyCallProtoService(const char *szModule, const char *szService, WPARAM wParam, LPARAM lParam);
void FreeFilesMatrix(TCHAR ***files);
@@ -367,6 +351,12 @@ static INT_PTR srvProto_IsAccountLocked(WPARAM, LPARAM lParam)
return (INT_PTR)Proto_IsAccountLocked(Proto_GetAccount((char*)lParam));
}
+static INT_PTR Proto_BroadcastAck(WPARAM, LPARAM lParam)
+{
+ ACKDATA *ack = (ACKDATA*)lParam;
+ return ProtoBroadcastAck(ack->szModule, ack->hProcess, ack->type, ack->result, ack->hProcess, ack->lParam);
+}
+
/////////////////////////////////////////////////////////////////////////////////////////
INT_PTR CallProtoService(const char* szModule, const char* szService, WPARAM wParam, LPARAM lParam)
@@ -718,7 +708,6 @@ int LoadProtocolsModule(void)
InsertServiceListItem(109, PS_SEARCHBYNAMEW);
InsertServiceListItem(110, PS_SEARCHBYEMAILW);
- hAckEvent = CreateHookableEvent(ME_PROTO_ACK);
hTypeEvent = CreateHookableEvent(ME_PROTO_CONTACTISTYPING);
hAccListChanged = CreateHookableEvent(ME_PROTO_ACCLISTCHANGED);
@@ -749,10 +738,6 @@ void UnloadProtocolsModule()
{
if ( !bModuleInitialized) return;
- if (hAckEvent) {
- DestroyHookableEvent(hAckEvent);
- hAckEvent = NULL;
- }
if (hAccListChanged) {
DestroyHookableEvent(hAccListChanged);
hAccListChanged = NULL;