diff options
| author | Ray <[email protected]> | 2018-10-07 09:16:54 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-10-07 09:16:54 +0200 |
| commit | 93f68fa61205c2d06ce9006eec0569133cd515ba (patch) | |
| tree | a44a000c30e9942048f4f63518e8d222376f64b7 /src/core.c | |
| parent | 35ee4fa685c2430ef65a323d1f24f148fa81e44f (diff) | |
| parent | 1fe6d9fc06156257d5210cfa71ecb839fb190722 (diff) | |
| download | raylib-93f68fa61205c2d06ce9006eec0569133cd515ba.tar.gz raylib-93f68fa61205c2d06ce9006eec0569133cd515ba.zip | |
Merge pull request #655 from a3f/master
core: workaround window not being rendered till moved on macOS Mojave
Diffstat (limited to 'src/core.c')
| -rw-r--r-- | src/core.c | 29 |
1 files changed, 23 insertions, 6 deletions
@@ -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) |
