SDL曲面随机锁定

时间:2015-07-06 01:10:45

标签: c++ sdl sdl-2

我是SDL的新手,并开始学习其中的一些,并遇到了一个有趣的问题。程序的窗口会闪烁,然后永远消失。此外,SDL_BlitSurface偶尔也会出现exec错误。 SDL_GetError()表明它是表面锁定。但是,在检查屏幕表面的锁定时,使用->locked,屏幕表面将始终具有随机数量的锁定,范围从正数到负数。

经理班:

//apply image
if(SDL_BlitSurface(SDLProcess::getInstance().getImage(0), NULL, SDLProcess::getInstance().getScreenSurface(), NULL) < 0)
{

    ErrorManagement::callSDLError();
}

Screen Surface类:

ScreenSurface::ScreenSurface(SDL_Window* window)
{
//std::cout << window << std::endl;
p_screensurface = SDL_GetWindowSurface(window);

assert(p_screensurface != NULL);

//std::cout << p_screensurface << std::endl;
}

ScreenSurface::~ScreenSurface()
{
    printf("screen surface destroyed");
}

SDL_Surface* ScreenSurface::getScreenSurface()
{
//std::cout << p_screensurface << std::endl;
return p_screensurface;
}

控制台中的错误消息(最上面的数字是锁的数量,下面是错误消息):

37792424
SDL Error: Surfaces must not be locked during blit

和另一个例子:

42068296
SDL Error: Surfaces must not be locked during blit

1 个答案:

答案 0 :(得分:0)

修正了它。是一个愚蠢的错误,SDL init之后开始调用。

相关问题