У меня есть приложение, которое использует GTK + для отображения приятного графического интерфейса, но я использую SDL для отображения небольшого буфера кадров RGB внутри GTK +
Я использовал следующий код для получения SDL в GTK +:
char SDL_windowhack[32];
sprintf(SDL_windowhack, "SDL_WINDOWID=%ld", GDK_WINDOW_XWINDOW(deviceWindow->window));
putenv(SDL_windowhack);
К сожалению, я также использую SDL для событий клавиатуры и мыши.Основной поток, который использует SDL для обновления изображения, порождает следующий поток:
void *SDLEvent(void *arg)
{
SDL_Event event;
while (1) {
fprintf(stderr, "Test\n");
SDL_WaitEvent(&event);
switch (event.type) {
/* ... */
}
}
}
Я вижу, что оператор print выполняется дважды, а затем ни один.Как только я завершаю поток, который SDL использует для обновления экрана (отображения), цикл в SDLEvent снова начинает выполняться очень быстро.
Этот код работал нормально, прежде чем я интегрировал SDL в GTK +, поэтому я думаю,Возможно, GTK + блокирует SDL?
У кого-нибудь есть предложения, пожалуйста?
Большое спасибо!