From: Paul Gofman pgofman@codeweavers.com
--- dlls/quartz/dsoundrender.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index 59609a3c849..3a562669efe 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -156,7 +156,7 @@ static void update_positions(struct dsound_render *filter, DWORD *seqwritepos, D }
static HRESULT get_write_pos(struct dsound_render *filter, - DWORD *ret_writepos, REFERENCE_TIME write_at, DWORD *pfree) + DWORD *ret_writepos, REFERENCE_TIME write_at, DWORD *pfree, REFERENCE_TIME max_fill) { DWORD writepos, min_writepos, playpos; REFERENCE_TIME max_lag = 50 * 10000; @@ -210,7 +210,7 @@ static HRESULT get_write_pos(struct dsound_render *filter, WARN("Delta too big %s/%s, too far ahead.\n", debugstr_time(delta_t), debugstr_time(max_lag)); aheadbytes = pos_from_time(filter, delta_t); WARN("Advancing %lu bytes.\n", aheadbytes); - if (delta_t >= DSoundRenderer_Max_Fill) + if (delta_t >= max_fill) return S_FALSE; *ret_writepos = (min_writepos + aheadbytes) % filter->buf_size; } @@ -219,7 +219,7 @@ end: *pfree = playpos - *ret_writepos; else *pfree = filter->buf_size + playpos - *ret_writepos; - if (time_from_pos(filter, filter->buf_size - *pfree) >= DSoundRenderer_Max_Fill) + if (time_from_pos(filter, filter->buf_size - *pfree) >= max_fill) { TRACE("Blocked: too full %s / %s\n", debugstr_time(time_from_pos(filter, filter->buf_size - *pfree)), debugstr_time(DSoundRenderer_Max_Fill)); @@ -239,7 +239,7 @@ static HRESULT send_sample_data(struct dsound_render *filter, BYTE *buf1, *buf2;
if (filter->filter.state == State_Running) - hr = get_write_pos(filter, &writepos, tStart, &free); + hr = get_write_pos(filter, &writepos, tStart, &free, data ? DSoundRenderer_Max_Fill : MAXLONGLONG); else hr = S_FALSE;