У меня есть поток, который делает следующее:
- Инициализирует SDL
- Сохраняет указатель на SDL_Surface
- Заходит в цикл и ждет любых событий мыши и обрабатывает их
В другом потоке есть функция, которая делает следующее:
- Получает указатель на SDL_Surface
- Имеет ли SDL_LockSurface
- Манипулирует пикселями
- Использует ли SDL_UnlockSurface
- Вызывает SDL_Flip на поверхности
Я читал в документации, что обычно вызовы функций SDL lib должны быть из одного потока. Включает ли это прямое изменение SDL_Surface? Как насчет использования функций блокировки и разблокировки поверхности? Я думаю, что эта пара блокировки и разблокировки предназначена для использования в многопоточных ситуациях.
Как насчет функции SDL_Flip? Если это нужно вызвать из потока SDL, который инициализировал SDL, я мог бы просто сигнализировать о пользовательском событии и обрабатывать его в другом потоке.