Added suggestions by planetis-m

This commit is contained in:
Diogo Diniz
2025-08-14 18:46:45 +01:00
parent 93f86fa074
commit 59c979a59d

View File

@@ -74,17 +74,29 @@
#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) #if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
#include <sys/time.h> // Required for: timespec, nanosleep(), select() - POSIX #include <sys/time.h> // Required for: timespec, nanosleep(), select() - POSIX
//#define GLFW_EXPOSE_NATIVE_WAYLAND #if defined(_GLFW_X11) || defined(_GLFW_WAYLAND)
#ifdef _GLFW_X11 // Set appropriate expose macros based on available backends
#if defined(_GLFW_X11)
#define GLFW_EXPOSE_NATIVE_X11 #define GLFW_EXPOSE_NATIVE_X11
#define Font X11Font // Hack to fix 'Font' name collision #define Font X11Font // Hack to fix 'Font' name collision
// The definition and references to the X11 Font type will be replaced by 'X11Font' // 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 // 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 // Since it is never referenced (as of writting), this does not pose an issue
#include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() #endif
#if defined(_GLFW_WAYLAND)
#define GLFW_EXPOSE_NATIVE_WAYLAND
#endif
// Include native header only once, regardless of how many backends are defined
#include "GLFW/glfw3native.h" // Required for: glfwGetX11Window() and glfwGetWaylandWindow()
// Clean up X11-specific hacks
#if defined(_GLFW_X11)
#undef Font // Revert hack and allow normal raylib Font usage #undef Font // Revert hack and allow normal raylib Font usage
#endif #endif
#endif #endif
#endif
#if defined(__APPLE__) #if defined(__APPLE__)
#include <unistd.h> // Required for: usleep() #include <unistd.h> // Required for: usleep()
@@ -725,12 +737,27 @@ void *GetWindowHandle(void)
// NOTE: Returned handle is: void *HWND (windows.h) // NOTE: Returned handle is: void *HWND (windows.h)
return glfwGetWin32Window(platform.handle); return glfwGetWin32Window(platform.handle);
#endif #endif
#if defined(__linux__) && defined(_GLFW_X11) #if defined(__linux__)
#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
#else if defined(_GLFW_X11)
// Store the window handle localy and return a pointer to the variable instead // Store the window handle localy and return a pointer to the variable instead
// Reasoning detailed in the declaration of X11WindowHandle // Reasoning detailed in the declaration of X11WindowHandle
X11WindowHandle = glfwGetX11Window(platform.handle); X11WindowHandle = glfwGetX11Window(platform.handle);
return &X11WindowHandle; return &X11WindowHandle;
#endif #endif
#endif
#if defined(__APPLE__) #if defined(__APPLE__)
// NOTE: Returned handle is: (objc_object *) // NOTE: Returned handle is: (objc_object *)
return (void *)glfwGetCocoaWindow(platform.handle); return (void *)glfwGetCocoaWindow(platform.handle);