void PageInfo::release() { std::unique_lock<std::mutex> lock(p_cache->p_mutex); p_flags |= kFlagRelease; if((p_flags & kFlagLoaded) && p_useCount == 0) doRelease(std::move(lock)); }
HRESULT CGifSmileyCtrl::UnloadImage( ) { if ( m_nTimerId ) ::KillTimer( NULL, m_nTimerId ); if (m_pGifImage) { LISTIMAGES::iterator it=_listImages.begin(); while (it!=_listImages.end()) { if ((*it) && (*it)->IsEqual(m_pGifImage)) { if ( (*it)->UnloadImage() && _purgeImageListTimerId==0 ) { //_purgeImageListTimerId=::SetTimer(NULL,0, 1000, PurgeImageListTimerProc); doRelease(); } break; } it++; } } m_nTimerId=NULL; m_pGifImage=NULL; m_pDelays=NULL; m_nFrameCount=0; m_nCurrentFrame=0; m_nFrameSize=Size(0,0); m_sizeExtent.cx=0; m_sizeExtent.cy=0; return S_OK; }
DhcpServerMessage *DHCPD::process(DhcpClientMessage &req) { DhcpServerMessage *reply = NULL; req.dump(); OptServerId sid(req); if (sid.present() && sid.value().u != m_pConfig->getIPv4Address().u) { if (req.broadcasted() && req.messageType() == RTNET_DHCP_MT_REQUEST) m_db.cancelOffer(req); return NULL; } switch (req.messageType()) { /* * Requests that require server's reply. */ case RTNET_DHCP_MT_DISCOVER: reply = doDiscover(req); break; case RTNET_DHCP_MT_REQUEST: reply = doRequest(req); break; case RTNET_DHCP_MT_INFORM: reply = doInform(req); break; /* * Requests that don't have a reply. */ case RTNET_DHCP_MT_DECLINE: doDecline(req); break; case RTNET_DHCP_MT_RELEASE: doRelease(req); break; /* * Unexpected or unknown message types. */ case RTNET_DHCP_MT_OFFER: /* FALLTHROUGH */ case RTNET_DHCP_MT_ACK: /* FALLTHROUGH */ case RTNET_DHCP_MT_NAC: /* FALLTHROUGH */ default: break; } return reply; }
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static BOOL bAlarm = FALSE; int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; //if( message == CMouseHook::UWM_DRAGEEND) //{ // SetCapture(NULL); // SetCursor(LoadCursor(NULL,IDC_ARROW)); // CMouseHook::StopHook(); // if( g_pChessBoard ) // { // g_pChessBoard->GetGameWindow(); // } //} switch (message) { case WM_ACTIVATEAPP: g_bActive = wParam; break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_CAPTURE: break; case IDM_ABOUT: //test(); DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hwnd, About); break; case IDM_EXIT: DestroyWindow(hwnd); break; case IDM_SEC5: AppEnv::nThinkTime = 5; CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC5, MF_CHECKED); CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC10, MF_UNCHECKED); CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC30, MF_UNCHECKED); break; case IDM_SEC10: AppEnv::nThinkTime = 10; CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC5, MF_UNCHECKED); CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC10, MF_CHECKED); CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC30, MF_UNCHECKED); break; case IDM_SEC30: AppEnv::nThinkTime = 30; CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC5, MF_UNCHECKED); CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC10, MF_UNCHECKED); CheckMenuItem(GetMenu(g_hWndMain), IDM_SEC30, MF_CHECKED); break; case IDM_AUTOPLAY: AppEnv::bAutoPlay = !AppEnv::bAutoPlay ; if(AppEnv::bAutoPlay ) CheckMenuItem(GetMenu(g_hWndMain), IDM_AUTOPLAY, MF_CHECKED); else CheckMenuItem(GetMenu(g_hWndMain), IDM_AUTOPLAY, MF_UNCHECKED); default: return DefWindowProc(g_hWndMain, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); if ( g_pMainSurface ) { g_pMainSurface->FastBlt(hdc); } EndPaint(hwnd, &ps); break; case WM_LBUTTONDOWN: //SetCapture(hwnd); //SetCursor(LoadCursor(NULL,IDC_CROSS)); //CMouseHook::StartHook(hwnd); break; //case WM_KEYUP: // vk = (int) wParam; // switch( vk ) // { // case VK_RETURN: // if ( g_pChessEngine) // { // if ( g_pChessEngine->GetState() == CChessEngine::BusyWait ) // g_pChessEngine->SendCommand("stop"); // } // //DumpBoradHash(); // break; // } break; case WM_TIMER: switch( wParam ) { case APPUPDATE_TIMER: if (!AppLoop()) { DestroyWindow(hwnd); } doUpdate(); return 0; } break; case WM_DESTROY: if(g_bInitialized) { ExitApp(); } doRelease(); PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }