From 2a93c2f23defc6a4aec7a7335a5a792dd808011f Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Mon, 23 Jan 2006 11:24:08 +0100 Subject: [PATCH] ICCompressorChoose should initialize fccType and fccHandler fields for the full frames case as well. --- dlls/avifil32/avifile_private.h | 4 ---- dlls/msvideo/msvideo_main.c | 12 ++++++++++-- include/vfw.h | 4 ++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/dlls/avifil32/avifile_private.h b/dlls/avifil32/avifile_private.h index d29c00c07af..4393264efe5 100644 --- a/dlls/avifil32/avifile_private.h +++ b/dlls/avifil32/avifile_private.h @@ -23,10 +23,6 @@ #define MAX_AVISTREAMS 8 #endif -#ifndef comptypeDIB -#define comptypeDIB mmioFOURCC('D','I','B',' ') -#endif - #ifndef DIBWIDTHBYTES #define WIDTHBYTES(i) (((i+31)&(~31))/8) #define DIBWIDTHBYTES(bi) WIDTHBYTES((bi).biWidth * (bi).biBitCount) diff --git a/dlls/msvideo/msvideo_main.c b/dlls/msvideo/msvideo_main.c index 753632ff011..30592435af2 100644 --- a/dlls/msvideo/msvideo_main.c +++ b/dlls/msvideo/msvideo_main.c @@ -749,6 +749,7 @@ static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARA { case WM_INITDIALOG: { + ICINFO *ic; WCHAR buf[128]; struct choose_compressor *choose_comp = (struct choose_compressor *)lparam; @@ -758,6 +759,11 @@ static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARA LoadStringW(MSVFW32_hModule, IDS_FULLFRAMES, buf, 128); SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_ADDSTRING, 0, (LPARAM)buf); + ic = HeapAlloc(GetProcessHeap(), 0, sizeof(ICINFO)); + ic->fccType = streamtypeVIDEO; + ic->fccHandler = comptypeDIB; + SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_SETITEMDATA, 0, (LPARAM)ic); + enum_compressors(GetDlgItem(hdlg, IDC_COMP_LIST)); SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_SETCURSEL, 0, 0); @@ -782,8 +788,10 @@ static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARA { struct choose_compressor *choose_comp = (struct choose_compressor *)GetWindowLongPtrW(hdlg, DWLP_USER); - choose_comp->cv.hic = ICOpen(ic->fccType, ic->fccHandler, ICMODE_COMPRESS); - if (choose_comp->cv.hic) + if (ic->fccHandler != comptypeDIB) + choose_comp->cv.hic = ICOpen(ic->fccType, ic->fccHandler, ICMODE_COMPRESS); + + if (ic->fccHandler == comptypeDIB || choose_comp->cv.hic) { choose_comp->cv.fccType = ic->fccType; choose_comp->cv.fccHandler = ic->fccHandler; diff --git a/include/vfw.h b/include/vfw.h index 760de96c672..6338fd7f7f2 100644 --- a/include/vfw.h +++ b/include/vfw.h @@ -143,6 +143,10 @@ DECLARE_HANDLE(HIC); #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70) #define ICM_SET_STATUS_PROC (ICM_USER+72) +#ifndef comptypeDIB +#define comptypeDIB mmioFOURCC('D','I','B',' ') +#endif + /* structs */ /* NOTE: Only the 16 bit structs are packed. Structs that are packed anyway -- 2.11.4.GIT