Home | History | Annotate | Download | only in evdev
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
      6 #define UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
      7 
      8 #include "base/callback.h"
      9 #include "base/files/file_path.h"
     10 #include "base/message_loop/message_loop.h"
     11 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
     12 
     13 namespace ui {
     14 
     15 class Event;
     16 
     17 typedef base::Callback<void(Event*)> EventDispatchCallback;
     18 
     19 class EVENTS_OZONE_EVDEV_EXPORT EventConverterEvdev
     20     : public base::MessagePumpLibevent::Watcher {
     21  public:
     22   EventConverterEvdev(int fd, const base::FilePath& path);
     23   virtual ~EventConverterEvdev();
     24 
     25   // Start reading events.
     26   void Start();
     27 
     28   // Stop reading events.
     29   void Stop();
     30 
     31  protected:
     32   // base::MessagePumpLibevent::Watcher:
     33   virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
     34 
     35   // File descriptor to read.
     36   int fd_;
     37 
     38   // Path to input device.
     39   base::FilePath path_;
     40 
     41   // Controller for watching the input fd.
     42   base::MessagePumpLibevent::FileDescriptorWatcher controller_;
     43 
     44  private:
     45   DISALLOW_COPY_AND_ASSIGN(EventConverterEvdev);
     46 };
     47 
     48 }  // namespace ui
     49 
     50 #endif  // UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
     51