summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYOSHIOKA Takuma <lo48576@hard-wi.red>2018-03-13 20:16:01 +0900
committerJoe Wilm <jwilm@users.noreply.github.com>2018-03-13 16:43:15 -0700
commit6debc4f3351446417d0c4e38173cd9ef0faa71d5 (patch)
treefd9b0d497170e42efec5354179048f8c204e5109
parent196e60238758a473043ef5df5798c7da25e923d1 (diff)
Try to create window with different SRGB config when failed
This may truly solve #921 (and issue caused by #1178) <https://github.com/jwilm/alacritty/issues/921#issuecomment-372619121>.
-rw-r--r--src/window.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/window.rs b/src/window.rs
index 0f527a4f..42a1785e 100644
--- a/src/window.rs
+++ b/src/window.rs
@@ -183,6 +183,17 @@ impl From<glutin::ContextError> for Error {
}
}
+fn create_gl_window(
+ window: WindowBuilder,
+ event_loop: &EventsLoop,
+ srgb: bool,
+) -> ::std::result::Result<glutin::GlWindow, glutin::CreationError> {
+ let context = ContextBuilder::new()
+ .with_srgb(srgb)
+ .with_vsync(true);
+ ::glutin::GlWindow::new(window, context, event_loop)
+}
+
impl Window {
/// Create a new window
///
@@ -199,10 +210,8 @@ impl Window {
.with_visibility(false)
.with_transparency(true)
.with_decorations(window_config.decorations());
- let context = ContextBuilder::new()
- .with_srgb(true)
- .with_vsync(true);
- let window = ::glutin::GlWindow::new(window, context, &event_loop)?;
+ let window = create_gl_window(window.clone(), &event_loop, false)
+ .or_else(|_| create_gl_window(window, &event_loop, true))?;
window.show();
// Text cursor