aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/layout_debug.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout_2020/layout_debug.rs')
-rw-r--r--components/layout_2020/layout_debug.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/components/layout_2020/layout_debug.rs b/components/layout_2020/layout_debug.rs
index 32ab13fc484..4e28ce8ffeb 100644
--- a/components/layout_2020/layout_debug.rs
+++ b/components/layout_2020/layout_debug.rs
@@ -10,10 +10,15 @@ use serde_json::{to_string, to_value, Value};
use std::cell::RefCell;
use std::fs::File;
use std::io::Write;
+#[cfg(debug_assertions)]
+use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
thread_local!(static STATE_KEY: RefCell<Option<State>> = RefCell::new(None));
+#[cfg(debug_assertions)]
+static DEBUG_ID_COUNTER: AtomicUsize = AtomicUsize::new(0);
+
pub struct Scope;
#[macro_export]
@@ -80,6 +85,12 @@ impl Drop for Scope {
}
}
+/// Generate a unique ID for Fragments.
+#[cfg(debug_assertions)]
+pub fn generate_unique_debug_id() -> u16 {
+ DEBUG_ID_COUNTER.fetch_add(1, Ordering::SeqCst) as u16
+}
+
/// Begin a layout debug trace. If this has not been called,
/// creating debug scopes has no effect.
pub fn begin_trace(root: Arc<FragmentTreeRoot>) {