summaryrefslogtreecommitdiff
path: root/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'options.cpp')
-rw-r--r--options.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/options.cpp b/options.cpp
index 4390e49..28eb55a 100644
--- a/options.cpp
+++ b/options.cpp
@@ -250,11 +250,13 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
params.out = &output;
params.code = &exitcode;
params.result = &result;
- HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)&params);
- if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT)
+ boost::thread gpg_thread(boost::bind(&pxEexcute_thread, &params));
+ if(!gpg_thread.timed_join(boost::posix_time::seconds(10)))
{
- TerminateThread(gpg_thread, 0);
+ gpg_thread.~thread();
MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK);
+ mir_free(tmp);
+ break;
}
if(result == pxNotFound)
{
@@ -649,10 +651,10 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
params.out = &out;
params.code = &code;
params.result = &result;
- HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)&params);
- if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT)
+ boost::thread gpg_thread(boost::bind(&pxEexcute_thread, &params));
+ if(!gpg_thread.timed_join(boost::posix_time::seconds(10)))
{
- TerminateThread(gpg_thread, 0);
+ gpg_thread.~thread();
MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK);
}
if(result == pxNotFound)
@@ -802,11 +804,12 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
params.out = &output;
params.code = &exitcode;
params.result = &result;
- HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)&params);
- if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT)
+ boost::thread gpg_thread(boost::bind(&pxEexcute_thread, &params));
+ if(!gpg_thread.timed_join(boost::posix_time::seconds(10)))
{
- TerminateThread(gpg_thread, 0);
+ gpg_thread.~thread();
MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK);
+ break;
}
if(result == pxNotFound)
{
@@ -1036,11 +1039,12 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
params.out = &out;
params.code = &code;
params.result = &result;
- HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)&params);
- if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT)
+ boost::thread gpg_thread(boost::bind(&pxEexcute_thread, &params));
+ if(!gpg_thread.timed_join(boost::posix_time::seconds(10)))
{
- TerminateThread(gpg_thread, 0);
+ gpg_thread.~thread();
MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK);
+ break;
}
if(result == pxNotFound)
{
@@ -1151,9 +1155,8 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP
break;
case IDC_IMPORT:
extern HANDLE new_key_hcnt;
- extern HANDLE new_key_hcnt_mutex;
- WaitForSingleObject(new_key_hcnt_mutex, INFINITE);
- new_key_hcnt_mutex = CreateMutex(NULL, FALSE, NULL);
+ extern boost::mutex new_key_hcnt_mutex;
+ new_key_hcnt_mutex.lock();
new_key_hcnt = hContact;
void ShowImportKeyDialog();
ShowImportKeyDialog();