From 09f9773e6fffd29981f4191fee65f504d66da1d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Sun, 18 Jul 2021 22:54:58 +0200 Subject: [PATCH] Cocoa: Make timer functions backend independent This is work towards allowing the Null backend to build for macOS using the Darwin timer API, without the Cocoa backend being enabled. --- src/CMakeLists.txt | 9 +++++---- src/cocoa_platform.h | 9 +-------- src/cocoa_time.h | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 src/cocoa_time.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a7cacabd..0dda7386 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,10 +16,11 @@ set_target_properties(update_mappings PROPERTIES FOLDER "GLFW3") if (_GLFW_COCOA) target_compile_definitions(glfw PRIVATE _GLFW_COCOA) - target_sources(glfw PRIVATE cocoa_platform.h cocoa_joystick.h posix_thread.h - cocoa_init.m cocoa_joystick.m cocoa_monitor.m - cocoa_window.m cocoa_time.c posix_thread.c - nsgl_context.m egl_context.c osmesa_context.c) + target_sources(glfw PRIVATE cocoa_platform.h cocoa_joystick.h cocoa_time.h + posix_thread.h cocoa_init.m cocoa_joystick.m + cocoa_monitor.m cocoa_window.m cocoa_time.c + posix_thread.c nsgl_context.m egl_context.c + osmesa_context.c) elseif (_GLFW_WIN32) target_compile_definitions(glfw PRIVATE _GLFW_WIN32) target_sources(glfw PRIVATE win32_platform.h win32_joystick.h win32_time.h diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h index 9d3e9fe0..18385727 100644 --- a/src/cocoa_platform.h +++ b/src/cocoa_platform.h @@ -91,12 +91,12 @@ typedef struct VkMetalSurfaceCreateInfoEXT typedef VkResult (APIENTRY *PFN_vkCreateMacOSSurfaceMVK)(VkInstance,const VkMacOSSurfaceCreateInfoMVK*,const VkAllocationCallbacks*,VkSurfaceKHR*); typedef VkResult (APIENTRY *PFN_vkCreateMetalSurfaceEXT)(VkInstance,const VkMetalSurfaceCreateInfoEXT*,const VkAllocationCallbacks*,VkSurfaceKHR*); +#include "cocoa_time.h" #include "posix_thread.h" #include "cocoa_joystick.h" #define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowNS ns #define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryNS ns -#define _GLFW_PLATFORM_LIBRARY_TIMER_STATE _GLFWtimerNS ns #define _GLFW_PLATFORM_MONITOR_STATE _GLFWmonitorNS ns #define _GLFW_PLATFORM_CURSOR_STATE _GLFWcursorNS ns @@ -204,13 +204,6 @@ typedef struct _GLFWcursorNS id object; } _GLFWcursorNS; -// Cocoa-specific global timer data -// -typedef struct _GLFWtimerNS -{ - uint64_t frequency; -} _GLFWtimerNS; - void _glfwPollMonitorsNS(void); void _glfwSetVideoModeNS(_GLFWmonitor* monitor, const GLFWvidmode* desired); diff --git a/src/cocoa_time.h b/src/cocoa_time.h new file mode 100644 index 00000000..6f41ef19 --- /dev/null +++ b/src/cocoa_time.h @@ -0,0 +1,35 @@ +//======================================================================== +// GLFW 3.4 macOS - www.glfw.org +//------------------------------------------------------------------------ +// Copyright (c) 2009-2021 Camilla Löwy +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#define _GLFW_PLATFORM_LIBRARY_TIMER_STATE _GLFWtimerNS ns + +// Cocoa-specific global timer data +// +typedef struct _GLFWtimerNS +{ + uint64_t frequency; +} _GLFWtimerNS; +