From 42d38e66ab51c1095d65683494dfabf80552bf92 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Sun, 1 Mar 2015 11:46:58 +0100 Subject: Allow using non-hardware-accelerated pixel formats --- src/lib.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index ecb6980..10727d1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -195,7 +195,7 @@ pub enum MouseCursor { /// Describes a possible format. Unused. #[allow(missing_docs)] -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct PixelFormat { pub hardware_accelerated: bool, pub red_bits: u8, @@ -284,13 +284,10 @@ impl<'a> BuilderAttribs<'a> { where I: Iterator, T: Clone { let mut current_result = None; + let mut current_software_result = None; // TODO: do this more properly for (id, format) in iter { - if !format.hardware_accelerated { - continue; - } - if format.red_bits + format.green_bits + format.blue_bits < self.color_bits.unwrap_or(0) { continue; } @@ -315,9 +312,13 @@ impl<'a> BuilderAttribs<'a> { continue; } - current_result = Some((id, format)); + current_software_result = Some((id.clone(), format.clone())); + if format.hardware_accelerated { + current_result = Some((id, format)); + } } - current_result.expect("Could not find compliant pixel format") + current_result.or(current_software_result) + .expect("Could not find compliant pixel format") } } -- cgit v1.2.3