http://bugs.winehq.org/show_bug.cgi?id=28723
--- Comment #26 from Alexey Loukianov mooroon2@mail.ru 2011-11-03 20:15:06 CDT --- OK, tested with following inside AudioClient_Initialize():
/*This->bufsize_frames = ceil((duration / 10000000.) * fmt->nSamplesPerSec); */ /* FIXME by LeXa2: Temporary hack to force using N*PeriodSize buffer size */ This->bufsize_frames = mmdev_period_frames * 3;
Despite XA2 calling GetBufferSize() behavior remains just as if XA2 ignores the GetBufferSize() output and sticks with originally requested buffer size. Using "mmdev_period_frames * 4" also has no effect of XA2 behavior.
Just to be sure I added TRACE() debug prints for "This->bufsize_frames" in Initialize() and for "*out" in GetBufferSize(). Both report expected buffer size being either 1323 or 1764 so it is XA2 who refuse to use full buffer size.