mirror of
https://github.com/SFML/SFML.git
synced 2025-01-19 15:55:13 +08:00
Fixed sf::Window::Create on OS X (Closes #86)
This commit is contained in:
parent
95a0126371
commit
ecaafa9a18
@ -41,3 +41,11 @@ void RetainPool(void);
|
||||
////////////////////////////////////////////////////////////
|
||||
void ReleasePool(void);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// \brief Drain the pool.
|
||||
///
|
||||
/// ReleasePool must be called at least once before DrainPool.
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
void DrainPool();
|
||||
|
||||
|
@ -84,6 +84,12 @@ public :
|
||||
////////////////////////////////////////////////////////////
|
||||
void Release();
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
/// \brief Drain the pool
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
void Drain();
|
||||
|
||||
private:
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
@ -149,8 +155,7 @@ void PoolWrapper::Release()
|
||||
|
||||
// Drain pool if required.
|
||||
if (count == 0) {
|
||||
[pool drain];
|
||||
pool = 0;
|
||||
Drain();
|
||||
}
|
||||
|
||||
#ifdef SFML_DEBUG
|
||||
@ -160,6 +165,16 @@ void PoolWrapper::Release()
|
||||
#endif
|
||||
}
|
||||
|
||||
void PoolWrapper::Drain()
|
||||
{
|
||||
[pool drain];
|
||||
pool = 0;
|
||||
|
||||
if (count != 0) {
|
||||
pool = [[NSAutoreleasePool alloc] init];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace priv
|
||||
|
||||
@ -207,3 +222,18 @@ void ReleasePool(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
void DrainPool()
|
||||
{
|
||||
if (localPool != NULL) {
|
||||
localPool->Drain();
|
||||
}
|
||||
#ifdef SFML_DEBUG
|
||||
else {
|
||||
sf::Err() << "ReleasePool must be called at least one before DrainPool"
|
||||
<< std::endl;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,9 @@ SFContext::SFContext(SFContext* shared)
|
||||
RetainPool();
|
||||
|
||||
// Create the context
|
||||
CreateContext(shared, VideoMode::GetDesktopMode().BitsPerPixel, ContextSettings(0, 0, 0));
|
||||
CreateContext(shared,
|
||||
VideoMode::GetDesktopMode().BitsPerPixel,
|
||||
ContextSettings(0, 0, 0));
|
||||
}
|
||||
|
||||
|
||||
|
@ -118,6 +118,10 @@ WindowImplCocoa::~WindowImplCocoa()
|
||||
[myDelegate release];
|
||||
|
||||
ReleasePool();
|
||||
|
||||
DrainPool(); // Make sure everything was freed
|
||||
// This solve some issue when sf::Window::Create is called for the
|
||||
// second time (nothing was render until the function was called again)
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user