[PATCH v3 2/2] msacm32: Implement ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT.
Andrew Eikum
aeikum at codeweavers.com
Fri Jun 23 11:13:27 CDT 2017
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Fri, Jun 23, 2017 at 10:53:53AM -0500, Zebediah Figura wrote:
> From: Zebediah Figura <z.figura12 at gmail.com>
>
> v3: don't set wFormatTag
> Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
> ---
> dlls/msacm32/format.c | 40 ++++++++++++++++++++++++++++------------
> 1 file changed, 28 insertions(+), 12 deletions(-)
>
> diff --git a/dlls/msacm32/format.c b/dlls/msacm32/format.c
> index 24d6ea5f60a..b3d29003936 100644
> --- a/dlls/msacm32/format.c
> +++ b/dlls/msacm32/format.c
> @@ -62,8 +62,16 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
> if (SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
> CB_FINDSTRINGEXACT, -1,
> (LPARAM)paftd->szFormatTag) == CB_ERR)
> - SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
> + {
> + int index = SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
> CB_ADDSTRING, 0, (LPARAM)paftd->szFormatTag);
> + if (((affd->afc->fdwStyle & ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT) &&
> + (paftd->dwFormatTag == affd->afc->pwfx->wFormatTag)) ||
> + (!(affd->afc->fdwStyle & ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT) &&
> + (paftd->dwFormatTag == WAVE_FORMAT_PCM)))
> + SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
> + CB_SETCURSEL, index, 0);
> + }
> }
> break;
> case WINE_ACMFF_FORMAT:
> @@ -87,7 +95,7 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
>
> for (i = 0; i < paftd->cStandardFormats; i++) {
> static const WCHAR fmtW[] = {'%','d',' ','K','o','/','s','\0'};
> - int j;
> + int j, index;
>
> afd.dwFormatIndex = i;
> afd.fdwSupport = 0;
> @@ -99,14 +107,17 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
> buffer[j] = ' ';
> wsprintfW(buffer + ACMFORMATTAGDETAILS_FORMATTAG_CHARS,
> fmtW, (afd.pwfx->nAvgBytesPerSec + 512) / 1024);
> - SendDlgItemMessageW(affd->hWnd,
> + index = SendDlgItemMessageW(affd->hWnd,
> IDD_ACMFORMATCHOOSE_CMB_FORMAT,
> CB_ADDSTRING, 0, (LPARAM)buffer);
> + if ((affd->afc->fdwStyle & ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT) &&
> + affd->afc->cbwfx >= paftd->cbFormatSize &&
> + !memcmp(afd.pwfx, affd->afc->pwfx, paftd->cbFormatSize))
> + SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT,
> + CB_SETCURSEL, index, 0);
> }
> }
> acmDriverClose(had, 0);
> - SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT,
> - CB_SETCURSEL, 0, 0);
> HeapFree(MSACM_hHeap, 0, afd.pwfx);
> }
> }
> @@ -138,7 +149,7 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid,
> return TRUE;
> }
>
> -static BOOL MSACM_FillFormatTags(HWND hWnd)
> +static BOOL MSACM_FillFormatTags(HWND hWnd, PACMFORMATCHOOSEW afc)
> {
> ACMFORMATTAGDETAILSW aftd;
> struct MSACM_FillFormatData affd;
> @@ -148,13 +159,15 @@ static BOOL MSACM_FillFormatTags(HWND hWnd)
>
> affd.hWnd = hWnd;
> affd.mode = WINE_ACMFF_TAG;
> + affd.afc = afc;
>
> acmFormatTagEnumW(NULL, &aftd, MSACM_FillFormatTagsCB, (DWORD_PTR)&affd, 0);
> - SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, CB_SETCURSEL, 0, 0);
> + if (SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, CB_GETCURSEL, 0, 0) == CB_ERR)
> + SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, CB_SETCURSEL, 0, 0);
> return TRUE;
> }
>
> -static BOOL MSACM_FillFormat(HWND hWnd)
> +static BOOL MSACM_FillFormat(HWND hWnd, PACMFORMATCHOOSEW afc)
> {
> ACMFORMATTAGDETAILSW aftd;
> struct MSACM_FillFormatData affd;
> @@ -166,6 +179,7 @@ static BOOL MSACM_FillFormat(HWND hWnd)
>
> affd.hWnd = hWnd;
> affd.mode = WINE_ACMFF_FORMAT;
> + affd.afc = afc;
> SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
> CB_GETLBTEXT,
> SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG,
> @@ -173,7 +187,8 @@ static BOOL MSACM_FillFormat(HWND hWnd)
> (LPARAM)affd.szFormatTag);
>
> acmFormatTagEnumW(NULL, &aftd, MSACM_FillFormatTagsCB, (DWORD_PTR)&affd, 0);
> - SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT, CB_SETCURSEL, 0, 0);
> + if (SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT, CB_GETCURSEL, 0, 0) == CB_ERR)
> + SendDlgItemMessageW(hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMAT, CB_SETCURSEL, 0, 0);
> return TRUE;
> }
>
> @@ -212,10 +227,11 @@ static INT_PTR CALLBACK FormatChooseDlgProc(HWND hWnd, UINT msg,
> case WM_INITDIALOG:
> afc = (PACMFORMATCHOOSEW)lParam;
> SetPropW(hWnd, fmt_prop, (HANDLE)afc);
> - MSACM_FillFormatTags(hWnd);
> - MSACM_FillFormat(hWnd);
> + MSACM_FillFormatTags(hWnd, afc);
> + MSACM_FillFormat(hWnd, afc);
> if ((afc->fdwStyle & ~(ACMFORMATCHOOSE_STYLEF_CONTEXTHELP|
> ACMFORMATCHOOSE_STYLEF_SHOWHELP|
> + ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT|
> ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE|
> ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE)) != 0)
> FIXME("Unsupported style %08x\n", afc->fdwStyle);
> @@ -234,7 +250,7 @@ static INT_PTR CALLBACK FormatChooseDlgProc(HWND hWnd, UINT msg,
> case IDD_ACMFORMATCHOOSE_CMB_FORMATTAG:
> switch (HIWORD(wParam)) {
> case CBN_SELCHANGE:
> - MSACM_FillFormat(hWnd);
> + MSACM_FillFormat(hWnd, afc);
> break;
> default:
> TRACE("Dropped dlgNotif (fmtTag): 0x%08x 0x%08lx\n",
> --
> 2.13.1
>
>
>
More information about the wine-patches
mailing list