From 6e6b0851ca338f3e14664db2f06f2348dcafb23b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 11 Oct 2009 16:40:12 +0000 Subject: [PATCH] * Applied (cleaned up) patch by Stefano to fix bug #4742. * Note while this fixed running BeOS apps using BJoystick, it breaks all apps (and SDL) that have been compiled for Haiku R1/alpha1. It's really bad that r27171 went through unnoticed. We should really try harder next time (and try to get the ABI change detection script working in an automated way). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33520 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/device/Joystick.h | 24 +++++++++++++----------- src/kits/device/Joystick.cpp | 24 +++++++++++++++++++----- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/headers/os/device/Joystick.h b/headers/os/device/Joystick.h index 1c3baecddc..615a8e3768 100644 --- a/headers/os/device/Joystick.h +++ b/headers/os/device/Joystick.h @@ -5,13 +5,10 @@ #ifndef _JOYSTICK_H #define _JOYSTICK_H -#include + #include #include -#if DEBUG -#include -#endif class BList; class BString; @@ -20,6 +17,7 @@ struct entry_ref; struct _extended_joystick; struct _joystick_info; + class BJoystick { public: BJoystick(); @@ -35,7 +33,7 @@ public: bigtime_t timestamp; int16 horizontal; int16 vertical; - + bool button1; bool button2; @@ -58,12 +56,12 @@ public: int32 forStick = 0); status_t GetAxisNameAt(int32 index, BString* outName); - + int32 CountHats(); status_t GetHatValues(uint8* outHats, int32 forStick = 0); status_t GetHatNameAt(int32 index, BString* outName); - + int32 CountButtons(); uint32 ButtonValues(int32 forStick = 0); @@ -80,16 +78,20 @@ friend class _BJoystickTweaker; status_t GatherEnhanced_info(const entry_ref* ref = NULL); status_t SaveConfig(const entry_ref* ref = NULL); + void _ReservedJoystick1(); + virtual void _ReservedJoystick2(); + virtual void _ReservedJoystick3(); + virtual status_t _Reserved_Joystick_4(void *, ...); + virtual status_t _Reserved_Joystick_5(void *, ...); + virtual status_t _Reserved_Joystick_6(void *, ...); + bool fBeBoxMode; bool fReservedBool; int ffd; BList* fDevices; _joystick_info* fJoystickInfo; char* fDevName; -#if DEBUG -public: - static FILE* sLogFile; -#endif + uint32 _reserved_Joystick_[10]; }; #endif // _JOYSTICK_H diff --git a/src/kits/device/Joystick.cpp b/src/kits/device/Joystick.cpp index 00159291c2..430ea494fa 100644 --- a/src/kits/device/Joystick.cpp +++ b/src/kits/device/Joystick.cpp @@ -4,6 +4,7 @@ * Distributed under the terms of the MIT License. */ + #include #include "Joystick.h" @@ -30,8 +31,11 @@ LOG(const char *fmt, ...) va_end(ap); fputs(buf, BJoystick::sLogFile); fflush(BJoystick::sLogFile); } + # define LOG_ERR(text...) LOG(text) -FILE *BJoystick::sLogFile = NULL; + +static FILE *sLogFile = NULL; + #else # define LOG(text...) # define LOG_ERR(text...) fprintf(stderr, text) @@ -112,14 +116,14 @@ BJoystick::Open(const char *portName, bool enter_enhanced) //Read the Joystick Description file for this port/joystick _BJoystickTweaker jt(*this); jt.GetInfo(fJoystickInfo, portName); - + LOG("ioctl - %d\n", fJoystickInfo->num_buttons); ioctl(ffd, B_JOYSTICK_SET_DEVICE_MODULE, fJoystickInfo); ioctl(ffd, B_JOYSTICK_GET_DEVICE_MODULE, fJoystickInfo); LOG("ioctl - %d\n", fJoystickInfo->num_buttons); - + return ffd; - } else + } else return errno; } @@ -152,7 +156,7 @@ BJoystick::CountDevices() // Refresh devices list ScanDevices(true); - + int32 count = 0; if (fDevices != NULL) count = fDevices->CountItems(); @@ -361,3 +365,13 @@ BJoystick::SaveConfig(const entry_ref *ref) return B_ERROR; } + +// #pragma mark - FBC protection + + +void BJoystick::_ReservedJoystick1() {} +void BJoystick::_ReservedJoystick2() {} +void BJoystick::_ReservedJoystick3() {} +status_t BJoystick::_Reserved_Joystick_4(void*, ...) { return B_ERROR; } +status_t BJoystick::_Reserved_Joystick_5(void*, ...) { return B_ERROR; } +status_t BJoystick::_Reserved_Joystick_6(void*, ...) { return B_ERROR; }