ngx_process_tray()

This commit is contained in:
Igor Sysoev 2009-03-30 14:46:33 +00:00
parent 91db11b32c
commit 8017a63cb3

View File

@ -11,6 +11,7 @@
static ngx_thread_value_t __stdcall ngx_worker_thread_cycle(void *data); static ngx_thread_value_t __stdcall ngx_worker_thread_cycle(void *data);
static void ngx_process_tray(ngx_cycle_t *cycle);
static long __stdcall ngx_window_procedure(HWND window, u_int message, static long __stdcall ngx_window_procedure(HWND window, u_int message,
u_int wparam, long lparam); u_int wparam, long lparam);
@ -57,16 +58,9 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
void void
ngx_single_process_cycle(ngx_cycle_t *cycle) ngx_single_process_cycle(ngx_cycle_t *cycle)
{ {
int rc;
ngx_int_t i; ngx_int_t i;
ngx_err_t err; ngx_err_t err;
ngx_tid_t tid; ngx_tid_t tid;
MSG message;
HWND window;
HMENU menu;
HICON icon,tray;
WNDCLASS wc;
HINSTANCE instance;
ngx_core_conf_t *ccf; ngx_core_conf_t *ccf;
ngx_init_temp_number(); ngx_init_temp_number();
@ -80,11 +74,10 @@ ngx_single_process_cycle(ngx_cycle_t *cycle)
} }
} }
ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
if (ngx_init_threads(ngx_threads_n, if (ngx_init_threads(ngx_threads_n, ccf->thread_stack_size, cycle)
ccf->thread_stack_size, cycle) == NGX_ERROR) != NGX_OK)
{ {
/* fatal */ /* fatal */
exit(2); exit(2);
@ -98,6 +91,44 @@ ngx_single_process_cycle(ngx_cycle_t *cycle)
exit(2); exit(2);
} }
if (ngx_create_thread(&tid, ngx_worker_thread_cycle, NULL, cycle->log)
!= 0)
{
/* fatal */
exit(2);
}
ngx_process_tray(cycle);
}
static ngx_thread_value_t __stdcall
ngx_worker_thread_cycle(void *data)
{
ngx_cycle_t *cycle;
cycle = (ngx_cycle_t *) ngx_cycle;
while (!ngx_quit) {
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
ngx_process_events_and_timers(cycle);
}
return 0;
}
static void
ngx_process_tray(ngx_cycle_t *cycle)
{
int rc;
MSG message;
HWND window;
HMENU menu;
HICON icon, tray;
WNDCLASS wc;
HINSTANCE instance;
instance = GetModuleHandle(NULL); instance = GetModuleHandle(NULL);
@ -152,7 +183,6 @@ ngx_single_process_cycle(ngx_cycle_t *cycle)
exit(2); exit(2);
} }
window = CreateWindow("nginx", "nginx", WS_OVERLAPPEDWINDOW, window = CreateWindow("nginx", "nginx", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
@ -175,14 +205,6 @@ ngx_single_process_cycle(ngx_cycle_t *cycle)
exit(2); exit(2);
} }
if (ngx_create_thread(&tid, ngx_worker_thread_cycle, NULL, cycle->log) != 0)
{
/* fatal */
exit(2);
}
for ( ;; ) { for ( ;; ) {
rc = GetMessage(&message, NULL, 0, 0); rc = GetMessage(&message, NULL, 0, 0);
@ -202,23 +224,6 @@ ngx_single_process_cycle(ngx_cycle_t *cycle)
} }
static ngx_thread_value_t __stdcall
ngx_worker_thread_cycle(void *data)
{
ngx_cycle_t *cycle;
cycle = (ngx_cycle_t *) ngx_cycle;
while (!ngx_quit) {
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
ngx_process_events_and_timers(cycle);
}
return 0;
}
static long __stdcall static long __stdcall
ngx_window_procedure(HWND window, u_int message, u_int wparam, long lparam) ngx_window_procedure(HWND window, u_int message, u_int wparam, long lparam)
{ {
@ -241,7 +246,8 @@ ngx_window_procedure(HWND window, u_int message, u_int wparam, long lparam)
} }
if (TrackPopupMenu(ngx_menu, TPM_RIGHTBUTTON, if (TrackPopupMenu(ngx_menu, TPM_RIGHTBUTTON,
mouse.x, mouse.y, 0, window, NULL) == 0) mouse.x, mouse.y, 0, window, NULL)
== 0)
{ {
ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_errno, ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_errno,
"TrackPopupMenu() failed"); "TrackPopupMenu() failed");
@ -254,7 +260,7 @@ ngx_window_procedure(HWND window, u_int message, u_int wparam, long lparam)
case WM_COMMAND: case WM_COMMAND:
if (wparam == NGX_WM_ABOUT) { if (wparam == NGX_WM_ABOUT) {
ngx_message_box("nginx", MB_OK, 0, ngx_message_box("nginx", MB_OK, 0,
NGINX_VER CRLF "(C) 2002-2005 Igor Sysoev"); NGINX_VER CRLF "(C) 2002-2009 Igor Sysoev");
return 0; return 0;
} }