summaryrefslogtreecommitdiff
path: root/monitor.h
diff options
context:
space:
mode:
authorLars Hanisch <dvb@flensrocker.de>2011-10-26 23:02:06 +0200
committerLars Hanisch <dvb@flensrocker.de>2011-10-26 23:02:06 +0200
commit6842192298a8c1cf38db4c51d62598b704256933 (patch)
tree7181fb99a2d9b7cb7a6a457855fe6ab9c2731869 /monitor.h
parent6e1064dca6de162e199b4687612d3f5f72c7c0c4 (diff)
downloadvdr-plugin-dynamite-6842192298a8c1cf38db4c51d62598b704256933.tar.gz
vdr-plugin-dynamite-6842192298a8c1cf38db4c51d62598b704256933.tar.bz2
add udev monitor for remove events of usb hardware so devices can be detached on unplugging
Diffstat (limited to 'monitor.h')
-rw-r--r--monitor.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/monitor.h b/monitor.h
index 79634c0..09d01ec 100644
--- a/monitor.h
+++ b/monitor.h
@@ -27,6 +27,7 @@ protected:
public:
static cUdevMonitor *Get(const char *Subsystem);
static bool AddFilter(const char *Subsystem, cUdevFilter *Filter);
+ static bool DelFilter(const char *Subsystem, cUdevFilter *Filter);
static void ShutdownAllMonitors(void);
virtual ~cUdevMonitor(void);
@@ -55,6 +56,27 @@ protected:
virtual void Process(cUdevDevice &Device);
};
+class cUdevUsbRemoveFilter : public cUdevFilter {
+private:
+ class cItem : public cListObject {
+ public:
+ cString *item;
+ cString *devpath;
+ cItem(const char *i, const char *d);
+ virtual ~cItem(void);
+ };
+
+ static cMutex mutexFilter;
+ static cUdevUsbRemoveFilter *filter;
+ cMutex mutexItems;
+ cList<cItem> items;
+protected:
+ virtual void Process(cUdevDevice &Device);
+public:
+ static void AddItem(const char *item, const char *devpath);
+ static void RemoveItem(const char *item, const char *devpath);
+ };
+
class cUdevPatternFilter : public cUdevFilter {
public:
static bool AddFilter(const char *Subsystem, const char *Pattern);