From 87af75269d62b64bce167d995e163bc20d2edf57 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 6 Jan 2004 20:39:48 +0000 Subject: [PATCH] Register window class on mciavi driver loading, and unregister it on driver unloading. --- dlls/winmm/mciavi/mciavi.c | 4 ++++ dlls/winmm/mciavi/private_mciavi.h | 4 +++- dlls/winmm/mciavi/wnd.c | 28 ++++++++++++++++++---------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/dlls/winmm/mciavi/mciavi.c b/dlls/winmm/mciavi/mciavi.c index 5824aff8b89..cd863ddc623 100644 --- a/dlls/winmm/mciavi/mciavi.c +++ b/dlls/winmm/mciavi/mciavi.c @@ -140,6 +140,8 @@ static DWORD MCIAVI_drvOpen(LPSTR str, LPMCI_OPEN_DRIVER_PARMSA modp) /* session instance */ if (!modp) return 0xFFFFFFFF; + if (!MCIAVI_RegisterClass()) return 0; + wma = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MCIAVI)); if (!wma) return 0; @@ -169,6 +171,8 @@ static DWORD MCIAVI_drvClose(DWORD dwDevID) wma = (WINE_MCIAVI*)mciGetDriverData(dwDevID); if (wma) { + MCIAVI_UnregisterClass(); + EnterCriticalSection(&wma->cs); mciSetDriverData(dwDevID, 0); diff --git a/dlls/winmm/mciavi/private_mciavi.h b/dlls/winmm/mciavi/private_mciavi.h index cfe2f44cc6d..231f2944831 100644 --- a/dlls/winmm/mciavi/private_mciavi.h +++ b/dlls/winmm/mciavi/private_mciavi.h @@ -103,7 +103,9 @@ LRESULT MCIAVI_PaintFrame(WINE_MCIAVI* wma, HDC hDC); WINE_MCIAVI* MCIAVI_mciGetOpenDev(UINT wDevID); DWORD MCIAVI_mciClose(UINT, DWORD, LPMCI_GENERIC_PARMS); -/* window.c */ +/* wnd.c */ +BOOL MCIAVI_RegisterClass(void); +BOOL MCIAVI_UnregisterClass(void); BOOL MCIAVI_CreateWindow(WINE_MCIAVI* wma, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSA lpOpenParms); DWORD MCIAVI_mciPut(UINT wDevID, DWORD dwFlags, LPMCI_DGV_PUT_PARMS lpParms); DWORD MCIAVI_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms); diff --git a/dlls/winmm/mciavi/wnd.c b/dlls/winmm/mciavi/wnd.c index ef92a41327e..4edcdc81e1b 100644 --- a/dlls/winmm/mciavi/wnd.c +++ b/dlls/winmm/mciavi/wnd.c @@ -86,28 +86,36 @@ static LRESULT WINAPI MCIAVI_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPA return 0; } -BOOL MCIAVI_CreateWindow(WINE_MCIAVI* wma, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSA lpOpenParms) +BOOL MCIAVI_UnregisterClass(void) { - WNDCLASSA wndClass; - HWND hParent = 0; - DWORD dwStyle = WS_OVERLAPPEDWINDOW; - int p = CW_USEDEFAULT; - RECT rc; + return UnregisterClassA("MCIAVI", MCIAVI_hInstance); +} - /* what should be done ? */ - if (wma->hWnd) return TRUE; +BOOL MCIAVI_RegisterClass(void) +{ + WNDCLASSA wndClass; ZeroMemory(&wndClass, sizeof(WNDCLASSA)); wndClass.style = CS_DBLCLKS; wndClass.lpfnWndProc = (WNDPROC)MCIAVI_WindowProc; - wndClass.cbClsExtra = 0; wndClass.cbWndExtra = sizeof(MCIDEVICEID); wndClass.hInstance = MCIAVI_hInstance; wndClass.hCursor = LoadCursorA(0, (LPSTR)IDC_ARROW); wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); wndClass.lpszClassName = "MCIAVI"; - if (!RegisterClassA(&wndClass)) return FALSE; + return RegisterClassA(&wndClass); +} + +BOOL MCIAVI_CreateWindow(WINE_MCIAVI* wma, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSA lpOpenParms) +{ + HWND hParent = 0; + DWORD dwStyle = WS_OVERLAPPEDWINDOW; + int p = CW_USEDEFAULT; + RECT rc; + + /* what should be done ? */ + if (wma->hWnd) return TRUE; if (dwFlags & MCI_DGV_OPEN_PARENT) hParent = lpOpenParms->hWndParent; if (dwFlags & MCI_DGV_OPEN_WS) dwStyle = lpOpenParms->dwStyle; -- 2.11.4.GIT