From a69ded9c8a77e8177e1bb972043cdd05371c564d Mon Sep 17 00:00:00 2001 From: Emilio Cobos Álvarez Date: Mon, 14 Dec 2015 23:05:07 +0100 Subject: x11: Improve xlib error reporting --- src/api/x11/xdisplay.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'src/api/x11') diff --git a/src/api/x11/xdisplay.rs b/src/api/x11/xdisplay.rs index 2b77d9c..8205c66 100644 --- a/src/api/x11/xdisplay.rs +++ b/src/api/x11/xdisplay.rs @@ -23,24 +23,18 @@ pub struct XConnection { unsafe impl Send for XConnection {} unsafe impl Sync for XConnection {} +pub type XErrorHandler = Option libc::c_int>; + impl XConnection { - pub fn new() -> Result { + pub fn new(error_handler: XErrorHandler) -> Result { // opening the libraries let xlib = try!(ffi::Xlib::open()); let xcursor = try!(ffi::Xcursor::open()); let xf86vmode = try!(ffi::Xf86vmode::open()); let xinput2 = try!(ffi::XInput2::open()); - unsafe extern "C" fn x_error_callback(_: *mut ffi::Display, event: *mut ffi::XErrorEvent) - -> libc::c_int - { - println!("[glutin] x error code={} major={} minor={}!", (*event).error_code, - (*event).request_code, (*event).minor_code); - 0 - } - unsafe { (xlib.XInitThreads)() }; - unsafe { (xlib.XSetErrorHandler)(Some(x_error_callback)) }; + unsafe { (xlib.XSetErrorHandler)(error_handler) }; // TODO: use something safer than raw "dlopen" let glx = { -- cgit v1.2.3