I know this patch is already committed, but still...
On 29.10.2015 18:04, Andrew Eikum wrote:
} if (pulse_ml) pa_mainloop_quit(pulse_ml, 0);
if (pulse_thread) {
WaitForSingleObject(pulse_thread, INFINITE);
This can't work. You can't wait for a thread while holding the loader lock.
+static DWORD CALLBACK pulse_mainloop_thread(void *tmp) {
- int ret;
- pulse_ml = pa_mainloop_new();
I might be wrong, but I see a risk here that the pulse_ml conflicts with the use in pulse_test_connect(). Is it guaranteed that pulse_test_connect() is only called once after loading the DLL?
Regards, Sebastian
On Tue, Nov 03, 2015 at 01:32:01AM +0100, Sebastian Lackner wrote:
I know this patch is already committed, but still...
On 29.10.2015 18:04, Andrew Eikum wrote:
} if (pulse_ml) pa_mainloop_quit(pulse_ml, 0);
if (pulse_thread) {
WaitForSingleObject(pulse_thread, INFINITE);
This can't work. You can't wait for a thread while holding the loader lock.
Hm, I wondered about this, and it did seem to work when I tested it.
+static DWORD CALLBACK pulse_mainloop_thread(void *tmp) {
- int ret;
- pulse_ml = pa_mainloop_new();
I might be wrong, but I see a risk here that the pulse_ml conflicts with the use in pulse_test_connect(). Is it guaranteed that pulse_test_connect() is only called once after loading the DLL?
Yeah, pulse_test_connect() is called only from GetPriority, which is only called once from mmdevapi, when it's determining which driver to use.
Andrew