void ODBCSession::Close() { SessionClose(); if(hdbc != SQL_NULL_HANDLE) { FlushConnections(); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); hdbc = SQL_NULL_HANDLE; hstmt = SQL_NULL_HANDLE; } }
LRESULT Frameserver::WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: // message: window being destroyed mbExit = true; break; case VDSRVM_BIGGEST: { uint32 size = sizeof(AVISTREAMINFO); if (vSrc) { if (size < sizeof(BITMAPINFOHEADER)) size = sizeof(BITMAPINFOHEADER); if (size < mFrameSize) size = mFrameSize; } if (aSrc) { uint32 dataRate = aSrc->getWaveFormat()->mDataRate; if (size < dataRate) size = dataRate; uint32 formatSize = aSrc->getFormatLen(); if (size < formatSize) size = aSrc->getFormatLen(); } if (size < 65536) size = 65536; VDDEBUG("VDSRVM_BIGGEST: allocate a frame of size %ld bytes\n", size); return size; } case VDSRVM_OPEN: ++lRequestCount; VDDEBUG("VDSRVM_OPEN(arena size %ld, mmap ID %08lx)\n", wParam, lParam); return SessionOpen(lParam, wParam); case VDSRVM_CLOSE: ++lRequestCount; VDDEBUG("[session %08lx] VDSRVM_CLOSE()\n", lParam); return SessionClose(lParam); case VDSRVM_REQ_STREAMINFO: ++lRequestCount; VDDEBUG("[session %08lx] VDSRVM_REQ_STREAMINFO(stream %d)\n", lParam, wParam); return SessionStreamInfo(lParam, wParam); case VDSRVM_REQ_FORMAT: ++lRequestCount; VDDEBUG("[session %08lx] VDSRVM_REQ_FORMAT(stream %d)\n", lParam, wParam); return SessionFormat(lParam, wParam); case VDSRVM_REQ_FRAME: ++lFrameCount; VDDEBUG("[session %08lx] VDSRVM_REQ_FRAME(sample %ld)\n", lParam, wParam); return SessionFrame(lParam, wParam); case VDSRVM_REQ_AUDIO: ++lAudioSegCount; return SessionAudio(lParam, wParam); case VDSRVM_REQ_AUDIOINFO: ++lAudioSegCount; VDDEBUG("[session %08lx] VDSRVM_REQ_AUDIOINFO(sample %ld)\n", lParam, wParam); return SessionAudioInfo(lParam, wParam); default: return mpUIFrame->DefProc(hWnd, message, wParam, lParam); } return (0); }