1 // Copyright 2023 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 use std::ffi::c_void;
6 use std::marker::PhantomData;
7 use std::sync::Arc;
8
9 use anyhow::Result;
10 use ash::vk;
11 use base::AsRawDescriptor;
12 use euclid::Size2D;
13 use euclid::UnknownUnit;
14 use vulkano::device::Device;
15 use vulkano::instance::Instance;
16 use vulkano::memory::ExternalMemoryHandleTypes;
17 use vulkano::memory::MemoryImportInfo;
18
19 use super::ApplicationState;
20 use super::ApplicationStateBuilder;
21 use super::Surface;
22 use super::Window;
23 use super::WindowEventLoop;
24
25 pub type NativeWindowType = *mut c_void;
26
27 pub(crate) struct StubWindow;
28
29 impl Window for StubWindow {
create_vulkan_surface(self: Arc<Self>, _instance: Arc<Instance>) -> Result<Arc<Surface>>30 fn create_vulkan_surface(self: Arc<Self>, _instance: Arc<Instance>) -> Result<Arc<Surface>> {
31 unimplemented!();
32 }
33
get_inner_size(&self) -> Result<Size2D<u32, UnknownUnit>>34 fn get_inner_size(&self) -> Result<Size2D<u32, UnknownUnit>> {
35 unimplemented!()
36 }
37 }
38
39 pub struct StubWindowEventLoop<AppState: ApplicationState>(PhantomData<AppState>);
40
41 impl<AppState: ApplicationState> WindowEventLoop<AppState> for StubWindowEventLoop<AppState> {
42 type WindowType = StubWindow;
43
create<Builder>( _parent: NativeWindowType, _initial_window_size: &Size2D<i32, UnknownUnit>, _application_state_builder: Builder, ) -> Result<Self> where Builder: ApplicationStateBuilder<Target = AppState>,44 unsafe fn create<Builder>(
45 _parent: NativeWindowType,
46 _initial_window_size: &Size2D<i32, UnknownUnit>,
47 _application_state_builder: Builder,
48 ) -> Result<Self>
49 where
50 Builder: ApplicationStateBuilder<Target = AppState>,
51 {
52 unimplemented!()
53 }
54
move_window(&self, _pos: &euclid::Box2D<i32, UnknownUnit>) -> Result<()>55 fn move_window(&self, _pos: &euclid::Box2D<i32, UnknownUnit>) -> Result<()> {
56 unimplemented!()
57 }
58
send_event(&self, _event: AppState::UserEvent) -> Result<()>59 fn send_event(&self, _event: AppState::UserEvent) -> Result<()> {
60 unimplemented!()
61 }
62 }
63
create_post_image_external_memory_handle_types() -> ExternalMemoryHandleTypes64 pub(crate) fn create_post_image_external_memory_handle_types() -> ExternalMemoryHandleTypes {
65 unimplemented!()
66 }
67
68 // The ownership of the descriptor is transferred to the returned MemoryImportInfo.
create_post_image_memory_import_info( _memory_descriptor: &dyn AsRawDescriptor, ) -> MemoryImportInfo69 pub(crate) fn create_post_image_memory_import_info(
70 _memory_descriptor: &dyn AsRawDescriptor,
71 ) -> MemoryImportInfo {
72 unimplemented!()
73 }
74
import_semaphore_from_descriptor( _device: &Arc<Device>, _semaphore: vk::Semaphore, _descriptor: &dyn AsRawDescriptor, ) -> vk::Result75 pub(crate) fn import_semaphore_from_descriptor(
76 _device: &Arc<Device>,
77 _semaphore: vk::Semaphore,
78 _descriptor: &dyn AsRawDescriptor,
79 ) -> vk::Result {
80 unimplemented!()
81 }
82