When to call SDL_CondSignal()

I’m redoing the producer/consumer example in SDL.

Here are my produce() and consume() functions:

void produce()
{
//Lock
SDL_mutexP( bufferLock );

//If the buffer is full
if( buffer != NULL )
{
    //Wait for buffer to be cleared
    SDL_CondWait( canProduce, bufferLock );
}

//Fill buffer
buffer = images[ rand() % 5 ];

//Signal consumer
SDL_CondSignal( canConsume );

//Unlock
SDL_mutexV( bufferLock );

}

void consume()
{
//Lock
SDL_mutexP( bufferLock );

//If the buffer is empty
if( buffer == NULL )
{
    //Wait for buffer to be filled
    SDL_CondWait( canConsume, bufferLock );
}

//Empty buffer
buffer = NULL;

//Signal producer
SDL_CondSignal( canProduce );

//Unlock
SDL_mutexV( bufferLock );

}

I just want to make sure I’m supposed to call SDL_CondSignal() to signal the
other thread before or after calling SDL_mutexV() to unlock the mutex.

So am I doing this right?