revert part of earlier MCP patch from rodrigo
[ardour.git] / libs / surfaces / powermate / powermate.cc
index 98dfcebae7d4cadbb93033a332097ad6e3302f41..0475603a51e2e5cef9a3a4dd5f1259f326a3cc38 100644 (file)
 #include <unistd.h>
 #include <fcntl.h>
 
-#include <i18n.h>
-#include <pbd/xml++.h>
-#include <pbd/error.h>
 #include <glibmm.h>
 
+#include "pbd/pthread_utils.h"
+#include "pbd/xml++.h"
+#include "pbd/error.h"
+
+#include "ardour/debug.h"
+
 #include "powermate.h"
+#include "i18n.h"
 
 using namespace ARDOUR;
 using namespace std;
@@ -72,17 +76,18 @@ int open_powermate (const char *dev, int mode)
 
 int find_powermate(int mode)
 {
-  char devname[256];
-  int i, r;
-
-  for(i=0; i<NUM_EVENT_DEVICES; i++){
-    sprintf(devname, "/dev/input/event%d", i);
-    r = open_powermate(devname, mode);
-    if(r >= 0)
-      return r;
-  }
-
-  return -1;
+       char devname[256];
+       int i, r;
+       
+       for (i = 0; i < NUM_EVENT_DEVICES; i++) {
+               sprintf (devname, "/dev/input/event%d", i);
+               r = open_powermate (devname, mode);
+               if (r >= 0) {
+                       return r;
+               }
+       }
+       
+       return -1;
 }
 
 PowermateControlProtocol::PowermateControlProtocol (Session& s)
@@ -101,7 +106,11 @@ PowermateControlProtocol::probe ()
        int port = find_powermate( O_RDONLY ); 
 
        if (port < 0) {
-               printf ("powermate: Opening of powermate failed - %s\n", strerror(errno));
+               if (errno == ENOENT) {
+                       DEBUG_TRACE (DEBUG::ControlProtocols, "Powermate device not found; perhaps you have no powermate connected");
+               } else {
+                       DEBUG_TRACE (DEBUG::ControlProtocols, string_compose ("powermate: Opening of powermate failed - %1\n", strerror(errno)));
+               }
                return false;
        }
 
@@ -122,7 +131,7 @@ PowermateControlProtocol::set_active (bool inActivate)
                                return -1;
                        }
                        
-                       if (pthread_create (&mThread, 0, SerialThreadEntry, this) == 0) {
+                       if (pthread_create_and_store ("Powermate", &mThread, SerialThreadEntry, this) == 0) {
                                _active = true;
                        } else {
                                return -1;
@@ -150,7 +159,7 @@ PowermateControlProtocol::get_state ()
 }
 
 int
-PowermateControlProtocol::set_state (const XMLNode& /*node*/)
+PowermateControlProtocol::set_state (const XMLNode& /*node*/, int /*version*/)
 {
        return 0;
 }
@@ -159,6 +168,7 @@ PowermateControlProtocol::set_state (const XMLNode& /*node*/)
 void*
 PowermateControlProtocol::SerialThreadEntry (void* arg)
 {
+       static_cast<PowermateControlProtocol*>(arg)->register_thread ("Powermate");
        return static_cast<PowermateControlProtocol*>(arg)->SerialThread ();
 }