diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2015-09-11 00:25:23 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2015-09-11 00:38:52 +0200 |
commit | 89a7fad16d06b271dab13f8c63dfaa95dbdf398b (patch) | |
tree | f1d44c6c364aa747b5e9b9549a5202e16d50f935 /src/Mount | |
parent | fe6ea623637a94f74ce60cbf134783bfcbdf5e0b (diff) | |
download | VeraCrypt-89a7fad16d06b271dab13f8c63dfaa95dbdf398b.tar.gz VeraCrypt-89a7fad16d06b271dab13f8c63dfaa95dbdf398b.zip |
Windows: avoid freezing the wait dialog by setting its parent to desktop when having lengthy driver calls (like mounting)
Diffstat (limited to 'src/Mount')
-rw-r--r-- | src/Mount/Mount.c | 38 | ||||
-rw-r--r-- | src/Mount/Mount.h | 2 |
2 files changed, 23 insertions, 17 deletions
diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c index af661312..e67c9018 100644 --- a/src/Mount/Mount.c +++ b/src/Mount/Mount.c @@ -4709,7 +4709,7 @@ retry: if (interact && !Silent)
{
- ShowWaitDialog (hwndDlg, TRUE, DismountAllThreadProc, &dismountAllThreadParam);
+ ShowWaitDialog (hwndDlg, FALSE, DismountAllThreadProc, &dismountAllThreadParam);
}
else
DismountAllThreadProc (&dismountAllThreadParam, hwndDlg);
@@ -5051,7 +5051,7 @@ static BOOL MountAllDevices (HWND hwndDlg, BOOL bPasswordPrompt) param.bPasswordPrompt = bPasswordPrompt;
param.bRet = FALSE;
- ShowWaitDialog (hwndDlg, TRUE, mountAllDevicesThreadProc, ¶m);
+ ShowWaitDialog (hwndDlg, FALSE, mountAllDevicesThreadProc, ¶m);
return param.bRet;
}
@@ -7801,7 +7801,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa if (lw == IDM_MOUNT_FAVORITE_VOLUMES)
{
- ShowWaitDialog (hwndDlg, TRUE, mountFavoriteVolumeThreadFunction, NULL);
+ _beginthread(mountFavoriteVolumeThreadFunction, 0, NULL);
return 1;
}
@@ -7875,13 +7875,13 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa }
else
{
- mountFavoriteVolumeThreadParam param;
- param.systemFavorites = FALSE;
- param.logOnMount = FALSE;
- param.hotKeyMount = FALSE;
- param.favoriteVolumeToMount = &FavoriteVolumes[favoriteIndex];
+ mountFavoriteVolumeThreadParam* pParam = (mountFavoriteVolumeThreadParam*) calloc(1, sizeof(mountFavoriteVolumeThreadParam));
+ pParam->systemFavorites = FALSE;
+ pParam->logOnMount = FALSE;
+ pParam->hotKeyMount = FALSE;
+ pParam->favoriteVolumeToMount = &FavoriteVolumes[favoriteIndex];
- ShowWaitDialog (hwndDlg, TRUE, mountFavoriteVolumeThreadFunction, ¶m);
+ _beginthread(mountFavoriteVolumeThreadFunction, 0, pParam);
}
}
@@ -8968,7 +8968,7 @@ BOOL MountFavoriteVolumes (HWND hwnd, BOOL systemFavorites, BOOL logOnMount, BOO return bRet;
}
-void CALLBACK mountFavoriteVolumeThreadFunction (void *pArg, HWND hwnd)
+void CALLBACK mountFavoriteVolumeCallbackFunction (void *pArg, HWND hwnd)
{
mountFavoriteVolumeThreadParam* pParam = (mountFavoriteVolumeThreadParam*) pArg;
@@ -8978,11 +8978,17 @@ void CALLBACK mountFavoriteVolumeThreadFunction (void *pArg, HWND hwnd) MountFavoriteVolumes (hwnd, pParam->systemFavorites, pParam->logOnMount, pParam->hotKeyMount, *(pParam->favoriteVolumeToMount));
else
MountFavoriteVolumes (hwnd, pParam->systemFavorites, pParam->logOnMount, pParam->hotKeyMount);
+
+ free (pParam);
}
else
MountFavoriteVolumes (hwnd);
}
+void __cdecl mountFavoriteVolumeThreadFunction (void *pArg)
+{
+ ShowWaitDialog (NULL, FALSE, mountFavoriteVolumeCallbackFunction, pArg);
+}
static void SaveDefaultKeyFilesParam (HWND hwnd)
{
@@ -9116,13 +9122,13 @@ static void HandleHotKey (HWND hwndDlg, WPARAM wParam) case HK_MOUNT_FAVORITE_VOLUMES:
{
- mountFavoriteVolumeThreadParam param;
- param.systemFavorites = FALSE;
- param.logOnMount = FALSE;
- param.hotKeyMount = TRUE;
- param.favoriteVolumeToMount = NULL;
+ mountFavoriteVolumeThreadParam* pParam = (mountFavoriteVolumeThreadParam*) calloc(1, sizeof(mountFavoriteVolumeThreadParam));
+ pParam->systemFavorites = FALSE;
+ pParam->logOnMount = FALSE;
+ pParam->hotKeyMount = TRUE;
+ pParam->favoriteVolumeToMount = NULL;
- ShowWaitDialog (hwndDlg, TRUE, mountFavoriteVolumeThreadFunction, ¶m);
+ _beginthread(mountFavoriteVolumeThreadFunction, 0, pParam);
}
break;
diff --git a/src/Mount/Mount.h b/src/Mount/Mount.h index dcae9921..097a8a48 100644 --- a/src/Mount/Mount.h +++ b/src/Mount/Mount.h @@ -127,6 +127,6 @@ typedef struct void SetDriverConfigurationFlag (uint32 flag, BOOL state);
BOOL MountFavoriteVolumes (HWND hwnd, BOOL systemFavorites = FALSE, BOOL logOnMount = FALSE, BOOL hotKeyMount = FALSE, const VeraCrypt::FavoriteVolume &favoriteVolumeToMount = VeraCrypt::FavoriteVolume());
-void CALLBACK mountFavoriteVolumeThreadFunction (void *pArg, HWND hwnd);
+void __cdecl mountFavoriteVolumeThreadFunction (void *pArg);
#endif
|