summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2013-03-18 08:18:13 +0000
committerGeorge Hazan <george.hazan@gmail.com>2013-03-18 08:18:13 +0000
commite63908912809cd6aeeeb2d068da562c227cbd3a9 (patch)
treedb3d95b3fc111d31d1a4dc23d8e094990105014f /plugins
parentd90a9d04b3b6e2beaa31b311fd38b886a46bab72 (diff)
clutch for pascal plugins not to eat memory on thread creation
git-svn-id: http://svn.miranda-ng.org/main/trunk@4085 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Actman/actman.dpr8
-rw-r--r--plugins/HistoryPlusPlus/historypp.dpr1
-rw-r--r--plugins/ImportTXT/importtxt.dpr7
-rw-r--r--plugins/QuickSearch/quicksearch.dpr4
-rw-r--r--plugins/ShlExt/shlcom.pas39
-rw-r--r--plugins/ShlExt/shlext.dpr9
-rw-r--r--plugins/Watrack/watrack.dpr4
-rw-r--r--plugins/mRadio/mradio.dpr4
8 files changed, 31 insertions, 45 deletions
diff --git a/plugins/Actman/actman.dpr b/plugins/Actman/actman.dpr
index caf0319c6a..5428411585 100644
--- a/plugins/Actman/actman.dpr
+++ b/plugins/Actman/actman.dpr
@@ -136,7 +136,7 @@ begin
LoadGroups;
RegisterIcons;
-
+
opthook :=HookEvent(ME_OPT_INITIALISE ,@OnOptInitialise);
hHookShutdown:=HookEvent(ME_SYSTEM_SHUTDOWN{ME_SYSTEM_OKTOEXIT},@PreShutdown);
NotifyEventHooks(hHookChanged,twparam(ACTM_LOADED),0);
@@ -183,7 +183,9 @@ begin
end;
exports
- Load, Unload,
- MirandaPluginInfoEx;
+ Load, Unload, MirandaPluginInfoEx;
+
+initialization
+ DisableThreadLibraryCalls(hInstance);
end.
diff --git a/plugins/HistoryPlusPlus/historypp.dpr b/plugins/HistoryPlusPlus/historypp.dpr
index 876722eca7..45573f1314 100644
--- a/plugins/HistoryPlusPlus/historypp.dpr
+++ b/plugins/HistoryPlusPlus/historypp.dpr
@@ -573,6 +573,7 @@ exports
Unload;
begin
+ DisableThreadLibraryCalls(hInstance);
// decreasing ref count to oleaut32.dll as said
// in plugins doc
diff --git a/plugins/ImportTXT/importtxt.dpr b/plugins/ImportTXT/importtxt.dpr
index 43d4b560e0..68f1081321 100644
--- a/plugins/ImportTXT/importtxt.dpr
+++ b/plugins/ImportTXT/importtxt.dpr
@@ -151,11 +151,10 @@ begin
Result := 0;
end;
-
exports
+ Load, Unload, MirandaPluginInfoEx;
- Load, Unload,
- MirandaPluginInfoEx;
+initialization
+ DisableThreadLibraryCalls(hInstance);
-begin
end.
diff --git a/plugins/QuickSearch/quicksearch.dpr b/plugins/QuickSearch/quicksearch.dpr
index 80901724d6..856f3376d3 100644
--- a/plugins/QuickSearch/quicksearch.dpr
+++ b/plugins/QuickSearch/quicksearch.dpr
@@ -240,5 +240,7 @@ exports
Load, Unload,
MirandaPluginInfoEx;
-begin
+initialization
+ DisableThreadLibraryCalls(hInstance);
+
end.
diff --git a/plugins/ShlExt/shlcom.pas b/plugins/ShlExt/shlcom.pas
index fb9b4fa780..8aeb14c62b 100644
--- a/plugins/ShlExt/shlcom.pas
+++ b/plugins/ShlExt/shlcom.pas
@@ -1737,7 +1737,7 @@ begin
SetEvent(p^.hEvent);
end;
-function IssueTransferThread(pipch: PHeaderIPC): Cardinal; stdcall;
+procedure IssueTransferThread(pipch: PHeaderIPC); cdecl;
var
szBuf: array [0 .. MAX_PATH] of Char;
pct: PSlotIPC;
@@ -1747,8 +1747,6 @@ var
p: Pointer;
hMainThread: THandle;
begin
- result:=0;
- Thread_Push(0,nil);
hMainThread := THandle(pipch^.Param);
GetCurrentDirectory(sizeof(szBuf), szBuf);
args.count := 0;
@@ -1795,8 +1793,6 @@ begin
SetCurrentDirectory(szBuf);
FreeMem(pipch);
CloseHandle(hMainThread);
- Thread_Pop();
- ExitThread(0);
end;
type
@@ -2071,7 +2067,7 @@ begin
end;
// worker thread to clear MRU, called by the IPC bridge
-function ClearMRUThread(notused: Pointer): Cardinal; stdcall;
+procedure ClearMRUThread(notused: Pointer); cdecl;
{$DEFINE SHL_IDC}
{$DEFINE SHL_KEYS}
{$INCLUDE shlc.inc}
@@ -2080,9 +2076,6 @@ function ClearMRUThread(notused: Pointer): Cardinal; stdcall;
var
hContact: THandle;
begin
- result:=0;
- Thread_Push(0,nil);
-
begin
hContact := CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
while hContact <> 0 do
@@ -2094,8 +2087,6 @@ begin
hContact := CallService(MS_DB_CONTACT_FINDNEXT, hContact, 0);
end;
end;
- Thread_Pop();
- ExitThread(0);
end;
// this function is called from an APC into the main thread
@@ -2141,13 +2132,13 @@ begin
ipcFixupAddresses(True, cloned);
DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(),
@cloned^.Param, THREAD_SET_CONTEXT, False, 0);
- CloseHandle(CreateThread(nil, 0, @IssueTransferThread, cloned, 0, tid));
+ mir_forkThread(@IssueTransferThread, cloned);
goto Reply;
end;
// the request was to clear the MRU entries, we have no return data
if (bits^ and REQUEST_CLEARMRU) = REQUEST_CLEARMRU then
begin
- CloseHandle(CreateThread(nil, 0, @ClearMRUThread, nil, 0, tid));
+ mir_forkThread(@ClearMRUThread, nil);
goto Reply;
end;
// the IPC header may have pointers that need to be translated
@@ -2266,20 +2257,16 @@ begin
//
end;
-function ThreadServer(hMainThread: Pointer): Cardinal;
-{$IFDEF FPC}
-stdcall;
-{$ENDIF}
+procedure ThreadServer(hMainThread: Pointer); cdecl;
var
hEvent: THandle;
+ retVal: Cardinal;
begin
- result:=0;
- Thread_Push(0,nil);
hEvent := CreateEvent(nil, False, False, PChar(CreateProcessUID(GetCurrentProcessId())));
while True do
begin
- Result := WaitForSingleObjectEx(hEvent, INFINITE, True);
- if Result = WAIT_OBJECT_0 then
+ retVal := WaitForSingleObjectEx(hEvent, INFINITE, True);
+ if retVal = WAIT_OBJECT_0 then
begin
QueueUserAPC(@ipcService, THandle(hMainThread), 0);
end; // if
@@ -2288,8 +2275,6 @@ begin
end; // while
CloseHandle(hEvent);
CloseHandle(THandle(hMainThread));
- Thread_Pop();
- ExitThread(0);
end;
procedure InvokeThreadServer;
@@ -2306,13 +2291,7 @@ begin
DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), @hMainThread,
THREAD_SET_CONTEXT, False, 0);
if hMainThread <> 0 then
- begin
-{$IFDEF FPC}
- CloseHandle(CreateThread(nil, 0, @ThreadServer, Pointer(hMainThread), 0, tid));
-{$ELSE}
- CloseHandle(BeginThread(nil, 0, @ThreadServer, Pointer(hMainThread), 0, tid));
-{$ENDIF}
- end; // if
+ mir_forkThread(@ThreadServer, Pointer(hMainThread));
end;
{ exported functions }
diff --git a/plugins/ShlExt/shlext.dpr b/plugins/ShlExt/shlext.dpr
index f8a9cb0420..32d1eab0c7 100644
--- a/plugins/ShlExt/shlext.dpr
+++ b/plugins/ShlExt/shlext.dpr
@@ -1,4 +1,4 @@
-{$IFDEF FPC}
+{$IFDEF FPC}
{$PACKRECORDS 4}
{$MODE Delphi}
{$ASMMODE intel}
@@ -384,13 +384,12 @@ end;
{$R shldlgs.res}
exports
-
MirandaPluginInfoEx, Load, Unload;
exports
-
DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer;
-begin
+initialization
+ DisableThreadLibraryCalls(hInstance);
-end.
+end.
diff --git a/plugins/Watrack/watrack.dpr b/plugins/Watrack/watrack.dpr
index 7c48e5eb29..2a0929c2d1 100644
--- a/plugins/Watrack/watrack.dpr
+++ b/plugins/Watrack/watrack.dpr
@@ -713,5 +713,7 @@ exports
Load, Unload,
MirandaPluginInfoEx;
-begin
+initialization
+ DisableThreadLibraryCalls(hInstance);
+
end.
diff --git a/plugins/mRadio/mradio.dpr b/plugins/mRadio/mradio.dpr
index 1039ead40e..d8b0432b18 100644
--- a/plugins/mRadio/mradio.dpr
+++ b/plugins/mRadio/mradio.dpr
@@ -344,5 +344,7 @@ exports
Load, Unload,
MirandaPluginInfoEx;
-begin
+initialization
+ DisableThreadLibraryCalls(hInstance);
+
end.