Re: [PATCH 3/5] winepulse: Add audioclient
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
participants (2)
-
Andrew Eikum -
Sebastian Lackner