limine_protocol/responses/
framebuffer.rs

1use crate::structures::framebuffer::Framebuffer;
2
3#[repr(C)]
4#[derive(Debug)]
5/// Response to [`FramebufferRequest`]
6pub struct FramebufferResponse {
7    /// The response revision number
8    pub revision: u64,
9    /// The number of [Framebuffer]s in `framebuffers`
10    pub framebuffer_count: u64,
11    /// A pointer to an array of [Framebuffer] pointers
12    pub framebuffers: *mut *mut Framebuffer,
13}
14
15impl FramebufferResponse {
16    /// Get the framebuffer slice
17    /// # Safety
18    /// The pointer must point to a valid array of [Framebuffer]s
19    #[must_use]
20    pub unsafe fn get_framebuffers(&self) -> Option<&[&Framebuffer]> {
21        if self.framebuffers.is_null() {
22            return None;
23        }
24        Some(core::slice::from_raw_parts(
25            self.framebuffers as *const &Framebuffer,
26            self.framebuffer_count.try_into().ok()?,
27        ))
28    }
29}