Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
Corrected Linux joystick things, fixes assertion failure from testjoy…
…stick.
  • Loading branch information
icculus committed Dec 14, 2012
1 parent 637ae9e commit 0122917
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
9 changes: 6 additions & 3 deletions src/joystick/linux/SDL_sysjoystick.c
Expand Up @@ -319,7 +319,7 @@ MaybeRemoveDevice(const char *path)
if (SDL_strcmp(path, item->path) == 0) {
const int retval = item->device_instance;
if (item->hwdata) {
item->hwdata->removed = SDL_TRUE;
item->hwdata->item = NULL;
}
if (prev != NULL) {
prev->next = item->next;
Expand Down Expand Up @@ -731,7 +731,7 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index)
return (-1);
}
SDL_memset(joystick->hwdata, 0, sizeof(*joystick->hwdata));
joystick->hwdata->removed = SDL_FALSE;
joystick->hwdata->item = item;
joystick->hwdata->guid = item->guid;
joystick->hwdata->fd = fd;
joystick->hwdata->fname = SDL_strdup(item->path);
Expand All @@ -758,7 +758,7 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index)
/* Function to determine is this joystick is attached to the system right now */
SDL_bool SDL_SYS_JoystickAttached(SDL_Joystick *joystick)
{
return !joystick->closed && !joystick->hwdata->removed;
return !joystick->closed && (joystick->hwdata->item != NULL);
}

static __inline__ void
Expand Down Expand Up @@ -913,6 +913,9 @@ SDL_SYS_JoystickClose(SDL_Joystick * joystick)
{
if (joystick->hwdata) {
close(joystick->hwdata->fd);
if (joystick->hwdata->item) {
joystick->hwdata->item->hwdata = NULL;
}
SDL_free(joystick->hwdata->hats);
SDL_free(joystick->hwdata->balls);
SDL_free(joystick->hwdata->fname);
Expand Down
5 changes: 3 additions & 2 deletions src/joystick/linux/SDL_sysjoystick_c.h
Expand Up @@ -21,12 +21,13 @@

#include <linux/input.h>

struct SDL_joylist_item;

/* The private structure used to keep track of a joystick */
struct joystick_hwdata
{
int fd;
SDL_bool removed;

struct SDL_joylist_item *item;
SDL_JoystickGUID guid;
char *fname; /* Used in haptic subsystem */

Expand Down

0 comments on commit 0122917

Please sign in to comment.