/////////////////////////////////////////////////////////////////////////////
-// Name: joystick.cpp
+// Name: src/unix/joystick.cpp
// Purpose: wxJoystick class
// Author: Ported to Linux by Guilhem Lavaux
// Modified by:
// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
-#include "wx/defs.h"
-
#if wxUSE_JOYSTICK
#include "wx/joystick.h"
+#ifndef WX_PRECOMP
+ #include "wx/event.h"
+ #include "wx/window.h"
+#endif //WX_PRECOMP
+
#include <linux/joystick.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
-#include "wx/event.h"
-#include "wx/window.h"
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#endif
+
+#include "wx/unix/private.h"
enum {
wxJS_AXIS_X = 0,
fd_set read_fds;
struct timeval time_out = {0, 0};
- FD_ZERO(&read_fds);
+ wxFD_ZERO(&read_fds);
while (true)
{
if (TestDestroy())
else
time_out.tv_usec = 10 * 1000; // check at least every 10 msec in blocking case
- FD_SET(m_device, &read_fds);
+ wxFD_SET(m_device, &read_fds);
select(m_device+1, &read_fds, NULL, NULL, &time_out);
- if (FD_ISSET(m_device, &read_fds))
+ if (wxFD_ISSET(m_device, &read_fds))
{
memset(&j_evt, 0, sizeof(j_evt));
read(m_device, &j_evt, sizeof(j_evt));
if (m_device == -1)
{
dev_name.Printf( wxT("/dev/input/js%d"), joystick);
- m_device = open(dev_name.fn_str(), O_RDONLY);
+ m_device = open(dev_name.fn_str(), O_RDONLY);
}
if (m_device != -1)
return (m_device != -1);
}
-int wxJoystick::GetNumberJoysticks() const
+int wxJoystick::GetNumberJoysticks()
{
wxString dev_name;
int fd, j;
break;
close(fd);
}
-
+
if (j == 0) {
for (j=0; j<4; j++) {
dev_name.Printf(wxT("/dev/input/js%d"), j);
close(fd);
}
}
-
+
return j;
}
return false;
}
#endif // wxUSE_JOYSTICK
-