diff options
| -rw-r--r-- | x-plane-plugin/plugin.c | 76 | 
1 files changed, 41 insertions, 35 deletions
| diff --git a/x-plane-plugin/plugin.c b/x-plane-plugin/plugin.c index 1c41daf0..b0482d69 100644 --- a/x-plane-plugin/plugin.c +++ b/x-plane-plugin/plugin.c @@ -31,8 +31,11 @@  #define WINE_SHM_NAME "facetracknoir-wine-shm"  #define WINE_MTX_NAME "facetracknoir-wine-mtx" -#define BUILD_compat -#include "compat/export.hpp" +#include "compat/linkage-macros.hpp" + +#ifndef MAP_FAILED +#   define MAP_FAILED ((void*)-1) +#endif  enum Axis {      TX = 0, TY, TZ, Yaw, Pitch, Roll @@ -50,7 +53,7 @@ typedef struct WineSHM      int gameid, gameid2;      unsigned char table[8];      bool stop; -} WineSHM; +} volatile WineSHM;  static shm_wrapper* lck_posix = NULL;  static WineSHM* shm_posix = NULL; @@ -100,11 +103,10 @@ void shm_wrapper_unlock(shm_wrapper* self)      flock(self->fd, LOCK_UN);  } -float write_head_position( -        float                inElapsedSinceLastCall, -        float                inElapsedTimeSinceLastFlightLoop, -        int                  inCounter, -        void *               inRefcon ) +float write_head_position(float inElapsedSinceLastCall, +                          float inElapsedTimeSinceLastFlightLoop, +                          int   inCounter, +                          void* inRefcon)  {      if (lck_posix != NULL && shm_posix != NULL) {          shm_wrapper_lock(lck_posix); @@ -122,17 +124,17 @@ float write_head_position(      return -1.0;  } -static int TrackToggleHandler( XPLMCommandRef inCommand, -                               XPLMCommandPhase inPhase, -                               void * inRefCon ) +static int TrackToggleHandler(XPLMCommandRef inCommand, +                              XPLMCommandPhase inPhase, +                              void* inRefCon)  { -    if ( track_disabled ) +    if (track_disabled)      {          //Enable -        XPLMRegisterFlightLoopCallback(write_head_position, -1.0, NULL); +        XPLMRegisterFlightLoopCallback(write_head_position, -1, NULL);          // Reinit the offsets when we re-enable the plugin -        if ( !translation_disabled ) +        if (!translation_disabled)              reinit_offset();      }      else @@ -144,9 +146,9 @@ static int TrackToggleHandler( XPLMCommandRef inCommand,      return 0;  } -static int TranslationToggleHandler( XPLMCommandRef inCommand, -                                     XPLMCommandPhase inPhase, -                                     void * inRefCon ) +static int TranslationToggleHandler(XPLMCommandRef inCommand, +                                    XPLMCommandPhase inPhase, +                                    void* inRefCon)  {      translation_disabled = !translation_disabled;      if (!translation_disabled) @@ -157,7 +159,8 @@ static int TranslationToggleHandler( XPLMCommandRef inCommand,      return 0;  } -PLUGIN_API OTR_COMPAT_EXPORT int XPluginStart ( char * outName, char * outSignature, char * outDescription ) { +PLUGIN_API OTR_GENERIC_EXPORT +int XPluginStart (char* outName, char* outSignature, char* outDescription) {      view_x = XPLMFindDataRef("sim/aircraft/view/acf_peX");      view_y = XPLMFindDataRef("sim/aircraft/view/acf_peY");      view_z = XPLMFindDataRef("sim/aircraft/view/acf_peZ"); @@ -168,24 +171,24 @@ PLUGIN_API OTR_COMPAT_EXPORT int XPluginStart ( char * outName, char * outSignat      track_toggle = XPLMCreateCommand("opentrack/toggle", "Disable/Enable head tracking");      translation_disable_toggle = XPLMCreateCommand("opentrack/toggle_translation", "Disable/Enable input translation from opentrack"); -    XPLMRegisterCommandHandler( track_toggle, -                                TrackToggleHandler, -                                1, -                                (void*)0); +    XPLMRegisterCommandHandler(track_toggle, +                               TrackToggleHandler, +                               1, +                               NULL); -    XPLMRegisterCommandHandler( translation_disable_toggle, -                                TranslationToggleHandler, -                                1, -                                (void*)0); +    XPLMRegisterCommandHandler(translation_disable_toggle, +                               TranslationToggleHandler, +                               1, +                               NULL);      if (view_x && view_y && view_z && view_heading && view_pitch && track_toggle && translation_disable_toggle) {          lck_posix = shm_wrapper_init(WINE_SHM_NAME, WINE_MTX_NAME, sizeof(WineSHM)); -        if (lck_posix->mem == (void*)-1) { +        if (lck_posix->mem == MAP_FAILED) {              fprintf(stderr, "opentrack failed to init SHM!\n");              return 0;          } -        shm_posix = (WineSHM*) lck_posix->mem; +        shm_posix = lck_posix->mem;          memset(shm_posix, 0, sizeof(WineSHM));          strcpy(outName, "opentrack");          strcpy(outSignature, "opentrack - freetrack lives!"); @@ -196,7 +199,8 @@ PLUGIN_API OTR_COMPAT_EXPORT int XPluginStart ( char * outName, char * outSignat      return 0;  } -PLUGIN_API OTR_COMPAT_EXPORT void XPluginStop ( void ) { +PLUGIN_API OTR_GENERIC_EXPORT +void XPluginStop (void) {      if (lck_posix)      {          shm_wrapper_free(lck_posix); @@ -205,21 +209,23 @@ PLUGIN_API OTR_COMPAT_EXPORT void XPluginStop ( void ) {      }  } -PLUGIN_API OTR_COMPAT_EXPORT int XPluginEnable ( void ) { +PLUGIN_API OTR_GENERIC_EXPORT +int XPluginEnable (void) {      XPLMRegisterFlightLoopCallback(write_head_position, -1.0, NULL);      track_disabled = 0;      return 1;  } -PLUGIN_API OTR_COMPAT_EXPORT void XPluginDisable ( void ) { +PLUGIN_API OTR_GENERIC_EXPORT +void XPluginDisable (void) {      XPLMUnregisterFlightLoopCallback(write_head_position, NULL);      track_disabled = 1;  } -PLUGIN_API OTR_COMPAT_EXPORT void XPluginReceiveMessage( -        XPLMPluginID    inFromWho, -        int             inMessage, -        void *          inParam) +PLUGIN_API OTR_GENERIC_EXPORT +void XPluginReceiveMessage(XPLMPluginID    inFromWho, +                           int             inMessage, +                           void *          inParam)  {      if (inMessage == XPLM_MSG_AIRPORT_LOADED)          reinit_offset(); | 
