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

Reply via email to