summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--updater/progress_dialog.cpp98
-rw-r--r--updater/progress_dialog.h3
-rw-r--r--updater/services.cpp3
-rw-r--r--updater/socket.cpp2
-rw-r--r--updater/xmldata.cpp37
5 files changed, 58 insertions, 85 deletions
diff --git a/updater/progress_dialog.cpp b/updater/progress_dialog.cpp
index cbe7380..4d35bd0 100644
--- a/updater/progress_dialog.cpp
+++ b/updater/progress_dialog.cpp
@@ -3,18 +3,14 @@
#define ID_PROGTIMER 101
-// message loop messages
-#define WMU_NEWPROGRESSWINDOW (WM_USER + 0x200)
-#define WMU_KILLPROGRESSWINDOW (WM_USER + 0x201)
+HWND hwndProgress;
-HWND hwndProgress = 0;
-unsigned int dwProgressThreadId = 0;
-HANDLE hProgSyncEvent = 0;
-
-INT_PTR CALLBACK DlgProcProgress(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
- switch ( msg ) {
+INT_PTR CALLBACK DlgProcProgress(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ switch ( msg )
+ {
case WM_INITDIALOG:
- TranslateDialogDefault( hwndDlg );
+ TranslateDialogDefault(hwndDlg);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0);
SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadIconEx(I_CHKUPD));
SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_CHKUPD, true));
@@ -25,14 +21,16 @@ INT_PTR CALLBACK DlgProcProgress(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
PostMessage(hwndDlg, WMU_SETPROGRESS, 0, 0);
return FALSE;
+
case WM_TIMER:
if(wParam == ID_PROGTIMER)
{
TCHAR text[512];
- GetDlgItemText(hwndDlg, IDC_PROGMSG, text, 512);
+ GetDlgItemText(hwndDlg, IDC_PROGMSG, text, SIZEOF(text));
size_t len = _tcslen(text);
INT_PTR pos = (INT_PTR)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
- if(len >= 3 && len < 511) {
+ if(len >= 3 && len < 511)
+ {
pos = (pos + 1) % 4;
if(pos == 0)
text[len - 3] = 0;
@@ -44,12 +42,14 @@ INT_PTR CALLBACK DlgProcProgress(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
return TRUE;
}
break;
+
case WMU_SETMESSAGE:
KillTimer(hwndDlg, ID_PROGTIMER);
SetDlgItemText(hwndDlg, IDC_PROGMSG, (TCHAR *)wParam);
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0);
- SetTimer(hwndDlg, ID_PROGTIMER, (WPARAM)500, 0);
+ SetTimer(hwndDlg, ID_PROGTIMER, 500, 0);
return TRUE;
+
case WMU_SETPROGRESS:
SendDlgItemMessage(hwndDlg, IDC_PROGRESS, PBM_SETPOS, wParam, 0);
{
@@ -64,7 +64,7 @@ INT_PTR CALLBACK DlgProcProgress(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
return TRUE; // disable esc, enter, etc
case WM_CLOSE:
- PostThreadMessage(dwProgressThreadId, WMU_KILLPROGRESSWINDOW, 0, 0);
+ PostMessage(hwndDlg, WM_QUIT, 0, 0);
break;
case WM_DESTROY:
@@ -77,60 +77,32 @@ INT_PTR CALLBACK DlgProcProgress(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
return FALSE;
}
-//DWORD CALLBACK ProgressWindowThread(LPVOID param) {
-unsigned int CALLBACK ProgressWindowThread(void *param) {
- if(param) SetEvent((HANDLE)param);
-
- MSG hwndMsg = {0};
- while(GetMessage(&hwndMsg, 0, 0, 0) > 0 && !Miranda_Terminated()) {
- switch(hwndMsg.message) {
- case WMU_NEWPROGRESSWINDOW:
- if(hwndProgress) DestroyWindow(hwndProgress);
- hwndProgress = CreateDialog(hInst, MAKEINTRESOURCE(IDD_PROGRESS), 0, DlgProcProgress);
- SetWindowPos(hwndProgress, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
- //ShowWindow(hwndProgress, SW_SHOWNOACTIVATE);
- UpdateWindow(hwndProgress);
- if(param) SetEvent((HANDLE)param);
- break;
- case WMU_KILLPROGRESSWINDOW:
- if(hwndProgress) {
- DestroyWindow(hwndProgress);
- hwndProgress = 0;
- }
- break;
- default:
- if(!IsDialogMessage(hwndProgress, &hwndMsg)) {
- TranslateMessage(&hwndMsg);
- DispatchMessage(&hwndMsg);
- }
- break;
+void ProgressWindowThread(void *)
+{
+ hwndProgress = CreateDialog(hInst, MAKEINTRESOURCE(IDD_PROGRESS), NULL, DlgProcProgress);
+ SetWindowPos(hwndProgress, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
+ UpdateWindow(hwndProgress);
+
+ MSG hwndMsg;
+ while (GetMessage(&hwndMsg, NULL, 0, 0) > 0 && !Miranda_Terminated())
+ {
+ if (!IsDialogMessage(hwndProgress, &hwndMsg))
+ {
+ TranslateMessage(&hwndMsg);
+ DispatchMessage(&hwndMsg);
}
}
- if(hwndProgress) DestroyWindow(hwndProgress);
- hwndProgress = 0;
-
- return 0;
-}
-
-void MakeProgressWindowThread() {
- hProgSyncEvent = CreateEvent(0, 0, 0, 0);
- CloseHandle(mir_forkthreadex(ProgressWindowThread, hProgSyncEvent, 0, &dwProgressThreadId));
- WaitForSingleObject(hProgSyncEvent, INFINITE);
-}
-
-
-void KillProgressWindowThread() {
- PostThreadMessage(dwProgressThreadId, WM_QUIT, 0, 0);
- CloseHandle(hProgSyncEvent);
+ if (hwndProgress) DestroyWindow(hwndProgress);
+ hwndProgress = NULL;
}
-void CreateProgressWindow() {
- ResetEvent(hProgSyncEvent);
- PostThreadMessage(dwProgressThreadId, WMU_NEWPROGRESSWINDOW, 0, 0);
- WaitForSingleObject(hProgSyncEvent, INFINITE);
+void CreateProgressWindow(void)
+{
+ mir_forkthread(ProgressWindowThread, NULL);
}
-void ProgressWindowDone() {
- PostThreadMessage(dwProgressThreadId, WMU_KILLPROGRESSWINDOW, 0, 0);
+void ProgressWindowDone(void)
+{
+ PostMessage(hwndProgress, WM_QUIT, 0, 0);
}
diff --git a/updater/progress_dialog.h b/updater/progress_dialog.h
index 3081c52..8c1f113 100644
--- a/updater/progress_dialog.h
+++ b/updater/progress_dialog.h
@@ -10,7 +10,4 @@ extern HWND hwndProgress;
void CreateProgressWindow();
void ProgressWindowDone();
-void MakeProgressWindowThread();
-void KillProgressWindowThread();
-
#endif
diff --git a/updater/services.cpp b/updater/services.cpp
index 309f3d8..063a907 100644
--- a/updater/services.cpp
+++ b/updater/services.cpp
@@ -813,7 +813,6 @@ INT_PTR IsUpdateSupported(WPARAM wParam, LPARAM lParam) {
int ServicesPreShutdown(WPARAM wParam, LPARAM lParam) {
Netlib_Shutdown(hNetlibHttp);
- KillProgressWindowThread();
return 0;
}
@@ -843,8 +842,6 @@ void InitServices() {
daily_timer_id = SetTimer(0, 0, 24 * 60 * 60 * 1000, CheckTimerProcDaily);
- MakeProgressWindowThread();
-
hEventServicesModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, ServicesModulesLoaded);
}
diff --git a/updater/socket.cpp b/updater/socket.cpp
index 745d187..0862ad8 100644
--- a/updater/socket.cpp
+++ b/updater/socket.cpp
@@ -159,7 +159,7 @@ bool GetFile(char *url, TCHAR *temp_folder, char *plugin_name, char *version, bo
{
hNetlibHttp = NULL;
int err = GetLastError();
- if(err)
+ if (err && !Miranda_Terminated())
{
TCHAR buff[1024], *tmp;
int len = mir_sntprintf(buff, SIZEOF(buff), TranslateT("Failed to download \"%s\": "), (tmp = mir_a2t(plugin_name)));
diff --git a/updater/xmldata.cpp b/updater/xmldata.cpp
index 2e2e407..d8017a5 100644
--- a/updater/xmldata.cpp
+++ b/updater/xmldata.cpp
@@ -265,25 +265,32 @@ bool UpdateXMLData(const Category cat, const char *redirect_url /*= 0*/, int rec
req.flags |= NLHRF_PERSISTENT | NLHRF_REDIRECT;
NETLIBHTTPREQUEST *resp = (NETLIBHTTPREQUEST *)CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM)hNetlibUser, (LPARAM)&req);
- if(etag_hdr.szValue) free(etag_hdr.szValue);
+ if (etag_hdr.szValue) free(etag_hdr.szValue);
- if (!resp) {
+ if (!resp)
+ {
hNetlibHttp = NULL;
- int err = GetLastError();
- if(err) {
- TCHAR buff[512];
- int len = mir_sntprintf(buff, SIZEOF(buff), TranslateT("Failed to download XML data: "));
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, err, 0, buff + len, 512 - len, 0);
- ShowError(buff);
- //MessageBox(0, buff + len, TranslateT("Updater: Error Downloading XML Data"), MB_OK | MB_ICONWARNING);
- } else {
- ShowError(TranslateT("Failed to download XML data - Response is NULL"));
- //MessageBox(0, TranslateT("Error downloading XML data...\nResponse is NULL"), TranslateT("Updater Error"), MB_OK | MB_ICONWARNING);
- NLog("Failed to download XML data - Response is NULL");
+ if (!Miranda_Terminated())
+ {
+ int err = GetLastError();
+ if (err)
+ {
+ TCHAR buff[512];
+ int len = mir_sntprintf(buff, SIZEOF(buff), TranslateT("Failed to download XML data: "));
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, err, 0, buff + len, 512 - len, 0);
+ ShowError(buff);
+ //MessageBox(0, buff + len, TranslateT("Updater: Error Downloading XML Data"), MB_OK | MB_ICONWARNING);
+ }
+ else
+ {
+ ShowError(TranslateT("Failed to download XML data - Response is NULL"));
+ //MessageBox(0, TranslateT("Error downloading XML data...\nResponse is NULL"), TranslateT("Updater Error"), MB_OK | MB_ICONWARNING);
+ NLog("Failed to download XML data - Response is NULL");
+ }
}
return LoadOldXMLData(cat, false);
-
- } else if(resp->resultCode == 304) { // 'Not Modified' response
+ }
+ else if (resp->resultCode == 304) { // 'Not Modified' response
hNetlibHttp = resp->nlc;
CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)resp);
resp = 0;