X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fevent-receiver.cpp;h=1d8e09722e887d784f3bef4e707ca12123fc3d05;hb=205969fe1c437850b377aa7ad715a927c3d5430b;hp=cae9191691668a98a28a146b8c85e381dd6dcfc8;hpb=41a6ad96e81a8d8153c54877c4c12f61100677a9;p=guile-irrlicht.git diff --git a/src/event-receiver.cpp b/src/event-receiver.cpp index cae9191..1d8e097 100644 --- a/src/event-receiver.cpp +++ b/src/event-receiver.cpp @@ -24,11 +24,12 @@ #include "event-receiver.h" #include "gsubr.h" #include "keycodes.h" +#include "wrapped.h" using namespace irr; SCM -IEventRecevier_make (SCM proc_on_event) +IEventReceiver_make (SCM proc_on_event) { class CustomReceiver : public IEventReceiver { @@ -42,54 +43,55 @@ IEventRecevier_make (SCM proc_on_event) virtual bool OnEvent (const SEvent& event) { - return scm_to_bool (scm_call_1 (scm_on_event, scm_from_pointer ((void*)&event, NULL))); + SCM wrapped_event = scm_from_irr_pointer ("", (void*) &event); + return scm_to_bool (scm_call_1 (scm_on_event, wrapped_event)); } }; CustomReceiver* receiver = new CustomReceiver (proc_on_event); - return scm_from_pointer ((void*)receiver, NULL); + return scm_from_irr_pointer ("", (void*) receiver); } SCM SEvent_EventType (SCM event) { return scm_from_event_type - (((SEvent*)scm_to_pointer (event))->EventType); + (((SEvent*)scm_to_irr_pointer (event))->EventType); } SCM SEvent_SGUIEvent_Caller (SCM event) { gui::IGUIElement* caller = - ((SEvent*)scm_to_pointer (event))->GUIEvent.Caller; - return scm_from_pointer ((void*)caller, NULL); + ((SEvent*)scm_to_irr_pointer (event))->GUIEvent.Caller; + return scm_from_irr_pointer ("", (void*) caller); } SCM SEvent_SGUIEvent_EventType (SCM event) { return scm_from_gui_event_type - (((SEvent*)scm_to_pointer (event))->GUIEvent.EventType); + (((SEvent*)scm_to_irr_pointer (event))->GUIEvent.EventType); } SCM SEvent_SKeyInput_Key (SCM event) { return scm_from_key_code - (((SEvent*)scm_to_pointer (event))->KeyInput.Key); + (((SEvent*)scm_to_irr_pointer (event))->KeyInput.Key); } SCM SEvent_SKeyInput_PressedDown (SCM event) { return scm_from_bool - (((SEvent*)scm_to_pointer (event))->KeyInput.PressedDown); + (((SEvent*)scm_to_irr_pointer (event))->KeyInput.PressedDown); } void init_event_receiver (void) { - DEFINE_GSUBR ("IEventRecevier_make", 1, 0, 0, IEventRecevier_make); + DEFINE_GSUBR ("IEventReceiver_make", 1, 0, 0, IEventReceiver_make); DEFINE_GSUBR ("SEvent_EventType", 1, 0, 0, SEvent_EventType); DEFINE_GSUBR ("SEvent_SGUIEvent_Caller", 1, 0, 0, SEvent_SGUIEvent_Caller); DEFINE_GSUBR ("SEvent_SGUIEvent_EventType", 1, 0, 0, SEvent_SGUIEvent_EventType);