]> git.mxchange.org Git - flightgear.git/blobdiff - src/Input/FGLinuxEventInput.cxx
Remove dead file.
[flightgear.git] / src / Input / FGLinuxEventInput.cxx
index e41f6e195ebc76f01c9e89cc80f4ea5ff56b6872..43256aadd485a167c2042eb2c215d9e94f517bf6 100644 (file)
 #include <cstring>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <poll.h>
-#include <linux/input.h>
-#include <dbus/dbus.h>
-#include <fcntl.h>
 #include "FGLinuxEventInput.hxx"
 
+#include <libudev.h>
 #include <poll.h>
 #include <linux/input.h>
-#include <dbus/dbus.h>
 #include <fcntl.h>
 
 #include <string.h>
@@ -46,7 +42,7 @@ struct TypeCode {
     return (unsigned long)type << 16 | (unsigned long)code;
   }
 
-  bool operator < ( const TypeCode other) const {
+  bool operator < ( const TypeCode other) const {
     return hashCode() < other.hashCode();
   }
 };
@@ -440,97 +436,47 @@ const char * FGLinuxInputDevice::TranslateEventName( FGEventData & eventData )
   return EVENT_NAME_BY_TYPE[typeCode];
 }
 
-void FGLinuxInputDevice::SetDevname( std::string name )
+void FGLinuxInputDevice::SetDevname( const std::string & name )
 {
   this->devname = name; 
 }
 
-FGLinuxEventInput::FGLinuxEventInput() : 
-  halcontext(NULL)
+FGLinuxEventInput::FGLinuxEventInput()
 {
 }
 
 FGLinuxEventInput::~FGLinuxEventInput()
 {
-  if( halcontext != NULL ) {
-    libhal_ctx_shutdown( halcontext, NULL);
-    libhal_ctx_free( halcontext );
-    halcontext = NULL;
-  }
-}
-
-#if 0
-//TODO: enable hotplug support
-static void DeviceAddedCallback (LibHalContext *ctx, const char *udi)
-{
-  FGLinuxEventInput * linuxEventInput = (FGLinuxEventInput*)libhal_ctx_get_user_data (ctx);
-  linuxEventInput->AddHalDevice( udi );
 }
 
-static void DeviceRemovedCallback (LibHalContext *ctx, const char *udi)
-{
-}
-#endif
-
 void FGLinuxEventInput::postinit()
 {
   FGEventInput::postinit();
 
-  DBusConnection * connection;
-  DBusError dbus_error;
-
-  dbus_error_init(&dbus_error);
-  connection = dbus_bus_get (DBUS_BUS_SYSTEM, &dbus_error);
-  if (dbus_error_is_set(&dbus_error)) {
-    SG_LOG( SG_INPUT, SG_ALERT, "Can't connect to system bus " << dbus_error.message);
-    dbus_error_free (&dbus_error);
-    return;
-  }
-
-  halcontext = libhal_ctx_new();
-
-  libhal_ctx_set_dbus_connection (halcontext, connection );
-  dbus_error_init (&dbus_error);
-
-  if( libhal_ctx_init( halcontext,  &dbus_error )) {
+  struct udev * udev = udev_new();
 
-      int num_devices = 0;
-      char ** devices = libhal_find_device_by_capability(halcontext, "input", &num_devices, NULL);
+  struct udev_enumerate *enumerate = udev_enumerate_new(udev);
+  udev_enumerate_add_match_subsystem(enumerate, "input");
+  udev_enumerate_scan_devices(enumerate);
+  struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate);
+  struct udev_list_entry *dev_list_entry;
 
-      for ( int i = 0; i < num_devices; i++)
-        AddHalDevice( devices[i] );
+  udev_list_entry_foreach(dev_list_entry, devices) {
+    const char * path = udev_list_entry_get_name(dev_list_entry);
+    struct udev_device *dev = udev_device_new_from_syspath(udev, path);
+    const char * node = udev_device_get_devnode(dev);
+    dev = udev_device_get_parent( dev );
+    const char * name = udev_device_get_sysattr_value(dev,"name");
 
-      libhal_free_string_array (devices);
-
-//TODO: enable hotplug support
-//      libhal_ctx_set_user_data( halcontext, this );
-//      libhal_ctx_set_device_added( halcontext, DeviceAddedCallback );
-//      libhal_ctx_set_device_removed( halcontext, DeviceRemovedCallback );
-    } else {
-      if(dbus_error_is_set (&dbus_error) ) {
-        SG_LOG( SG_INPUT, SG_ALERT, "Can't connect to hald: " << dbus_error.message);
-        dbus_error_free (&dbus_error);
-      } else {
-        SG_LOG( SG_INPUT, SG_ALERT, "Can't connect to hald." );
-      }
+    SG_LOG(SG_INPUT,SG_DEBUG, "name=" << (name?name:"<null>") << ", node=" << (node?node:"<null>"));
+    if( name && node )
+      AddDevice( new FGLinuxInputDevice(name, node) );
 
-      libhal_ctx_free (halcontext);
-      halcontext = NULL;
-    }
-}
-
-void FGLinuxEventInput::AddHalDevice( const char * udi )
-{
-  char * device = libhal_device_get_property_string( halcontext, udi, "input.device", NULL);
-  char * product = libhal_device_get_property_string( halcontext, udi, "input.product", NULL);
-
-  if( product != NULL && device != NULL ) 
-    AddDevice( new FGLinuxInputDevice(product, device) );
-  else
-    SG_LOG( SG_INPUT, SG_ALERT, "Can't get device or product property of " << udi );
+    udev_device_unref(dev);
+  }
 
-  if( device != NULL ) libhal_free_string( device );
-  if( product != NULL ) libhal_free_string( product );
+  udev_unref(udev);
 
 }