[PATCH] winepulse: Add pulse driver, v8

Joerg-Cyril.Hoehle at t-systems.com Joerg-Cyril.Hoehle at t-systems.com
Wed Feb 29 10:29:26 CST 2012


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


More information about the wine-devel mailing list