diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2023-10-11 08:21:10 +1300 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2023-10-11 08:21:10 +1300 |
commit | 8e08d723ff7a853f2b10dc0f1408911d5801cea8 (patch) | |
tree | 50efd2967e93f8bc1009f242a405ec18335f0aa6 /src/window | |
parent | a6e97019bd53e4478c846f8f636c18ecb53bece2 (diff) | |
download | phosphor-8e08d723ff7a853f2b10dc0f1408911d5801cea8.zip |
Rewrite phosphor
This has been a long-awaited task, the code has been accumulating small
changes for a while now. This commit consolidates all these changes in
order to make the code more readable and maintainable for the future.
Notable changes:
- Remove the concept of a ProgramController
- Remove all of the dead OpenGL stub code
- Update winit to version 28.1, from 27.4
- Use softbuffer for writing pixels to the native display server
Diffstat (limited to 'src/window')
-rw-r--r-- | src/window/x11.rs | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/src/window/x11.rs b/src/window/x11.rs deleted file mode 100644 index d4bcbe4..0000000 --- a/src/window/x11.rs +++ /dev/null @@ -1,66 +0,0 @@ -use crate::window::GraphicsContext; -use buffer::Buffer; -use geometry::HasDimensions; -use raw_window_handle::XlibHandle; -use std::os::raw::{c_char, c_uint}; -use x11_dl::xlib::{Display, Visual, Xlib, ZPixmap, GC}; - -pub struct X11GraphicsContext { - handle: XlibHandle, - lib: Xlib, - gc: GC, - visual: *mut Visual, - depth: i32, -} - -impl X11GraphicsContext { - pub unsafe fn new(handle: XlibHandle) -> Self { - let lib = match Xlib::open() { - Ok(lib) => lib, - Err(e) => panic!("{:?}", e), - }; - let screen = (lib.XDefaultScreen)(handle.display as *mut Display); - let gc = (lib.XDefaultGC)(handle.display as *mut Display, screen); - let visual = (lib.XDefaultVisual)(handle.display as *mut Display, screen); - let depth = (lib.XDefaultDepth)(handle.display as *mut Display, screen); - - Self { handle, lib, gc, visual, depth } - } -} - -impl GraphicsContext for X11GraphicsContext { - unsafe fn blit(&mut self, buffer: &Buffer) { - let array = buffer.as_u32_slice(); - let dimensions = buffer.dimensions(); - //create image - let image = (self.lib.XCreateImage)( - self.handle.display as *mut Display, - self.visual, - self.depth as u32, - ZPixmap, - 0, - (array.as_ptr()) as *mut c_char, - dimensions.width as u32, - dimensions.height as u32, - 32, - (dimensions.width * 4) as i32, - ); - - //push image to window - (self.lib.XPutImage)( - self.handle.display as *mut Display, - self.handle.window, - self.gc, - image, - 0, - 0, - 0, - 0, - dimensions.width as c_uint, - dimensions.height as c_uint, - ); - - (*image).data = std::ptr::null_mut(); - (self.lib.XDestroyImage)(image); - } -} |