ChangeSet ID: 21461 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/28 05:01:46
Modified files: dlls/msrle32 : msrle32.c dlls/msvideo : msvideo_main.c
Log message: Dmitry Timoshkov dmitry@codeweavers.com Fix several bugs in msrle32 preventing it to load. Remove a hack in ICOpen compensating a bug in msrle32. Use MSVFW32_hModule directly in ICCompressorChoose, and avoid a convoluted GWLP_HINSTANCE hack.
Patch: http://cvs.winehq.org/patch.py?id=21461
Old revision New revision Changes Path 1.14 1.15 +4 -19 wine/dlls/msrle32/msrle32.c 1.68 1.69 +3 -16 wine/dlls/msvideo/msvideo_main.c
Index: wine/dlls/msrle32/msrle32.c diff -u -p wine/dlls/msrle32/msrle32.c:1.14 wine/dlls/msrle32/msrle32.c:1.15 --- wine/dlls/msrle32/msrle32.c:1.14 28 Nov 2005 11: 1:46 -0000 +++ wine/dlls/msrle32/msrle32.c 28 Nov 2005 11: 1:46 -0000 @@ -58,7 +58,6 @@ inline WORD Intensity(RGBQUAD clr) /* utility functions */ static BOOL isSupportedDIB(LPCBITMAPINFOHEADER lpbi); static BOOL isSupportedMRLE(LPCBITMAPINFOHEADER lpbi); -static void LoadWideString(UINT id, LPWSTR str, INT len); static BYTE MSRLE32_GetNearestPaletteIndex(UINT count, const RGBQUAD *clrs, RGBQUAD clr);
/* compression functions */ @@ -98,14 +97,6 @@ static LRESULT DecompressGetPalette(Code
/*****************************************************************************/
-static void LoadWideString(UINT id, LPWSTR str, INT len) -{ - char szTemp[80]; - - LoadStringA(MSRLE32_hModule, id, szTemp, sizeof(szTemp)); - MultiByteToWideChar(CP_ACP, 0, szTemp, -1, str, len); -} - static BOOL isSupportedMRLE(LPCBITMAPINFOHEADER lpbi) { /* pre-conditions */ @@ -1113,9 +1104,6 @@ static CodecInfo* Open(LPICOPEN icinfo) icinfo->fccHandler, (char*)&icinfo->fccHandler, icinfo->dwVersion,icinfo->dwFlags);
- if (icinfo->fccType != ICTYPE_VIDEO) - return NULL; - switch (icinfo->fccHandler) { case FOURCC_RLE: case FOURCC_RLE4: @@ -1176,14 +1164,14 @@ static LRESULT GetInfo(CodecInfo *pi, IC return 0;
icinfo->dwSize = sizeof(ICINFO); - icinfo->fccType = streamtypeVIDEO; + icinfo->fccType = ICTYPE_VIDEO; icinfo->fccHandler = (pi != NULL ? pi->fccHandler : FOURCC_MRLE); icinfo->dwFlags = VIDCF_QUALITY | VIDCF_TEMPORAL | VIDCF_CRUNCH | VIDCF_FASTTEMPORALC; icinfo->dwVersion = MSRLE32_VERSION; icinfo->dwVersionICM = 0x01040000; /* Version 1.4 build 0 */
- LoadWideString(IDS_NAME, icinfo->szName, sizeof(icinfo->szName)); - LoadWideString(IDS_DESCRIPTION, icinfo->szDescription, sizeof(icinfo->szDescription)); + LoadStringW(MSRLE32_hModule, IDS_NAME, icinfo->szName, sizeof(icinfo->szName)/sizeof(WCHAR)); + LoadStringW(MSRLE32_hModule, IDS_DESCRIPTION, icinfo->szDescription, sizeof(icinfo->szDescription)/sizeof(WCHAR));
return sizeof(ICINFO); } @@ -1796,9 +1784,6 @@ LRESULT CALLBACK MSRLE32_DriverProc(DWOR case DRV_LOAD: return DRVCNF_OK; case DRV_OPEN: - if (lParam2 == 0) - return (LRESULT)0xFFFF0000; - else return (LRESULT)Open((ICOPEN*)lParam2); case DRV_CLOSE: if (dwDrvID != 0xFFFF0000 && (LPVOID)dwDrvID != NULL) @@ -1910,7 +1895,7 @@ BOOL WINAPI DllMain(HINSTANCE hModule, D
case DLL_PROCESS_DETACH: break; - }; + }
return TRUE; } Index: wine/dlls/msvideo/msvideo_main.c diff -u -p wine/dlls/msvideo/msvideo_main.c:1.68 wine/dlls/msvideo/msvideo_main.c:1.69 --- wine/dlls/msvideo/msvideo_main.c:1.68 28 Nov 2005 11: 1:46 -0000 +++ wine/dlls/msvideo/msvideo_main.c 28 Nov 2005 11: 1:46 -0000 @@ -139,6 +139,7 @@ static BOOL enum_drivers(DWORD fccType, { for (s = buf; *s; s += strlen(s) + 1) { + TRACE("got %s\n", s); if (strncasecmp(s, fccTypeStr, 5) || s[9] != '=') continue; if ((result = handler(s, cnt++, param))) break; } @@ -349,20 +350,7 @@ HIC VFWAPI ICOpen(DWORD fccType, DWORD f
hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen); if (!hdrv) - { - if (fccType == streamtypeVIDEO) - { - codecname[0] = 'v'; - codecname[1] = 'i'; - codecname[2] = 'd'; - codecname[3] = 'c'; - - fccType = ICTYPE_VIDEO; - hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen); - } - if (!hdrv) - return 0; - } + return 0; } else { /* The driver has been registered at runtime with its name */ hdrv = OpenDriver(driver->name, NULL, (LPARAM)&icopen); @@ -767,8 +755,7 @@ static INT_PTR CALLBACK icm_choose_compr if (choose_comp->title) SetWindowTextA(hdlg, choose_comp->title);
- LoadStringW((HINSTANCE)GetWindowLongPtrW(hdlg, GWLP_HINSTANCE), - IDS_FULLFRAMES, buf, 128); + LoadStringW(MSVFW32_hModule, IDS_FULLFRAMES, buf, 128); SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_ADDSTRING, 0, (LPARAM)buf);
enum_compressors(GetDlgItem(hdlg, IDC_COMP_LIST));