]> git.tdb.fi Git - libs/gui.git/blobdiff - source/input/control.cpp
Zero-initialize JsDevice name buffer to avoid valgrind warning
[libs/gui.git] / source / input / control.cpp
index ffa02932f7db9c3b3159c45ab589d2c2f434ae1e..50601013acacc985ab256c018693a7f4dc6317ae 100644 (file)
@@ -1,15 +1,10 @@
-/* $Id$
-
-This file is part of libmspgbase
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
-#include <msp/core/except.h>
+#include <sigc++/bind_return.h>
 #include <msp/strings/lexicalcast.h>
 #include "control.h"
 #include "device.h"
 
+using namespace std;
+
 namespace Msp {
 namespace Input {
 
@@ -36,7 +31,7 @@ std::string ControlSource::str() const
        else if(type==NONE)
                return "None";
 
-       return lexical_cast(index);
+       return lexical_cast<string>(index);
 }
 
 
@@ -56,18 +51,21 @@ Control::Control(Device &d, ControlSrcType t, unsigned i):
        connect_signals();
 }
 
+Control::~Control()
+{ }
+
 void Control::capture(Device &d)
 {
        notify_callbacks();
-       capture_dev=&d;
-       capture_dev->signal_button_press.connect(sigc::mem_fun(this, &Control::button_press));
-       capture_dev->signal_axis_motion.connect(sigc::mem_fun(this, &Control::axis_motion));
+       capture_dev = &d;
+       capture_dev->signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Control::button_press), false));
+       capture_dev->signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Control::axis_motion), false));
 }
 
 void Control::cancel_capture()
 {
        notify_callbacks();
-       capture_dev=0;
+       capture_dev = 0;
        connect_signals();
 }
 
@@ -79,7 +77,7 @@ void Control::set_source(Device &d, ControlSrcType t, unsigned i)
 void Control::set_source(const ControlSource &s)
 {
        notify_callbacks();
-       src=s;
+       src = s;
        connect_signals();
 }
 
@@ -90,15 +88,13 @@ void Control::connect_signals()
        case NONE:
                break;
        case BUTTON:
-               src.dev->signal_button_press.connect(sigc::mem_fun(this, &Control::button_press));
-               src.dev->signal_button_release.connect(sigc::mem_fun(this, &Control::button_release));
+               src.dev->signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Control::button_press), false));
+               src.dev->signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Control::button_release), false));
                break;
        case AXIS_POS:
        case AXIS_NEG:
-               src.dev->signal_axis_motion.connect(sigc::mem_fun(this, &Control::axis_motion));
+               src.dev->signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Control::axis_motion), false));
                break;
-       default:
-               throw Exception("Invalid source in Control");
        }
 }
 
@@ -106,12 +102,12 @@ void Control::button_press(unsigned i)
 {
        if(capture_dev)
        {
-               src.dev=capture_dev;
-               src.type=BUTTON;
-               src.index=i;
+               src.dev = capture_dev;
+               src.type = BUTTON;
+               src.index = i;
 
                notify_callbacks();
-               capture_dev=0;
+               capture_dev = 0;
                connect_signals();
                signal_capture_complete.emit();
        }
@@ -129,20 +125,20 @@ void Control::axis_motion(unsigned i, float v, float r)
 {
        if(capture_dev)
        {
-               ControlSrcType type=NONE;
+               ControlSrcType type = NONE;
                if(v<-0.9)
-                       type=AXIS_NEG;
+                       type = AXIS_NEG;
                else if(v>0.9)
-                       type=AXIS_POS;
+                       type = AXIS_POS;
 
                if(type!=NONE)
                {
-                       src.dev=capture_dev;
-                       src.type=type;
-                       src.index=i;
+                       src.dev = capture_dev;
+                       src.type = type;
+                       src.index = i;
 
                        notify_callbacks();
-                       capture_dev=0;
+                       capture_dev = 0;
                        connect_signals();
                        signal_capture_complete.emit();
                }