use Diplomat for FFI #4
17
src/lib.rs
17
src/lib.rs
|
|
@ -250,8 +250,8 @@ pub async fn init_gpu_inner<E: Error + 'static>(
|
|||
mod ffi {
|
||||
use std::{num::NonZero, ptr::NonNull};
|
||||
|
||||
use crate::init_gpu_inner;
|
||||
use glam::{UVec2, uvec2};
|
||||
use crate::{Gpu, init_gpu_inner};
|
||||
use glam::uvec2;
|
||||
use wgpu::rwh::{RawDisplayHandle, RawWindowHandle, XcbDisplayHandle, XcbWindowHandle};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
|
|
@ -263,11 +263,10 @@ mod ffi {
|
|||
pub cam_fovy: f32,
|
||||
}
|
||||
|
||||
unsafe fn create_viewport(
|
||||
unsafe fn create_gpu(
|
||||
display: impl Into<RawDisplayHandle>,
|
||||
window: impl Into<RawWindowHandle>,
|
||||
size: UVec2,
|
||||
) -> crate::Core {
|
||||
) -> Gpu {
|
||||
let target = wgpu::SurfaceTargetUnsafe::RawHandle {
|
||||
raw_display_handle: display.into(),
|
||||
raw_window_handle: window.into(),
|
||||
|
|
@ -276,7 +275,7 @@ mod ffi {
|
|||
instance.create_surface_unsafe(target)
|
||||
}))
|
||||
.unwrap();
|
||||
crate::Core::new(gpu, size)
|
||||
gpu
|
||||
}
|
||||
|
||||
#[diplomat::opaque_mut]
|
||||
|
|
@ -287,9 +286,9 @@ mod ffi {
|
|||
let display =
|
||||
XcbDisplayHandle::new(Some(NonNull::new(connection as *mut _).unwrap()), 0);
|
||||
let window = XcbWindowHandle::new(NonZero::new(window).unwrap());
|
||||
Box::new(Self(unsafe {
|
||||
create_viewport(display, window, uvec2(width, height))
|
||||
}))
|
||||
let gpu = unsafe { create_gpu(display, window) };
|
||||
let size = uvec2(width, height);
|
||||
Box::new(Self(crate::Core::new(gpu, size)))
|
||||
}
|
||||
|
||||
pub fn configure(&mut self, width: u32, height: u32) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user