나는 멋진 GUI를 표시하는 GTK +를 사용하는 응용 프로그램을 가지고,하지만 난 내 작은 RGB 프레임 버퍼를 표시 SDL을 사용하고 GTK + 내가 GTK +에 SDL을 얻기 위해 다음 코드를 사용했다임베딩 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) {
/* ... */
}
}
}
인쇄 문이 두 번 실행 된 다음 아무 것도 표시되지 않습니다. SDL이 화면 (디스플레이)을 업데이트하는 데 사용하는 스레드를 종료하자마자 SDLEvent의 루프가 다시 매우 빠르게 실행되기 시작합니다.
SDL을 GTK +에 통합하기 전에이 코드를 사용했기 때문에 GTK +가 SDL을 몇 가지 방법으로 차단하고 있다고 생각합니까?
아무에게도 제안 사항이 있으십니까?
대단히 감사합니다!
감사합니다. 멋진 솔루션처럼 보입니다! 아직은 잘 작동하지 않지만 필자는 그걸로 바이올린을 할 것입니다. – Jary
내가 준 링크에 "The SDL_WINDOWID hack"을 사용하고 있습니다. 방금 보았습니다. "이 솔루션에 대한 일반적인 SDL 이벤트를받지 못했습니다." 나는 불행하다고 생각한다 : ( – Jary
@Jary : 흠 그 나쁜 .Gtk 이벤트 루프에서 키보드 및 마우스 이벤트를 사용할 수 없습니까? –