[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Re: [PATCH] xaudio2: Always set current OpenAL context before making AL calls
From:       Andrew Eikum <aeikum () codeweavers ! com>
Date:       2016-06-30 19:55:32
Message-ID: 20160630195532.GO9106 () foghorn ! codeweavers ! com
[Download RAW message or body]

On Thu, Jun 30, 2016 at 12:47:52PM -0700, Chris Robinson wrote:
> On 06/30/2016 12:07 PM, Andrew Eikum wrote:
> > if(!alcIsExtensionPresent(NULL, "ALC_SOFT_loopback") ||
> > !(palcLoopbackOpenDeviceSOFT = alcGetProcAddress(NULL, \
> >                 "alcLoopbackOpenDeviceSOFT")) ||
> > -                !(palcRenderSamplesSOFT = alcGetProcAddress(NULL, \
> > "alcRenderSamplesSOFT"))){ +                !(palcRenderSamplesSOFT = \
> > alcGetProcAddress(NULL, "alcRenderSamplesSOFT")) || +                \
> > !(palcSetThreadContext = alcGetProcAddress(NULL, "alcSetThreadContext"))){ \
> > ERR("XAudio2 requires the ALC_SOFT_loopback extension (OpenAL-Soft >= 1.14)\n"); \
> > return FALSE; }
> 
> alcSetThreadContext isn't part of the ALC_SOFT_loopback extension,
> you should check for ALC_EXT_thread_local_context instead.
> 

Ok, I'll fix that. That was just me being lazy and assuming that if we
had loopback, we must have thread local context.

> > +static void context_lock(ALCcontext *ctx)
> > +{
> > +    EnterCriticalSection(&al_lock);
> > +    alcMakeContextCurrent(ctx);
> > +}
> > +
> > +static void context_unlock(void)
> > +{
> > +    LeaveCriticalSection(&al_lock);
> > +}
> 
> Since you're relying on ALC_EXT_thread_local_context anyway, it
> would probably be better to use alcSetThreadContext in context_lock,
> which would allow you to get rid of the global lock for normal calls
> (another thread can't change the current thread context on you, and
> unlike OpenGL, the same context can be current on multiple threads
> at the same time).

I hadn't thought of it that way, good idea. I'll change that too,
should make the patch much smaller.

Thanks for the review,
Andrew


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic