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| {
|
jay_color_management::Enabled::handle(tc, id, enabled.clone(), |iv, msg| {
|
||||||
iv.set(msg.enabled != 0);
|
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;
|
tc.round_trip().await;
|
||||||
if enabled.get() {
|
if enabled.get() {
|
||||||
println!("Enabled");
|
print!("Enabled");
|
||||||
|
if !available.get() {
|
||||||
|
print!(" (Unavailable)");
|
||||||
|
}
|
||||||
|
println!();
|
||||||
} else {
|
} else {
|
||||||
println!("Disabled");
|
println!("Disabled");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -742,6 +742,10 @@ pub trait GfxContext: Debug {
|
||||||
width: i32,
|
width: i32,
|
||||||
height: i32,
|
height: i32,
|
||||||
) -> Result<Rc<dyn GfxBlendBuffer>, GfxError>;
|
) -> Result<Rc<dyn GfxBlendBuffer>, GfxError>;
|
||||||
|
|
||||||
|
fn supports_color_management(&self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
|
|
||||||
|
|
@ -363,6 +363,10 @@ impl GfxContext for Context {
|
||||||
let buffer = self.0.acquire_blend_buffer(width, height)?;
|
let buffer = self.0.acquire_blend_buffer(width, height)?;
|
||||||
Ok(buffer)
|
Ok(buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn supports_color_management(&self) -> bool {
|
||||||
|
self.0.device.descriptor_buffer.is_some()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for Context {
|
impl Drop for Context {
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ impl Global for WpColorManagerV1Global {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn exposed(&self, state: &State) -> bool {
|
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,
|
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 {
|
impl JayColorManagementRequestHandler for JayColorManagement {
|
||||||
|
|
@ -35,6 +42,7 @@ impl JayColorManagementRequestHandler for JayColorManagement {
|
||||||
|
|
||||||
fn get(&self, _req: Get, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
fn get(&self, _req: Get, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||||
self.send_enabled();
|
self.send_enabled();
|
||||||
|
self.send_available();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
10
src/state.rs
10
src/state.rs
|
|
@ -1315,6 +1315,16 @@ impl State {
|
||||||
pub fn tray_icon_size(&self) -> i32 {
|
pub fn tray_icon_size(&self) -> i32 {
|
||||||
(self.theme.sizes.title_height.get() - 2).max(0)
|
(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)]
|
#[derive(Debug, Error)]
|
||||||
|
|
|
||||||
|
|
@ -13,3 +13,7 @@ request set_enabled {
|
||||||
event enabled {
|
event enabled {
|
||||||
enabled: u32,
|
enabled: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event available {
|
||||||
|
available: u32,
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue