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