|
|
@ -74,14 +74,27 @@ |
|
|
|
#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) |
|
|
|
#include <sys/time.h> // Required for: timespec, nanosleep(), select() - POSIX |
|
|
|
|
|
|
|
//#define GLFW_EXPOSE_NATIVE_WAYLAND |
|
|
|
#define GLFW_EXPOSE_NATIVE_X11 |
|
|
|
#define Font X11Font // Hack to fix 'Font' name collision |
|
|
|
#if defined(_GLFW_X11) || defined(_GLFW_WAYLAND) |
|
|
|
// Set appropriate expose macros based on available backends |
|
|
|
#if defined(_GLFW_X11) |
|
|
|
#define GLFW_EXPOSE_NATIVE_X11 |
|
|
|
#define Font X11Font // Hack to fix 'Font' name collision |
|
|
|
// The definition and references to the X11 Font type will be replaced by 'X11Font' |
|
|
|
// Works as long as the current file consistently references any X11 Font as X11Font |
|
|
|
// Since it is never referenced (as of writting), this does not pose an issue |
|
|
|
#include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() |
|
|
|
#undef Font // Revert hack and allow normal raylib Font usage |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(_GLFW_WAYLAND) |
|
|
|
#define GLFW_EXPOSE_NATIVE_WAYLAND |
|
|
|
#endif |
|
|
|
|
|
|
|
#include "GLFW/glfw3native.h" // Include native header only once, regardless of how many backends are defined |
|
|
|
// Required for: glfwGetX11Window() and glfwGetWaylandWindow() |
|
|
|
|
|
|
|
#if defined(_GLFW_X11) // Clean up X11-specific hacks |
|
|
|
#undef Font // Revert hack and allow normal raylib Font usage |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(__APPLE__) |
|
|
|
#include <unistd.h> // Required for: usleep() |
|
|
@ -710,7 +723,7 @@ void SetWindowFocused(void) |
|
|
|
glfwFocusWindow(platform.handle); |
|
|
|
} |
|
|
|
|
|
|
|
#if defined(__linux__) |
|
|
|
#if defined(__linux__) && defined(_GLFW_X11) |
|
|
|
// Local storage for the window handle returned by glfwGetX11Window |
|
|
|
// This is needed as X11 handles are integers and may not fit inside a pointer depending on platform |
|
|
|
// Storing the handle locally and returning a pointer in GetWindowHandle allows the code to work regardless of pointer width |
|
|
@ -724,10 +737,27 @@ void *GetWindowHandle(void) |
|
|
|
return glfwGetWin32Window(platform.handle); |
|
|
|
#endif |
|
|
|
#if defined(__linux__) |
|
|
|
// Store the window handle localy and return a pointer to the variable instead |
|
|
|
// Reasoning detailed in the declaration of X11WindowHandle |
|
|
|
X11WindowHandle = glfwGetX11Window(platform.handle); |
|
|
|
return &X11WindowHandle; |
|
|
|
#if defined(_GLFW_WAYLAND) |
|
|
|
#if defined(_GLFW_X11) |
|
|
|
int platformID = glfwGetPlatform(); |
|
|
|
if (platformID == GLFW_PLATFORM_WAYLAND) |
|
|
|
{ |
|
|
|
return glfwGetWaylandWindow(platform.handle); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
X11WindowHandle = glfwGetX11Window(platform.handle); |
|
|
|
return &X11WindowHandle; |
|
|
|
} |
|
|
|
#else |
|
|
|
return glfwGetWaylandWindow(platform.handle); |
|
|
|
#endif |
|
|
|
#elif defined(_GLFW_X11) |
|
|
|
// Store the window handle localy and return a pointer to the variable instead |
|
|
|
// Reasoning detailed in the declaration of X11WindowHandle |
|
|
|
X11WindowHandle = glfwGetX11Window(platform.handle); |
|
|
|
return &X11WindowHandle; |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if defined(__APPLE__) |
|
|
|
// NOTE: Returned handle is: (objc_object *) |
|
|
|