SDL2无法解锁表面

时间:2014-03-18 11:30:30

标签: c++ sdl-2

我最近一直在写一些SDL2,今天我重写了我的代码基础,使其更结构化,更易于使用。

我遇到的问题是当试图blit sprite表面时,它给了我SDL错误Surfaces must not be locked during blit这似乎是合理的所以我在SDL_UnlockSurface之前将SDL_BlitSurface添加到我的blit函数的开头SDL_UnlockSurface 1}}但仍然返回相同的错误。 因为我在文档中看到bool Sprite::blit(SDL_Surface* targetSurface){ SDL_UnlockSurface(this->surface); int success = SDL_BlitSurface( this->surface, NULL, targetSurface, NULL ); if ( success != 0){ printf( "Unable to blit surface! SDL Error: %s\n"m SDL_GetError() ); return false; } return true; } 是一个空洞,我不知道它是否成功,但由于它不是多线程的,所以没有任何东西可以强制锁定它而我是blitting(并且它只是绘制到无论如何,在应用程序开始时的表面。)

这是blit功能

{{1}}

提前致谢!

1 个答案:

答案 0 :(得分:2)

计算锁定。如果您锁定表面两次,则必须将其解锁两次。最好避免这种方案 - 与锁定表面相同的功能应该在完成工作后将其解锁。

您可以查看surface->locked变量,这是锁定计数,但它并未包含在文档中,因此您无法依赖此名称 - 可以在将来的版本中进行更改。 / p>