Reduced the number of explicit retain/release method calls on love objects. Less chance of bugs!

This commit is contained in:
Alex Szpakowski
2014-08-07 14:53:17 -03:00
parent a0fff798aa
commit d59c76a55f
38 changed files with 194 additions and 247 deletions
+7 -13
View File
@@ -77,11 +77,11 @@ Mouse::Mouse()
Mouse::~Mouse()
{
if (curCursor)
if (curCursor.get())
setCursor();
for (auto it = systemCursors.begin(); it != systemCursors.end(); ++it)
it->second->release();
for (auto &c : systemCursors)
c.second->release();
}
love::mouse::Cursor *Mouse::newCursor(love::image::ImageData *data, int hotx, int hoty)
@@ -91,7 +91,7 @@ love::mouse::Cursor *Mouse::newCursor(love::image::ImageData *data, int hotx, in
love::mouse::Cursor *Mouse::getSystemCursor(Cursor::SystemCursor cursortype)
{
Cursor *cursor = NULL;
Cursor *cursor = nullptr;
auto it = systemCursors.find(cursortype);
if (it != systemCursors.end())
@@ -107,25 +107,19 @@ love::mouse::Cursor *Mouse::getSystemCursor(Cursor::SystemCursor cursortype)
void Mouse::setCursor(love::mouse::Cursor *cursor)
{
Object::AutoRelease cursorrelease(curCursor);
curCursor = cursor;
curCursor->retain();
curCursor.set(cursor);
SDL_SetCursor((SDL_Cursor *) cursor->getHandle());
}
void Mouse::setCursor()
{
Object::AutoRelease cursorrelease(curCursor);
curCursor = NULL;
curCursor.set(nullptr);
SDL_SetCursor(SDL_GetDefaultCursor());
}
love::mouse::Cursor *Mouse::getCursor() const
{
return curCursor;
return curCursor.get();
}
int Mouse::getX() const
+1 -1
View File
@@ -67,7 +67,7 @@ public:
private:
love::mouse::Cursor *curCursor;
Object::StrongRef<love::mouse::Cursor> curCursor;
std::map<Cursor::SystemCursor, Cursor *> systemCursors;