小ネタ
SDLをqt or kdeのwidgetに組み込む方法。前者はgnomeでも可。
a) SDL_SetVideoModeを呼び出す前に環境変数SDL_WINDOWIDに
組込を行うwidgetのidを設定しておく。idはQFrame::winId()で取得
できる。デメリットはSDLで特定のevent入力等が一切拾えなくなる
ので、qtのkeyPressEventやkeyReleaseEventでeventを拾って
keycodeを変換した後SDL_PeepEventsなりに投げる必要がある。
QFrame* m_embedView = new QFrame( this );
char WindowID[64];
sprintf( WindowID, "%d",m_embedView->winId() );
setenv( "SDL_WINDOWID", WindowID, 1 );
SDL_SetVideoMode( l_width, l_height , l_bpp, l_flags );
b) SDL_SetVideoModeを呼び出してscreen surfaceを作成した後、
QXEmbedを使いSDLの窓をまるごと取り込む。デメリットはqtの
widgetとは別に一瞬SDLの窓が開く。ただしSDLのeventも丸ごと
取り込む事が出来る。
SDL_SetVideoMode( l_width, l_height , l_bpp, l_flags );
SDL_SysWMinfo l_info
SDL_VERSION( &l_info.version );
SDL_GetWMInfo( &l_info );
QXEmbed* m_embedView = new QXEmbed ( this );
m_embedView->initialize();
m_embedView->setProtocol( QXEmbed::XPLAIN );
m_embedView->embed( l_info.info.x11.wmwindow );