|
@@ -134,12 +134,6 @@
|
|
|
#define CHDIR chdir
|
|
|
#endif
|
|
|
|
|
|
-#if defined(__linux__) || defined(PLATFORM_WEB)
|
|
|
- #include <sys/time.h> // Required for: timespec, nanosleep(), select() - POSIX
|
|
|
-#elif defined(__APPLE__)
|
|
|
- #include <unistd.h> // Required for: usleep()
|
|
|
-#endif
|
|
|
-
|
|
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
|
|
|
#if defined(PLATFORM_WEB)
|
|
|
#define GLFW_INCLUDE_ES2
|
|
@@ -155,6 +149,15 @@
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
+#if defined(__linux__) || defined(PLATFORM_WEB)
|
|
|
+ #include <sys/time.h> // Required for: timespec, nanosleep(), select() - POSIX
|
|
|
+#elif defined(__APPLE__)
|
|
|
+ #include <unistd.h> // Required for: usleep()
|
|
|
+ #include <objc/message.h> // Required for: objc_msgsend(), sel_registerName()
|
|
|
+ #define GLFW_EXPOSE_NATIVE_NSGL
|
|
|
+ #include <GLFW/glfw3native.h> // Required for: glfwGetNSGLContext()
|
|
|
+#endif
|
|
|
+
|
|
|
#if defined(PLATFORM_ANDROID)
|
|
|
//#include <android/sensor.h> // Android sensors functions (accelerometer, gyroscope, light...)
|
|
|
#include <android/window.h> // Defines AWINDOW_FLAG_FULLSCREEN and others
|
|
@@ -233,6 +236,11 @@ static bool windowReady = false; // Check if window has been init
|
|
|
static bool windowMinimized = false; // Check if window has been minimized
|
|
|
static const char *windowTitle = NULL; // Window text title...
|
|
|
|
|
|
+#if defined(__APPLE__)
|
|
|
+static int windowNeedsUpdating = 2; // Times the Cocoa window needs to be updated initially
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
#if defined(PLATFORM_ANDROID)
|
|
|
static struct android_app *androidApp; // Android activity
|
|
|
static struct android_poll_source *source; // Android events polling source
|
|
@@ -2870,6 +2878,15 @@ static void SwapBuffers(void)
|
|
|
{
|
|
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
|
|
|
glfwSwapBuffers(window);
|
|
|
+#if __APPLE__
|
|
|
+ // workaround for missing/erroneous initial rendering on macOS
|
|
|
+ if (windowNeedsUpdating) {
|
|
|
+ // Desugared version of Objective C: [glfwGetNSGLContext(window) update]
|
|
|
+ ((id (*)(id, SEL))objc_msgSend)(glfwGetNSGLContext(window),
|
|
|
+ sel_registerName("update"));
|
|
|
+ windowNeedsUpdating--;
|
|
|
+ }
|
|
|
+#endif
|
|
|
#endif
|
|
|
|
|
|
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_UWP)
|