Fixed a memory leak in love.graphics.newText.

This commit is contained in:
Alex Szpakowski
2015-03-16 03:13:10 -03:00
parent d00773b974
commit 14cbc91e7f
7 changed files with 14 additions and 20 deletions
+8 -8
View File
@@ -352,7 +352,7 @@ Message *Event::convert(const SDL_Event &e) const
Proxy proxy;
proxy.object = new love::filesystem::DroppedFile(e.drop.file);
proxy.type = FILESYSTEM_DROPPED_FILE_ID;
vargs.push_back(new Variant(FILESYSTEM_DROPPED_FILE_ID, &proxy));
vargs.push_back(new Variant(proxy.type, &proxy));
msg = new Message("filedropped", vargs);
proxy.object->release();
}
@@ -406,7 +406,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
if (!proxy.object)
break;
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
vargs.push_back(new Variant((double)(e.jbutton.button+1)));
msg = new Message((e.type == SDL_JOYBUTTONDOWN) ?
"joystickpressed" : "joystickreleased",
@@ -419,7 +419,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
if (!proxy.object)
break;
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
vargs.push_back(new Variant((double)(e.jaxis.axis+1)));
float value = joystick::Joystick::clampval(e.jaxis.value / 32768.0f);
vargs.push_back(new Variant((double) value));
@@ -435,7 +435,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
if (!proxy.object)
break;
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
vargs.push_back(new Variant((double)(e.jhat.hat+1)));
vargs.push_back(new Variant(txt, strlen(txt)));
msg = new Message("joystickhat", vargs);
@@ -453,7 +453,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
if (!proxy.object)
break;
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
vargs.push_back(new Variant(txt, strlen(txt)));
msg = new Message(e.type == SDL_CONTROLLERBUTTONDOWN ?
"gamepadpressed" : "gamepadreleased", vargs);
@@ -469,7 +469,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
if (!proxy.object)
break;
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
vargs.push_back(new Variant(txt, strlen(txt)));
float value = joystick::Joystick::clampval(e.caxis.value / 32768.0f);
@@ -483,7 +483,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
proxy.type = JOYSTICK_JOYSTICK_ID;
if (proxy.object)
{
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
msg = new Message("joystickadded", vargs);
}
break;
@@ -494,7 +494,7 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
if (proxy.object)
{
joymodule->removeJoystick((joystick::Joystick *) proxy.object);
vargs.push_back(new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy));
vargs.push_back(new Variant(proxy.type, (void *) &proxy));
msg = new Message("joystickremoved", vargs);
}
break;
@@ -632,6 +632,7 @@ int w_newText(lua_State *L)
}
luax_pushtype(L, GRAPHICS_TEXT_ID, t);
t->release();
return 1;
}
+3 -3
View File
@@ -146,7 +146,7 @@ void Mouse::getPosition(double &x, double &y) const
void Mouse::setPosition(double x, double y)
{
love::window::Window *window = love::window::sdl::Window::getSingleton();
window::Window *window = Module::getInstance<window::Window>(Module::M_WINDOW);
SDL_Window *handle = nullptr;
if (window)
@@ -196,14 +196,14 @@ bool Mouse::isVisible() const
void Mouse::setGrabbed(bool grab)
{
love::window::Window *window = love::window::sdl::Window::getSingleton();
window::Window *window = Module::getInstance<window::Window>(Module::M_WINDOW);
if (window)
window->setMouseGrab(grab);
}
bool Mouse::isGrabbed() const
{
love::window::Window *window = love::window::sdl::Window::getSingleton();
window::Window *window = Module::getInstance<window::Window>(Module::M_WINDOW);
if (window)
return window->isMouseGrabbed();
else
+1 -2
View File
@@ -172,8 +172,7 @@ public:
virtual int showMessageBox(const MessageBoxData &data) = 0;
//virtual static Window *createSingleton() = 0;
//virtual static Window *getSingleton() = 0;
// No virtual statics, of course, but you are supposed to implement these statics.
// No virtual statics, of course, but you are supposed to implement this static.
static bool getConstant(const char *in, Setting &out);
static bool getConstant(Setting in, const char *&out);
-5
View File
@@ -970,11 +970,6 @@ love::window::Window *Window::createSingleton()
return singleton;
}
love::window::Window *Window::getSingleton()
{
return singleton;
}
const char *Window::getName() const
{
return "love.window.sdl";
-1
View File
@@ -101,7 +101,6 @@ public:
int showMessageBox(const MessageBoxData &data);
static love::window::Window *createSingleton();
static love::window::Window *getSingleton();
const char *getName() const;