chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] setting a callback in xlib


From: Eduardo Cavazos
Subject: [Chicken-users] setting a callback in xlib
Date: Sat, 07 Mar 2009 00:10:06 -0600
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 SeaMonkey/1.1.11

Hello,

Xlib has a function 'XSetErrorHandler'. You pass a callback to it to specify the new error handler. Here's the relevant code from 'Xlib.h':

----------------------------------------------------------------------
typedef int (*XErrorHandler) (
    Display*            /* display */,
    XErrorEvent*        /* error_event */
);

extern XErrorHandler XSetErrorHandler (
    XErrorHandler       /* handler */
);
----------------------------------------------------------------------

Here's how I'm defining 'XSetErrorHandler' on the Chicken side:

(define XSetErrorHandler
  (foreign-safe-lambda c-pointer XSetErrorHandler
    (function int (c-pointer c-pointer))))

And finally, a test error handler:

(define-external (xerrorhandler (c-pointer dpy) (c-pointer ev)) int
  (display "Error handler called\n"))

If I trigger an X error, I get a pretty wacky error:

    Error: bad argument count - received 134902918 but expected 2: #()

Anywho, do the definitions above look OK? Just wanted to make sure before I debug further...

Thanks!

Ed





reply via email to

[Prev in Thread] Current Thread [Next in Thread]