glfw: add Monitor.setUserPointer, Monitor.getUserPointer
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
d57a53df49
commit
003a1db2e6
1 changed files with 53 additions and 1 deletions
|
|
@ -140,7 +140,47 @@ pub fn getContentScale(self: Monitor) Error!ContentScale {
|
|||
///
|
||||
/// see also: monitor_properties
|
||||
pub fn getName(self: Monitor) Error![*c]const u8 {
|
||||
return c.glfwGetMonitorName(self.handle);
|
||||
const name = c.glfwGetMonitorName(self.handle);
|
||||
try getError();
|
||||
return name;
|
||||
}
|
||||
|
||||
/// Sets the user pointer of the specified monitor.
|
||||
///
|
||||
/// This function sets the user-defined pointer of the specified monitor. The current value is
|
||||
/// retained until the monitor is disconnected.
|
||||
///
|
||||
/// This function may be called from the monitor callback, even for a monitor that is being
|
||||
/// disconnected.
|
||||
///
|
||||
/// Possible errors include glfw.Error.NotInitialized.
|
||||
///
|
||||
/// @thread_safety This function may be called from any thread. Access is not synchronized.
|
||||
///
|
||||
/// see also: monitor_userptr, glfw.Monitor.getUserPointer
|
||||
pub fn setUserPointer(self: Monitor, comptime T: type, ptr: *T) Error!void {
|
||||
c.glfwSetMonitorUserPointer(self.handle, ptr);
|
||||
try getError();
|
||||
}
|
||||
|
||||
/// Returns the user pointer of the specified monitor.
|
||||
///
|
||||
/// This function returns the current value of the user-defined pointer of the specified monitor.
|
||||
///
|
||||
/// This function may be called from the monitor callback, even for a monitor that is being
|
||||
/// disconnected.
|
||||
///
|
||||
/// Possible errors include glfw.Error.NotInitialized.
|
||||
///
|
||||
/// @thread_safety This function may be called from any thread. Access is not
|
||||
/// synchronized.
|
||||
///
|
||||
/// see also: monitor_userptr, glfw.Monitor.setUserPointer
|
||||
pub fn getUserPointer(self: Monitor, comptime T: type) Error!?*T {
|
||||
const ptr = c.glfwGetMonitorUserPointer(self.handle);
|
||||
try getError();
|
||||
if (ptr == null) return null;
|
||||
return @ptrCast(*T, @alignCast(@alignOf(*T), ptr.?));
|
||||
}
|
||||
|
||||
/// Returns the currently connected monitors.
|
||||
|
|
@ -229,3 +269,15 @@ test "getName" {
|
|||
_ = try m.getName();
|
||||
}
|
||||
}
|
||||
|
||||
test "userPointer" {
|
||||
const monitor = try getPrimary();
|
||||
if (monitor) |m| {
|
||||
var p = try m.getUserPointer(u32);
|
||||
try testing.expect(p == null);
|
||||
var x: u32 = 5;
|
||||
try m.setUserPointer(u32, &x);
|
||||
p = try m.getUserPointer(u32);
|
||||
try testing.expectEqual(p.?.*, 5);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue