Author: axeld Date: 2009-10-11 18:40:12 +0200 (Sun, 11 Oct 2009) New Revision: 33520 Changeset: http://dev.haiku-os.org/changeset/33520/haiku Modified: haiku/trunk/headers/os/device/Joystick.h haiku/trunk/src/kits/device/Joystick.cpp Log: * 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). Modified: haiku/trunk/headers/os/device/Joystick.h =================================================================== --- haiku/trunk/headers/os/device/Joystick.h 2009-10-11 16:19:28 UTC (rev 33519) +++ haiku/trunk/headers/os/device/Joystick.h 2009-10-11 16:40:12 UTC (rev 33520) @@ -5,13 +5,10 @@ #ifndef _JOYSTICK_H #define _JOYSTICK_H -#include <BeBuild.h> + #include <OS.h> #include <SupportDefs.h> -#if DEBUG -#include <stdio.h> -#endif class BList; class BString; @@ -20,6 +17,7 @@ struct _extended_joystick; struct _joystick_info; + class BJoystick { public: BJoystick(); @@ -35,7 +33,7 @@ bigtime_t timestamp; int16 horizontal; int16 vertical; - + bool button1; bool button2; @@ -58,12 +56,12 @@ 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 @@ 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 Modified: haiku/trunk/src/kits/device/Joystick.cpp =================================================================== --- haiku/trunk/src/kits/device/Joystick.cpp 2009-10-11 16:19:28 UTC (rev 33519) +++ haiku/trunk/src/kits/device/Joystick.cpp 2009-10-11 16:40:12 UTC (rev 33520) @@ -4,6 +4,7 @@ * Distributed under the terms of the MIT License. */ + #include <List.h> #include "Joystick.h" @@ -30,8 +31,11 @@ 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 @@ //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 @@ // Refresh devices list ScanDevices(true); - + int32 count = 0; if (fDevices != NULL) count = fDevices->CountItems(); @@ -361,3 +365,13 @@ 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; }