Hi,
Chris is right about the format. The shared mode mixer ought to return FLOAT(32),
and it always appears to return the extensible format as a consequence.
For weird reasons, wineoss may return integer formats, but that's certainly
going to cause some unexpecting app to crash.
>+ assert(oldpad >= This->pad);
Wasn't there a discussion some time ago that asserts are bad?
Better back out, return INVALIDATED or some such, but don't crash the app
just because there's a problem with sound. (I agree that winmm&mmdevapi
ought to contain self/consistency tests).
It would be nice if you could attach some
WINETEST_DEBUG=2 render.log 2>&1 to bugzilla somewhere.
There is stuff that do not cause a failure yet diverges from native.
+static void pulse_wr_callback(pa_stream *s, size_t bytes, void *userdata)
+ if (This->event)
+ SetEvent(This->event);
This should be the last thing in the callback. It may well cause your thread
to be kicked out by the scheduler.
+ if (filled_one && This->event)
+ SetEvent(This->event);
Don't the capture tests prove that events get in even when the buffer is full? (please cross-check)
>- Align buffer size to a multiple of period size
How can you pass the tests with that? It's wrong with both capture (annoyingly IMHO) and playback.
I don't have more time now (and know nothing about the pa_* API).
Is pa_mainloop_run the thread that dispatches the pulse_xyz_callbacks?
I wouldn't mind a winepulse driver in 1.4.0
Regards,
Jörg