aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/layout_debug.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2020-02-12 12:24:20 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2020-02-21 11:11:00 +0100
commit67706f9c0b7fdb07c6ba12bf7ce6de557a4e81de (patch)
tree1dc6c4d6bc27168547a8da20d6607f286dcacd54 /components/layout_2020/layout_debug.rs
parent84dd334160ad51b623c42cf637892709ce348de0 (diff)
downloadservo-67706f9c0b7fdb07c6ba12bf7ce6de557a4e81de.tar.gz
servo-67706f9c0b7fdb07c6ba12bf7ce6de557a4e81de.zip
Add fragment debug id
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>) {