comparison pidgin/win32/winpidgin.c @ 21981:46a9fc98402e

This is how the error handling for the win32 single instance mutex is supposed to work.
author Daniel Atallah <daniel.atallah@gmail.com>
date Fri, 04 Jan 2008 01:10:09 +0000
parents 6492a6ca4b03
children 3370f295a1e0
comparison
equal deleted inserted replaced
21980:26648115261c 21981:46a9fc98402e
448 static BOOL winpidgin_set_running(BOOL fail_if_running) { 448 static BOOL winpidgin_set_running(BOOL fail_if_running) {
449 HANDLE h; 449 HANDLE h;
450 450
451 if ((h = CreateMutex(NULL, FALSE, "pidgin_is_running"))) { 451 if ((h = CreateMutex(NULL, FALSE, "pidgin_is_running"))) {
452 DWORD err = GetLastError(); 452 DWORD err = GetLastError();
453 if (err == ERROR_ALREADY_EXISTS && fail_if_running) { 453 if (err == ERROR_ALREADY_EXISTS) {
454 HWND msg_win; 454 if (fail_if_running) {
455 455 HWND msg_win;
456 printf("An instance of Pidgin is already running.\n"); 456
457 457 printf("An instance of Pidgin is already running.\n");
458 if((msg_win = FindWindowEx(HWND_MESSAGE, NULL, TEXT("WinpidginMsgWinCls"), NULL))) 458
459 if(SendMessage(msg_win, PIDGIN_WM_FOCUS_REQUEST, (WPARAM) NULL, (LPARAM) NULL)) 459 if((msg_win = FindWindowEx(HWND_MESSAGE, NULL, TEXT("WinpidginMsgWinCls"), NULL)))
460 return FALSE; 460 if(SendMessage(msg_win, PIDGIN_WM_FOCUS_REQUEST, (WPARAM) NULL, (LPARAM) NULL))
461 461 return FALSE;
462 /* If we get here, the focus request wasn't successful */ 462
463 463 /* If we get here, the focus request wasn't successful */
464 MessageBox(NULL, 464
465 "An instance of Pidgin is already running", 465 MessageBox(NULL,
466 NULL, MB_OK | MB_TOPMOST); 466 "An instance of Pidgin is already running",
467 467 NULL, MB_OK | MB_TOPMOST);
468 return FALSE; 468
469 } else 469 return FALSE;
470 }
471 } else if (err != ERROR_SUCCESS)
470 printf("Error (%u) accessing \"pidgin_is_running\" mutex.\n", (UINT) err); 472 printf("Error (%u) accessing \"pidgin_is_running\" mutex.\n", (UINT) err);
471 } 473 }
472 return TRUE; 474 return TRUE;
473 } 475 }
474 476