diff --git a/src/android/mod.rs b/src/android/mod.rs index 5f05300f..ea930401 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 8076bcca..e0adb7be 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 0c501ff3..05fcf14b 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 {