SDL2无法解锁表面
SDL2 unable to unlock surface
我最近一直在写一些SDL2,今天我重写了我的代码基础,使它更结构化,更容易使用。
我遇到的问题是当试图blit精灵表面时,它给了我SDL错误Surfaces must not be locked during blit
,这似乎是合理的,所以我在SDL_BlitSurface
之前将SDL_UnlockSurface
添加到blit函数的开始,但仍然返回相同的错误。因为我在文档中看到SDL_UnlockSurface
是一个空白,我不知道它是否成功,但因为它不是多线程的,没有什么可以强制锁定它,而我是比特(它只是在应用程序开始时绘制到表面)。
这是blit函数
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: %sn"m SDL_GetError() );
return false;
}
return true;
}
提前感谢!
锁被统计。如果你锁定表面两次,你必须解锁两次。最好避免这种方案-锁定表面的同一个函数应该在其工作完成后解锁它。
您可以查看surface->locked
变量,它是锁的计数,但它没有包含在文档中,因此您不能依赖此名称-它可能在未来的版本中更改。
相关文章:
- 我应该在锁定TBitmap画布后解锁它吗
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- c++ 为什么我不应该从不同的线程解锁互斥锁
- 在新作用域中使用unique_lock是否等效于在使用共享资源的工作结束时解锁调用
- "data race"(不是真的)在通知条件变量并解锁关联的互斥锁后
- 程序输入密码并解锁窗口7,8,10
- 在通知之前完成手动解锁
- STD :: Mutex如何在不同的线程中解锁
- 如何使用单个解锁方法(可称为读取器或写入器)实现C++读写器锁?
- 如何在C 中自动汇总日志消息并自动解锁互斥X
- 如果我们已经手动解锁了unique_lock,那么破坏时会解锁吗?
- 正在解锁手动未定义/不良设计的锁定guard
- 从C 运行代码后解锁绑定(在R中)的问题
- 在功能返回之前,可以解锁Mutex会增加并发
- 当互斥锁解锁时,它会notify_all或notify_one
- 如何确保在C ++中解锁储物柜?哪种解决方案更好
- 我应该如何在一个功能中锁定wxMutex,并在另一个功能中将其解锁
- mutex::lock() 检查一次解锁状态是否已经被另一个线程锁定?
- 在Qt 5.4中可以对互斥对象进行两次解锁吗
- SDL2无法解锁表面