Use surfman with glow bindings (take II) (#35422)

* Reapply "Use surfman with glow bindings (#34328)" (#35402)

This reverts commit 0fed99590a.

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* update surfman

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
Samson 2025-02-13 08:26:38 +01:00 committed by GitHub
parent 48e38bcaa2
commit 610a1c2303
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 69 additions and 97 deletions

View file

@ -570,15 +570,9 @@ macro_rules! define_resource_id {
pub struct $name(nonzero_type!($type));
impl $name {
#[allow(unsafe_code)]
#[inline]
/// Create a new $name.
///
/// # Safety
///
/// Using an invalid OpenGL id may result in undefined behavior.
pub unsafe fn new(id: $type) -> Self {
$name(<nonzero_type!($type)>::new_unchecked(id))
pub fn new(id: nonzero_type!($type)) -> Self {
Self(id)
}
#[inline]
@ -599,10 +593,10 @@ macro_rules! define_resource_id {
D: ::serde::Deserializer<'de>,
{
let id = <$type>::deserialize(deserializer)?;
if id == 0 {
Err(::serde::de::Error::custom("expected a non-zero value"))
if let Some(id) = <nonzero_type!($type)>::new(id) {
Ok($name(id))
} else {
Ok(unsafe { $name::new(id) })
Err(::serde::de::Error::custom("expected a non-zero value"))
}
}
}