From ba7f2a923f769af0d566da2397e7649f57c251f1 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Wed, 18 Feb 2015 08:58:37 +0100 Subject: Don't call MakeCurrent(null, null) when destroying --- src/android/mod.rs | 3 ++- src/win32/mod.rs | 3 ++- src/x11/window/mod.rs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/android/mod.rs b/src/android/mod.rs index 5f05300..ea93040 100644 --- a/src/android/mod.rs +++ b/src/android/mod.rs @@ -358,8 +358,9 @@ impl Drop for Window { use std::ptr; unsafe { + // we don't call MakeCurrent(0, 0) because we are not sure that the context + // is still the current one android_glue::write_log("Destroying gl-init window"); - ffi::egl::MakeCurrent(self.display, ptr::null(), ptr::null(), ptr::null()); ffi::egl::DestroySurface(self.display, self.surface); ffi::egl::DestroyContext(self.display, self.context); ffi::egl::Terminate(self.display); diff --git a/src/win32/mod.rs b/src/win32/mod.rs index 8076bcc..e0adb7b 100644 --- a/src/win32/mod.rs +++ b/src/win32/mod.rs @@ -277,8 +277,9 @@ impl<'a> Iterator for WaitEventsIterator<'a> { impl Drop for Window { fn drop(&mut self) { use std::ptr; + // we don't call MakeCurrent(0, 0) because we are not sure that the context + // is still the current one unsafe { user32::PostMessageW(self.window, winapi::WM_DESTROY, 0, 0); } - unsafe { gl::wgl::MakeCurrent(ptr::null(), ptr::null()); } unsafe { gl::wgl::DeleteContext(self.context as *const libc::c_void); } unsafe { user32::DestroyWindow(self.window); } } diff --git a/src/x11/window/mod.rs b/src/x11/window/mod.rs index 0c501ff..05fcf14 100644 --- a/src/x11/window/mod.rs +++ b/src/x11/window/mod.rs @@ -59,7 +59,8 @@ unsafe impl Sync for Window {} impl Drop for XWindow { fn drop(&mut self) { unsafe { - ffi::glx::MakeCurrent(self.display, 0, ptr::null()); + // we don't call MakeCurrent(0, 0) because we are not sure that the context + // is still the current one ffi::glx::DestroyContext(self.display, self.context); if self.is_fullscreen { -- cgit v1.2.3