diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-12 14:43:24 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-12 14:43:24 +0000 |
commit | bc89fe0147c04b67141936d109c00dfd4d69cc4b (patch) | |
tree | 544ff450c40fe1f43853a8420228a26f27f1eafb /libs/surfaces/wiimote/wiimote.h | |
parent | 30daaebaa2d90d6b0e8673143ccc3cacd7bd1753 (diff) |
most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet
git-svn-id: svn://localhost/ardour2/branches/3.0@4313 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/wiimote/wiimote.h')
-rw-r--r-- | libs/surfaces/wiimote/wiimote.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/libs/surfaces/wiimote/wiimote.h b/libs/surfaces/wiimote/wiimote.h new file mode 100644 index 0000000000..a6680edd2e --- /dev/null +++ b/libs/surfaces/wiimote/wiimote.h @@ -0,0 +1,69 @@ +#ifndef ardour_wiimote_control_protocol_h +#define ardour_wiimote_control_protocol_h + +#include <ardour/types.h> +#include <control_protocol/control_protocol.h> + +#include <glibmm/thread.h> + +#include <pbd/abstract_ui.h> + +#include <cwiid.h> + + +namespace ARDOUR { + class Session; +} + +#define ENSURE_WIIMOTE_THREAD(slot) \ + if (Glib::Thread::self() != main_thread) {\ + slot_mutex.lock();\ + slot_list.push_back(slot);\ + slot_cond.signal();\ + slot_mutex.unlock();\ + return;\ + } + + +class WiimoteControlProtocol : public ARDOUR::ControlProtocol { + public: + WiimoteControlProtocol (ARDOUR::Session &); + virtual ~WiimoteControlProtocol (); + + static bool probe(); + + int set_active (bool yn); + XMLNode& get_state(); + int set_state(const XMLNode&); + + void wiimote_callback(cwiid_wiimote_t *, int, union cwiid_mesg [], + struct timespec *); + + private: + + void wiimote_main(); + volatile bool main_thread_quit; + volatile bool restart_discovery; + + Glib::Thread *main_thread; + + void update_led_state(); + + bool callback_thread_registered_for_ardour; + + static uint16_t button_state; + + cwiid_wiimote_t *wiimote_handle; + + Glib::Cond slot_cond; + Glib::Mutex slot_mutex; + + std::list< sigc::slot<void> > slot_list; + + sigc::connection transport_state_conn; + sigc::connection record_state_conn; +}; + + +#endif /* ardour_wiimote_control_protocol_h */ + |