]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/root.cpp
Use std::unique_ptr for managing memory
[libs/gltk.git] / source / root.cpp
index 167b3f798c8963768b11c320cb9d82bf9dc5d916..8d32c467b26eb5924e1825d6d51ff37d01de65a7 100644 (file)
@@ -7,15 +7,22 @@
 #include "root.h"
 #include "systemkeyboardinput.h"
 
+using namespace std;
+
 namespace Msp {
 namespace GLtk {
 
-Root::Root(Resources &r, Graphics::Window &window):
-       Root(r, &window, new Input::Keyboard(window), new Input::Mouse(window), nullptr)
+Root::Root(Resources &r, Graphics::Window &window, unique_ptr<Input::Keyboard> k, unique_ptr<Input::Mouse> m):
+       Root(r, &window, k.get(), m.get(), nullptr)
 {
-       own_input = true;
+       own_input[0] = move(k);
+       own_input[1] = move(m);
 }
 
+Root::Root(Resources &r, Graphics::Window &window):
+       Root(r, window, make_unique<Input::Keyboard>(window), make_unique<Input::Mouse>(window))
+{ }
+
 Root::Root(Resources &r, Graphics::Window *window, Input::Keyboard *k, Input::Mouse *m, Input::Touchscreen *t):
        resources(r),
        keyboard(k),
@@ -47,7 +54,7 @@ Root::Root(Resources &r, Graphics::Window *window, Input::Keyboard *k, Input::Mo
        }
 
        if(keyboard && !input_method)
-               input_method = new SystemKeyboardInput(*this, *keyboard);
+               input_method = make_unique<SystemKeyboardInput>(*this, *keyboard);
 
        if(touchscreen)
        {
@@ -57,16 +64,6 @@ Root::Root(Resources &r, Graphics::Window *window, Input::Keyboard *k, Input::Mo
        }
 }
 
-Root::~Root()
-{
-       delete input_method;
-       if(own_input)
-       {
-               delete keyboard;
-               delete mouse;
-       }
-}
-
 void Root::tick()
 {
        Time::TimeStamp t = Time::now();