benoitrigolleau@132: #include benoitrigolleau@132: #include benoitrigolleau@132: #include benoitrigolleau@132: #include "SDLWidget.h" benoitrigolleau@167: ivand_qmul@150: ivand_qmul@150: benoitrigolleau@132: benoitrigolleau@132: SDLWidget::SDLWidget() benoitrigolleau@145: :windowInitialized(false), screen(0),m_width(0), m_height(0) ivand_qmul@150: { ivand_qmul@150: setAttribute(Qt::WA_PaintOnScreen); benoitrigolleau@132: setAttribute(Qt::WA_NoSystemBackground); benoitrigolleau@145: connect(this,SIGNAL(initSizeChanged()),this,SLOT(updateMinSize())); benoitrigolleau@139: benoitrigolleau@132: } benoitrigolleau@132: benoitrigolleau@132: SDLWidget::~SDLWidget() benoitrigolleau@132: { benoitrigolleau@132: SDL_Quit(); benoitrigolleau@132: } benoitrigolleau@132: benoitrigolleau@139: benoitrigolleau@145: void SDLWidget::setInitSize(int w, int h){ benoitrigolleau@167: m_width = w; benoitrigolleau@167: m_height =h; benoitrigolleau@167: emit(initSizeChanged()); benoitrigolleau@145: } benoitrigolleau@145: benoitrigolleau@145: void SDLWidget::updateMinSize() benoitrigolleau@145: { benoitrigolleau@167: setMinimumSize( m_width,m_height); benoitrigolleau@167: setMaximumSize( m_width,m_height); benoitrigolleau@145: } benoitrigolleau@145: benoitrigolleau@145: benoitrigolleau@139: benoitrigolleau@132: void SDLWidget::showEvent(QShowEvent *e) ivand_qmul@150: { benoitrigolleau@132: (void)e; ivand_qmul@138: benoitrigolleau@167: benoitrigolleau@167: //QWidget::showEvent(e); benoitrigolleau@167: benoitrigolleau@132: if(!windowInitialized) benoitrigolleau@132: { benoitrigolleau@132: // it's here the link between SDL and QT ivand_qmul@150: char windowid[64]; benoitrigolleau@132: #ifdef Q_WS_WIN ivand_qmul@150: sprintf(windowid, "SDL_WINDOWID=0x%lx", reinterpret_cast(winId())); ivand_qmul@150: #elif defined Q_WS_X11 ivand_qmul@150: sprintf(windowid, "SDL_WINDOWID=0x%lx", winId()); ivand_qmul@150: #else ivand_qmul@150: qFatal("uncorrect window ID"); benoitrigolleau@132: #endif benoitrigolleau@132: SDL_putenv(windowid); benoitrigolleau@132: benoitrigolleau@132: //SDL_Init(SDL_INIT_VIDEO); benoitrigolleau@132: //screen = SDL_SetVideoMode(width(), height(), 32, SDL_SWSURFACE); benoitrigolleau@132: windowInitialized = true; benoitrigolleau@132: } benoitrigolleau@139: } benoitrigolleau@139: