From f7e590b0e13548d0f3282ec9ab183a17862da385 Mon Sep 17 00:00:00 2001 From: sje Date: Mon, 29 Jan 2007 04:21:54 +0000 Subject: use miranda thread api if available git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@83 4f64403b-2f21-0410-a795-97e2b3489a10 --- message_notify/messagenotify.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'message_notify/messagenotify.cpp') diff --git a/message_notify/messagenotify.cpp b/message_notify/messagenotify.cpp index ccf1b47..cde42b1 100644 --- a/message_notify/messagenotify.cpp +++ b/message_notify/messagenotify.cpp @@ -16,6 +16,7 @@ HANDLE mainThread; bool metacontacts_installed; bool unicode_system; +bool thread_api = false; int code_page = CP_ACP; @@ -26,7 +27,7 @@ DWORD focusTimerId = 0; PLUGININFO pluginInfo={ sizeof(PLUGININFO), "Message Notify", - PLUGIN_MAKE_VERSION(0,1,2,0), + PLUGIN_MAKE_VERSION(0,1,3,0), "Show a popup when a message is received", "Scott Ellis", "mail@scottellis.com.au", @@ -147,10 +148,12 @@ typedef struct { HANDLE hContact; BYTE *blob; int blobsize; + HANDLE hEvent; } CheckWindowData; unsigned int __stdcall sttCheckWindowProc( VOID *dwParam ) { CheckWindowData *cd = (CheckWindowData *)dwParam; + if(!thread_api) SetEvent(cd->hEvent); Sleep(500); // wait for message window to open from event, if it's going to @@ -255,7 +258,15 @@ int OnDatabaseEventPreAdd(WPARAM wParam, LPARAM lParam) { cd->blobsize = 0; // spawn a thread to deal with the copied data - CloseHandle((HANDLE)_beginthreadex(0, 0, sttCheckWindowProc, (VOID *)cd, 0, 0)); + if(thread_api) + CallService(MS_SYSTEM_FORK_THREAD, (WPARAM)sttCheckWindowProc, (LPARAM)(VOID *)cd); + else { + cd->hEvent = CreateEvent(0, 0, 0, 0); + CloseHandle((HANDLE)_beginthreadex(0, 0, sttCheckWindowProc, (VOID *)cd, 0, 0)); + WaitForSingleObject(cd->hEvent, INFINITE); + CloseHandle(cd->hEvent); + } + return 0; } @@ -349,6 +360,8 @@ extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } + thread_api = (ServiceExists(MS_SYSTEM_FORK_THREAD) != 0); + InitWindowList(); LoadOptions(); -- cgit v1.2.3