Hi Christian,

The usual way to avoid pollution of 3rd party #defines to to make sure
that the polluters are included after the ones that are effected.  If
this isn't possible then to #undef the problem #defines.

Another possible route would be to simply use a non polutting headers
and lib for joystick support.  I've used SDL for joystick support in
the past without problems.

Robert.

On 1 February 2012 08:51, Christian Schulte <[email protected]> wrote:
> Hello everyone,
>
> after some headaches I have found a solution to a compile problem in a
> program using osgGA::GUIEventHandler and linux/input.h (neccesary for make
> work an old joystick model, not possible to be modified). Here is an
> exctract of the code which throw the error "Expected unqualified id before
> :" for lines 619 and 622 :
>
>     switch (ea.getEventType())
>     {
>
>         case (osgGA::GUIEventAdapter::FRAME):
>         {
>             osgViewer::View* view =
> dynamic_cast<osgViewer::View*>(&gUIActionAdapter);
>             if (view == NULL) return false;
>
>             updateResolution(view);
>             break;
>         }
>         case (osgGA::GUIEventAdapter::KEYUP):
>         {
>             switch (ea.getKey()) {
>                 case ('f'):
>
> arbreUtile->setPropValue<bool>("graphic.windows.fullScreen",
> !arbreUtile->getPropValue<bool>("graphic.windows.fullScreen",false));
>                     break;
>                 case (osgGA::GUIEventAdapter::KEY_Pause):
>                     arbreUtile->setPropValue<bool>("sim.pause",!
> arbreUtile->getPropValue<bool>("sim.pause",false));
>                     break;
>                 case (osgGA::GUIEventAdapter::KEY_F2):  // This is line 619
>
> arbreUtile->setPropValue<bool>("graphic.windows.showGui", !
> arbreUtile->getPropValue<bool>("graphic.windows.showGui",false));
>                     break;
>                 case (osgGA::GUIEventAdapter::KEY_F12): // This is line 622
>                     arbreUtile->setPropValue<bool>("graphic.windows.record",
> ! arbreUtile->getPropValue<bool>("graphic.windows.record", false));
>                     break;
>                 default:
>                     break;
>             }
>             break;
>         }
>         default:
>             return false;
>     }
>
> The option "-save-temps" allowed me to have a look at the file after
> pre-compiler which gives :
>
>     switch (ea.getEventType())
>     {
>
>         case (osgGA::GUIEventAdapter::FRAME):
>         {
>             osgViewer::View* view =
> dynamic_cast<osgViewer::View*>(&gUIActionAdapter);
>             if (view == NULL) return false;
>
>             updateResolution(view);
>             break;
>         }
>         case (osgGA::GUIEventAdapter::KEYUP):
>         {
>             switch (ea.getKey()) {
>                 case ('f'):
>
> arbreUtile->setPropValue<bool>("graphic.windows.fullScreen",
> !arbreUtile->getPropValue<bool>("graphic.windows.fullScreen",false));
>                     break;
>                 case (osgGA::GUIEventAdapter::KEY_Pause):
>                     arbreUtile->setPropValue<bool>("sim.pause",!
> arbreUtile->getPropValue<bool>("sim.pause",false));
>                     break;
>                 case (osgGA::GUIEventAdapter::60):  // This is line 619
>
> arbreUtile->setPropValue<bool>("graphic.windows.showGui", !
> arbreUtile->getPropValue<bool>("graphic.windows.showGui",false));
>                     break;
>                 case (osgGA::GUIEventAdapter::80): // This is line 622
>                     arbreUtile->setPropValue<bool>("graphic.windows.record",
> ! arbreUtile->getPropValue<bool>("graphic.windows.record", false));
>                     break;
>                 default:
>                     break;
>             }
>             break;
>         }
>         default:
>             return false;
>     }
>
> As you can see, KEY_F2 and KEY_F12 has been replaced by a numeric value, but
> not KEY_Pause... In fact the file linux/input.h contains a list of define
> for the keyboard, including :
>
> #define KEY_F2            60
> ...
> #define KEY_F12          88
> ...
> #define KEY_PAUSE    119
>
> Temporally, we had to undef KEY_F2 and KEY_12 in order to compile and link
> correctly our program.
>
> I you have some hints to do this differently and in a cleaner way :-) I'm
> ready to test other solutions (but I cannot exclude linux/input.h)
>
> Thanks,
>
> Cheers
>
> Christian
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to