ultimatepp/rainbow/SDL2GL/SDL.cpp
cxl 55ce986241 .rainbow
git-svn-id: svn://ultimatepp.org/upp/trunk@11788 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2018-02-18 16:59:59 +00:00

81 lines
No EOL
1.6 KiB
C++

#include "Local.h"
#ifdef GUI_SDL20GL
NAMESPACE_UPP
#define LLOG(x) //LOG(x)
dword SDLsettings;
void USDLSetup(dword flags)
{
SDLsettings = flags;
}
Size screen_size;
SDLWindow screen;
SDL_TimerID waketimer_id = 0;
Uint32 WakeCb(Uint32 interval, void *param)
{
//wake up message que, FIXME maybe it can be done better?
SDL_Event event;
event.type=SDL_USEREVENT;
SDL_PushEvent(&event);
return 0;
}
void WakeUpGuiThread()
{
waketimer_id = SDL_AddTimer(20, WakeCb, NULL);
}
void FBInit()
{
GuiLock __;
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
Ctrl::InitFB();
#if 0
if(SDL_Init(SDL_INIT_VIDEO/* | SDL_INIT_TIMER*/) < 0) //timer not needed, we post to queue directly
{
Cout() << Format("Couldn't initialize SDL: %s\n", SDL_GetError());
return;
}
// TODO
// SDL_EnableUNICODE(1); //for unicode keycode availability
// SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL/2);
// SDL_ShowCursor(0);
const SDL_VideoInfo* vi = SDL_GetVideoInfo();
//ASSERT(vi->hw_available);
width = vi->current_w;
height = vi->current_h;
bpp = vi->vfmt->BitsPerPixel;
ASSERT(bpp == 32);
//FIXME adjustable
videoflags = SDL_HWSURFACE | SDL_HWACCEL | SDL_DOUBLEBUF | SDL_RESIZABLE;// | SDL_NOFRAME | SDL_FULLSCREEN;
#endif
screen_size = Size(1500, 900);
screen.Create(Rect(Point(20, 20), screen_size), "First test");
Ctrl::SetDesktopSize(screen_size);
}
void FBDeInit()
{
SDL_RemoveTimer(waketimer_id);
Ctrl::ExitFB();
screen.Destroy();
SDL_Quit();
}
END_UPP_NAMESPACE
#endif