Zebediah Figura (@zfigura) commented about dlls/wmvcore/async_reader.c:
> +
> + LeaveCriticalSection(&reader->callback_cs);
> + hr = IWMSyncReader2_GetNextSample(reader->reader, stream->number,
> + &sample->buffer, &sample->pts, &sample->duration,
> + &sample->flags, &sample->output, &sample->stream);
> + EnterCriticalSection(&reader->callback_cs);
> + }
> +
> + if (SUCCEEDED(stream->read_result = hr))
> + {
> + TRACE("Got stream %u buffer with pts %I64d.\n", stream->number, sample->pts);
> + stream->next_sample = sample;
> + }
> + else
> + {
> + WARN("Failed to get stream %u sample, hr %#lx.\n", stream->number, stream->read_result);
Missed this the first time, but: I'd make this an ERR, personally. (An application can trigger it, but it's one of those cases where it's a sign that something went catastrophically wrong, and also we're pretty much guessing how to handle it if not.)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1311#note_15865
Zebediah Figura (@zfigura) commented about dlls/wmvcore/async_reader.c:
> }
>
> if (!first_sample)
> - return NS_E_NO_MORE_SAMPLES;
> + return pending ? E_PENDING : NS_E_NO_MORE_SAMPLES;
What's the point of this? We never check the return code of async_reader_get_next_sample(), only whether it FAILED().
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1311#note_15866