color-management-v1: only expose the protocol with vulkan
This commit is contained in:
parent
248eb324a5
commit
fcd2e3ab33
7 changed files with 40 additions and 2 deletions
|
|
@ -56,9 +56,17 @@ impl ColorManagement {
|
|||
jay_color_management::Enabled::handle(tc, id, enabled.clone(), |iv, msg| {
|
||||
iv.set(msg.enabled != 0);
|
||||
});
|
||||
let available = Rc::new(Cell::new(false));
|
||||
jay_color_management::Available::handle(tc, id, available.clone(), |iv, msg| {
|
||||
iv.set(msg.available != 0);
|
||||
});
|
||||
tc.round_trip().await;
|
||||
if enabled.get() {
|
||||
println!("Enabled");
|
||||
print!("Enabled");
|
||||
if !available.get() {
|
||||
print!(" (Unavailable)");
|
||||
}
|
||||
println!();
|
||||
} else {
|
||||
println!("Disabled");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -742,6 +742,10 @@ pub trait GfxContext: Debug {
|
|||
width: i32,
|
||||
height: i32,
|
||||
) -> Result<Rc<dyn GfxBlendBuffer>, GfxError>;
|
||||
|
||||
fn supports_color_management(&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
|
|
|
|||
|
|
@ -363,6 +363,10 @@ impl GfxContext for Context {
|
|||
let buffer = self.0.acquire_blend_buffer(width, height)?;
|
||||
Ok(buffer)
|
||||
}
|
||||
|
||||
fn supports_color_management(&self) -> bool {
|
||||
self.0.device.descriptor_buffer.is_some()
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for Context {
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ impl Global for WpColorManagerV1Global {
|
|||
}
|
||||
|
||||
fn exposed(&self, state: &State) -> bool {
|
||||
state.color_management_enabled.get()
|
||||
state.color_management_available()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,13 @@ impl JayColorManagement {
|
|||
enabled: self.client.state.color_management_enabled.get() as u32,
|
||||
});
|
||||
}
|
||||
|
||||
fn send_available(&self) {
|
||||
self.client.event(Available {
|
||||
self_id: self.id,
|
||||
available: self.client.state.color_management_available() as u32,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl JayColorManagementRequestHandler for JayColorManagement {
|
||||
|
|
@ -35,6 +42,7 @@ impl JayColorManagementRequestHandler for JayColorManagement {
|
|||
|
||||
fn get(&self, _req: Get, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
self.send_enabled();
|
||||
self.send_available();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
10
src/state.rs
10
src/state.rs
|
|
@ -1315,6 +1315,16 @@ impl State {
|
|||
pub fn tray_icon_size(&self) -> i32 {
|
||||
(self.theme.sizes.title_height.get() - 2).max(0)
|
||||
}
|
||||
|
||||
pub fn color_management_available(&self) -> bool {
|
||||
if !self.color_management_enabled.get() {
|
||||
return false;
|
||||
}
|
||||
let Some(ctx) = self.render_ctx.get() else {
|
||||
return false;
|
||||
};
|
||||
ctx.supports_color_management()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
|
|
|
|||
|
|
@ -13,3 +13,7 @@ request set_enabled {
|
|||
event enabled {
|
||||
enabled: u32,
|
||||
}
|
||||
|
||||
event available {
|
||||
available: u32,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue