X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fdevice.cpp;h=0a4d2c686560e1814719291e6246701aec0fbd44;hb=a07c344063e6dca568add5f022c7aab495061d11;hp=3b5b9b9f76d1b820c755e6580b71d7db9bd9dd51;hpb=3394d6066c9092a5444c9273f52cea01e2eaf10f;p=guile-irrlicht.git diff --git a/src/device.cpp b/src/device.cpp index 3b5b9b9..0a4d2c6 100644 --- a/src/device.cpp +++ b/src/device.cpp @@ -25,6 +25,7 @@ #include "device.h" #include "dimension2d.h" #include "driver-types.h" +#include "event-receiver.h" #include "wchar.h" #include "wrapped.h" @@ -35,9 +36,12 @@ extern "C" { { init_device_type (); scm_c_define_gsubr ("create-device", 0, 0, 1, (scm_t_subr)irr_createDevice); + scm_c_define_gsubr ("is-window-active?", 1, 0, 0, (scm_t_subr)irr_isWindowActive); scm_c_define_gsubr ("run", 1, 0, 0, (scm_t_subr)irr_run); scm_c_define_gsubr ("set-window-caption!", 2, 0, 0, (scm_t_subr)irr_setWindowCaption); - scm_c_export ("create-device", "run", "set-window-caption!", NULL); + scm_c_define_gsubr ("yield", 1, 0, 0, (scm_t_subr)irr_yield); + scm_c_export ("create-device", "is-window-active?", "run", + "set-window-caption!", "yield", NULL); } DEFINE_WRAPPED_TYPE (irr::IrrlichtDevice*, "device", @@ -72,10 +76,18 @@ extern "C" { scm_to_uint32 (bits), scm_to_bool (fullscreen), scm_to_bool (stencilbuffer), - scm_to_bool (vsync)); + scm_to_bool (vsync), + scm_is_false (receiver) ? 0 : unwrap_event_receiver (receiver)); return wrap_device (device); } + SCM + irr_isWindowActive (SCM wrapped_device) + { + irr::IrrlichtDevice* device = unwrap_device (wrapped_device); + return scm_from_bool (device->isWindowActive ()); + } + SCM irr_run (SCM wrapped_device) { @@ -92,4 +104,12 @@ extern "C" { return SCM_UNSPECIFIED; } + SCM + irr_yield (SCM wrapped_device) + { + irr::IrrlichtDevice* device = unwrap_device (wrapped_device); + device->yield (); + return SCM_UNSPECIFIED; + } + }