You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2012/11/21 13:14:55 UTC
svn commit: r1412073 -
/commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunmgr/prunmgr.c
Author: mturk
Date: Wed Nov 21 12:14:55 2012
New Revision: 1412073
URL: http://svn.apache.org/viewvc?rev=1412073&view=rev
Log:
DAEMON-262: Autorefresh property page in case service state changed from outside manager
Modified:
commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunmgr/prunmgr.c
Modified: commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunmgr/prunmgr.c
URL: http://svn.apache.org/viewvc/commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunmgr/prunmgr.c?rev=1412073&r1=1412072&r2=1412073&view=diff
==============================================================================
--- commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunmgr/prunmgr.c (original)
+++ commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunmgr/prunmgr.c Wed Nov 21 12:14:55 2012
@@ -524,6 +524,7 @@ BOOL __generalStopSave(HWND hDlg)
void __generalPropertyRefresh(HWND hDlg)
{
+
Button_Enable(GetDlgItem(hDlg, IDC_PPSGSTART), FALSE);
Button_Enable(GetDlgItem(hDlg, IDC_PPSGSTOP), FALSE);
Button_Enable(GetDlgItem(hDlg, IDC_PPSGPAUSE), FALSE);
@@ -561,6 +562,8 @@ void __generalPropertyRefresh(HWND hDlg)
}
static BOOL bpropCentered = FALSE;
+static HWND _generalPropertyHwnd = NULL;
+
LRESULT CALLBACK __generalProperty(HWND hDlg,
UINT uMessage,
WPARAM wParam,
@@ -572,6 +575,7 @@ LRESULT CALLBACK __generalProperty(HWND
switch (uMessage) {
case WM_INITDIALOG:
{
+ _generalPropertyHwnd = hDlg;
if (!bEnableTry)
apxCenterWindow(GetParent(hDlg), NULL);
else if (!bpropCentered)
@@ -1469,6 +1473,7 @@ void ShowServiceProperties(HWND hWnd)
PropertySheetW(&psH);
_propertyOpened = FALSE;
+ _generalPropertyHwnd = NULL;
if (!bEnableTry)
PostQuitMessage(0);
bpropCentered = FALSE;
@@ -1611,6 +1616,27 @@ static BOOL saveConfiguration()
return TRUE;
}
+static BOOL isManagerRunning = FALSE;
+static DWORD WINAPI refreshThread(LPVOID lpParam)
+{
+ while (isManagerRunning) {
+ /* Refresh property window */
+ DWORD os = 0;
+ if (_currentEntry)
+ os = _currentEntry->stServiceStatus.dwCurrentState;
+ _currentEntry = apxServiceEntry(hService, TRUE);
+ if (_currentEntry && _currentEntry->stServiceStatus.dwCurrentState != os) {
+ if (_gui_store->hMainWnd)
+ PostMessage(_gui_store->hMainWnd, WM_COMMAND,
+ MAKEWPARAM(IDMS_REFRESH, 0), 0);
+ if (_generalPropertyHwnd)
+ __generalPropertyRefresh(_generalPropertyHwnd);
+ }
+ Sleep(1000);
+ }
+ return 0;
+}
+
/* Main program entry
* Since we are inependant from CRT
* the arguments are not used
@@ -1740,6 +1766,8 @@ int WINAPI WinMain(HINSTANCE hInstance,
apxDisplayError(TRUE, NULL, 0, apxLoadResourceA(IDS_ERRSREG, 0));
return FALSE;
}
+ isManagerRunning = TRUE;
+ CreateThread(NULL, 0, refreshThread, NULL, 0, NULL);
/* Create main invisible window */
_gui_store->hMainWnd = CreateWindow(_gui_store->szWndClass,
apxLoadResource(IDS_APPLICATION, 0),
@@ -1753,7 +1781,6 @@ int WINAPI WinMain(HINSTANCE hInstance,
}
if (lpCmdline->dwCmdIndex == 3)
PostMessage(_gui_store->hMainWnd, WM_COMMAND, IDM_TM_START, 0);
-
while (GetMessage(&msg, NULL, 0, 0)) {
if(!TranslateAccelerator(_gui_store->hMainWnd,
_gui_store->hAccel, &msg)) {
@@ -1761,6 +1788,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
DispatchMessage(&msg);
}
}
+ isManagerRunning = FALSE;
saveConfiguration();
cleanup: