[haiku-commits] r33520 - in haiku/trunk: headers/os/device src/kits/device

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 11 Oct 2009 18:40:12 +0200 (CEST)

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; }


Other related posts: