aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2018-10-31 23:19:29 +0100
committerRay <raysan5@gmail.com>2018-10-31 23:19:29 +0100
commit0f6f326a868f6c970de066e71d74e81f54347085 (patch)
treec417cbdec868d903463210979d9b9c6be27046e6 /src
parentf7667aad8dd03c1cdaa2033f7a37815b7dd1f9b4 (diff)
downloadraylib-0f6f326a868f6c970de066e71d74e81f54347085.tar.gz
raylib-0f6f326a868f6c970de066e71d74e81f54347085.zip
Add flag: SUPPORT_EVENTS_WAITING
Wait for input events passively (sleep) instead of polling events actively every frame
Diffstat (limited to 'src')
-rw-r--r--src/CMakeOptions.txt1
-rw-r--r--src/config.h2
-rw-r--r--src/config.h.in2
-rw-r--r--src/core.c8
4 files changed, 12 insertions, 1 deletions
diff --git a/src/CMakeOptions.txt b/src/CMakeOptions.txt
index eee3f1a9..ee63c5b4 100644
--- a/src/CMakeOptions.txt
+++ b/src/CMakeOptions.txt
@@ -24,6 +24,7 @@ set(OFF ${INCLUDE_EVERYTHING} CACHE INTERNAL "Replace any OFF by default with \$
# core.c
option(SUPPORT_BUSY_WAIT_LOOP "Use busy wait loop for timing sync instead of a high-resolution timer" ON)
+option(SUPPORT_EVENTS_WAITING "Wait for events passively (sleeping while no events) instead of polling them actively every frame" OFF)
option(SUPPORT_CAMERA_SYSTEM "Provide camera module (camera.h) with multiple predefined cameras: free, 1st/3rd person, orbital" ON)
option(SUPPORT_DEFAULT_FONT "Default font is loaded on window initialization to be available for the user to render simple text. If enabled, uses external module functions to load default raylib font (module: text)" ON)
option(SUPPORT_SCREEN_CAPTURE "Allow automatic screen capture of current screen pressing F12, defined in KeyCallback()" ON)
diff --git a/src/config.h b/src/config.h
index 47cc8068..7992f5b3 100644
--- a/src/config.h
+++ b/src/config.h
@@ -44,6 +44,8 @@
#define SUPPORT_MOUSE_GESTURES 1
// Use busy wait loop for timing sync, if not defined, a high-resolution timer is setup and used
#define SUPPORT_BUSY_WAIT_LOOP 1
+// Wait for events passively (sleeping while no events) instead of polling them actively every frame
+//SUPPORT_EVENTS_WAITING 1
// Allow automatic screen capture of current screen pressing F12, defined in KeyCallback()
#define SUPPORT_SCREEN_CAPTURE 1
// Allow automatic gif recording of current screen pressing CTRL+F12, defined in KeyCallback()
diff --git a/src/config.h.in b/src/config.h.in
index b0e62480..928405cd 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -9,6 +9,8 @@
#cmakedefine SUPPORT_MOUSE_GESTURES 1
/* Use busy wait loop for timing sync, if not defined, a high-resolution timer is setup and used */
#cmakedefine SUPPORT_BUSY_WAIT_LOOP 1
+/* Wait for events passively (sleeping while no events) instead of polling them actively every frame */
+#cmakedefine SUPPORT_EVENTS_WAITING 1
/* Allow automatic screen capture of current screen pressing F12, defined in KeyCallback() */
#cmakedefine SUPPORT_SCREEN_CAPTURE 1
/* Allow automatic gif recording of current screen pressing CTRL+F12, defined in KeyCallback() */
diff --git a/src/core.c b/src/core.c
index 2038e274..b2cb1813 100644
--- a/src/core.c
+++ b/src/core.c
@@ -50,6 +50,9 @@
* #define SUPPORT_BUSY_WAIT_LOOP
* Use busy wait loop for timing sync, if not defined, a high-resolution timer is setup and used
*
+* #define SUPPORT_EVENTS_WAITING
+* Wait for events passively (sleeping while no events) instead of polling them actively every frame
+*
* #define SUPPORT_SCREEN_CAPTURE
* Allow automatic screen capture of current screen pressing F12, defined in KeyCallback()
*
@@ -2933,7 +2936,6 @@ static void PollInputEvents(void)
previousMouseState[i] = currentMouseState[i];
currentMouseState[i] = currentMouseStateEvdev[i];
}
-
#endif
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
@@ -3007,8 +3009,12 @@ static void PollInputEvents(void)
}
}
+#if defined(SUPPORT_EVENTS_WAITING)
+ glfwWaitEvents();
+#else
glfwPollEvents(); // Register keyboard/mouse events (callbacks)... and window events!
#endif
+#endif //defined(PLATFORM_DESKTOP)
// Gamepad support using emscripten API
// NOTE: GLFW3 joystick functionality not available in web