From ee1169776927496bde3d112cb9a46417c3d6a541 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Sat, 17 Jul 2021 20:43:37 -0700 Subject: [PATCH] glfw: add Monitor.getVideoMode Signed-off-by: Stephen Gutekanst --- glfw/src/Monitor.zig | 30 +++++++++++++++++++++++++++++- glfw/src/c.zig | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/glfw/src/Monitor.zig b/glfw/src/Monitor.zig index 6bdd26b5..9d56b9fb 100644 --- a/glfw/src/Monitor.zig +++ b/glfw/src/Monitor.zig @@ -209,6 +209,23 @@ pub inline fn getVideoModes(self: Monitor, allocator: *mem.Allocator) ![]VideoMo return slice; } +/// Returns the current mode of the specified monitor. +/// +/// This function returns the current video mode of the specified monitor. If you have created a +/// full screen window for that monitor, the return value will depend on whether that window is +/// iconified. +/// +/// Possible errors include glfw.Error.NotInitialized and glfw.Error.PlatformError. +/// +/// @thread_safety This function must only be called from the main thread. +/// +/// see also: monitor_modes, glfw.Monitor.getVideoModes +pub inline fn getVideoMode(self: Monitor) Error!VideoMode { + const mode = c.glfwGetVideoMode(self.handle); + try getError(); + return VideoMode{ .handle = mode.?.* }; +} + /// Returns the currently connected monitors. /// /// This function returns a slice of all currently connected monitors. The primary monitor is @@ -415,4 +432,15 @@ test "getVideoModes" { const modes = try m.getVideoModes(allocator); defer allocator.free(modes); } -} \ No newline at end of file +} + +test "getVideoMode" { + const glfw = @import("main.zig"); + try glfw.init(); + defer glfw.terminate(); + + const monitor = try getPrimary(); + if (monitor) |m| { + _ = try m.getVideoMode(); + } +} diff --git a/glfw/src/c.zig b/glfw/src/c.zig index 9fd080ab..13867b4e 100644 --- a/glfw/src/c.zig +++ b/glfw/src/c.zig @@ -15,4 +15,4 @@ //! pub const struct_GLFWvidmode = extern struct { //! ^ //! ``` -pub const c = @cImport(@cInclude("GLFW/glfw3.h")); \ No newline at end of file +pub const c = @cImport(@cInclude("GLFW/glfw3.h"));