SDL 表面随机锁定
SDL Surfaces Randomly Lock
我是SDL的新手,刚开始学习一些,遇到了一个有趣的问题。该程序的 window 会闪烁,然后永远消失。此外,SDL_BlitSurface
偶尔会出现执行错误。 SDL_GetError()
显示它是表面锁定。然而,在检查屏幕表面的锁时,通过使用->locked
,屏幕表面总是有一个随机数的锁,从正数到负数。
经理class:
//apply image
if(SDL_BlitSurface(SDLProcess::getInstance().getImage(0), NULL, SDLProcess::getInstance().getScreenSurface(), NULL) < 0)
{
ErrorManagement::callSDLError();
}
屏幕表面class:
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
已修复。之后开始调用 SDL init 是一个愚蠢的错误。
我是SDL的新手,刚开始学习一些,遇到了一个有趣的问题。该程序的 window 会闪烁,然后永远消失。此外,SDL_BlitSurface
偶尔会出现执行错误。 SDL_GetError()
显示它是表面锁定。然而,在检查屏幕表面的锁时,通过使用->locked
,屏幕表面总是有一个随机数的锁,从正数到负数。
经理class:
//apply image
if(SDL_BlitSurface(SDLProcess::getInstance().getImage(0), NULL, SDLProcess::getInstance().getScreenSurface(), NULL) < 0)
{
ErrorManagement::callSDLError();
}
屏幕表面class:
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
已修复。之后开始调用 SDL init 是一个愚蠢的错误。