Change IdCounter to be backed by an AtomicU64

Let's see if anyone complains.
This commit is contained in:
Ivan Molodetskikh
2024-08-31 10:29:06 +03:00
parent 138c2a3bfd
commit b7901579d5
4 changed files with 10 additions and 13 deletions
+2 -2
View File
@@ -37,7 +37,7 @@ pub type IpcOutputMap = HashMap<OutputId, niri_ipc::Output>;
static OUTPUT_ID_COUNTER: IdCounter = IdCounter::new();
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct OutputId(u32);
pub struct OutputId(u64);
impl OutputId {
fn next() -> OutputId {
@@ -45,7 +45,7 @@ impl OutputId {
}
pub fn get(self) -> u64 {
u64::from(self.0)
self.0
}
}
+2 -2
View File
@@ -123,7 +123,7 @@ pub struct OutputId(String);
static WORKSPACE_ID_COUNTER: IdCounter = IdCounter::new();
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct WorkspaceId(u32);
pub struct WorkspaceId(u64);
impl WorkspaceId {
fn next() -> WorkspaceId {
@@ -131,7 +131,7 @@ impl WorkspaceId {
}
pub fn get(self) -> u64 {
u64::from(self.0)
self.0
}
}
+4 -7
View File
@@ -1,11 +1,8 @@
use std::sync::atomic::{AtomicU32, Ordering};
use std::sync::atomic::{AtomicU64, Ordering};
/// Counter that returns unique IDs.
///
/// Under the hood it uses a `u32` that will eventually wrap around. When incrementing it once a
/// second, it will wrap around after about 136 years.
pub struct IdCounter {
value: AtomicU32,
value: AtomicU64,
}
impl IdCounter {
@@ -13,11 +10,11 @@ impl IdCounter {
Self {
// Start from 1 to reduce the possibility that some other code that uses these IDs will
// get confused.
value: AtomicU32::new(1),
value: AtomicU64::new(1),
}
}
pub fn next(&self) -> u32 {
pub fn next(&self) -> u64 {
self.value.fetch_add(1, Ordering::Relaxed)
}
}
+2 -2
View File
@@ -98,7 +98,7 @@ niri_render_elements! {
static MAPPED_ID_COUNTER: IdCounter = IdCounter::new();
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct MappedId(u32);
pub struct MappedId(u64);
impl MappedId {
fn next() -> MappedId {
@@ -106,7 +106,7 @@ impl MappedId {
}
pub fn get(self) -> u64 {
u64::from(self.0)
self.0
}
}