diff options
author | huceke <ebsi4711@gmail.com> | 2012-08-20 13:40:50 -0700 |
---|---|---|
committer | huceke <ebsi4711@gmail.com> | 2012-08-20 13:40:50 -0700 |
commit | 59092d5ad1a4604f26176d58b1c75cff0965e1ad (patch) | |
tree | dab1f35a3ba6b9182e9ca8e5d1a062780573c570 | |
parent | cca337febcdd5c129f7e31bb48db4aff68883ea4 (diff) | |
parent | 1cd3dab30ff9868e27d48c8bfe72252cbc39d88d (diff) |
Merge pull request #1309 from huceke/peripherals
[peripherals/udev] fixed do not close fd we got from udev and a race condition
-rw-r--r-- | xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.cpp | 15 | ||||
-rw-r--r-- | xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.h | 1 |
2 files changed, 7 insertions, 9 deletions
diff --git a/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.cpp b/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.cpp index 3dff72d6be..7824c369c9 100644 --- a/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.cpp +++ b/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.cpp @@ -85,7 +85,6 @@ CPeripheralBusUSB::CPeripheralBusUSB(CPeripherals *manager) : m_udev = NULL; m_udevMon = NULL; - m_udevFd = -1; if (!(m_udev = udev_new())) { @@ -96,9 +95,8 @@ CPeripheralBusUSB::CPeripheralBusUSB(CPeripherals *manager) : /* set up a devices monitor that listen for any device change */ m_udevMon = udev_monitor_new_from_netlink(m_udev, "udev"); udev_monitor_enable_receiving(m_udevMon); - m_udevFd = udev_monitor_get_fd(m_udevMon); - CLog::Log(LOGDEBUG, "%s - initialised udev monitor: %d", __FUNCTION__, m_udevFd); + CLog::Log(LOGDEBUG, "%s - initialised udev monitor", __FUNCTION__); } CPeripheralBusUSB::~CPeripheralBusUSB(void) @@ -218,18 +216,19 @@ void CPeripheralBusUSB::Process(void) void CPeripheralBusUSB::Clear(void) { StopThread(false); - if (m_udevFd != -1) - close(m_udevFd); - - udev_unref(m_udev); CPeripheralBus::Clear(); } bool CPeripheralBusUSB::WaitForUpdate() { - if (!m_udevFd) + int m_udevFd = udev_monitor_get_fd(m_udevMon); + + if (m_udevFd < 0) + { + CLog::Log(LOGERROR, "%s - get udev monitor", __FUNCTION__); return false; + } /* poll for udev changes */ struct pollfd pollFd; diff --git a/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.h b/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.h index 06c60683e3..e9876cd25d 100644 --- a/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.h +++ b/xbmc/peripherals/bus/linux/PeripheralBusUSBLibUdev.h @@ -51,6 +51,5 @@ namespace PERIPHERALS struct udev * m_udev; struct udev_monitor *m_udevMon; - int m_udevFd; }; } |