gpt4 book ai didi

c++ - SDL_SetVideoMode挂起进程

转载 作者:行者123 更新时间:2023-11-28 08:26:05 25 4
gpt4 key购买 nike

在我的程序初始化期间,我在 SDL_Init() 之后调用了 SDL_SetVideoMode(),它挂起了我的程序。执行该程序时,如果我在挂起期间按 Ctrl-C,它将照常继续并且一切正常。

显然,每次都必须中断 SDL_SetVideoMode() 并不理想!有人知道这可能是什么吗?

这是我正在使用的简单测试代码:

main.cpp

int main(int argc, char* argv[])
{
Presentation* p = new Presentation(); //Presentation is used to display JPEGs
p->Initialise();

while (p->hasSlides())
{
p->DisplayNextSlide();
sleep(5);
}
return 0;
}


Presentation.cpp

Presentation::Initialise()
{
SDL_Init(SDL_INIT_VIDEO);
m_pScreen = SDL_SetVideoMode(1280,720,16, SDL_DOUBLEBUF | SDL_FULLSCREEN);
if (!m_pScreen)
{
//error handling...
}

SDL_ShowCursor(SDL_DISABLE);
initialised = true;
}


SDL_Surface* m_pImage;

Presentation::DisplayNextSlide()
{
m_pImage = IMG_Load(filename);
if(!m_pImage)
{
//error handling...
}

SDL_BlitSurface(m_pImage,0,m_pScreen,0);
SDL_Flip(m_pScreen);
}

最佳答案

后来我发现了问题。我只是在显示后没有释放图像表面,这意味着 SDL_Quit 没有被正确调用!以下示例中的固定代码:

SDL_Surface* m_pImage;

Presentation::DisplayNextSlide()
{
m_pImage = IMG_Load(filename);
if(!m_pImage)
{
//error handling...
}

SDL_BlitSurface(m_pImage,0,m_pScreen,0);
SDL_Flip(m_pScreen);
SDL_FreeSurface(m_pImage);
m_pImage = NULL;
}

关于c++ - SDL_SetVideoMode挂起进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4013364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com