Mercurial > mplayer.hg
changeset 4742:a34682347090
added local X11 error handler (call player_exit)
author | alex |
---|---|
date | Sun, 17 Feb 2002 12:34:29 +0000 |
parents | d3a52470594c |
children | 171dcc22b607 |
files | libvo/x11_common.c |
diffstat | 1 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/x11_common.c Sun Feb 17 12:22:01 2002 +0000 +++ b/libvo/x11_common.c Sun Feb 17 12:34:29 2002 +0000 @@ -135,6 +135,26 @@ } #endif +static void x11_errorhandler(Display *display, XErrorEvent *event) +{ +#define MSGLEN 60 + char msg[MSGLEN]; + + XGetErrorText(display, event->error_code, &msg, MSGLEN); + + printf("X11 error: %s\n", msg); + + if (verbose) + { + printf("Type: %x, display: %x, resourceid: %x, serial: %x\n", + event->type, event->display, event->resourceid, event->serial); + printf("Error code: %x, request code: %x, minor code: %x\n", + event->error_code, event->request_code, event->minor_code); + } + + exit_player("X11 error"); +#undef MSGLEN +} int vo_init( void ) { @@ -240,6 +260,9 @@ vo_screenwidth,vo_screenheight, depth, vo_depthonscreen, mDisplayName,mLocalDisplay?"local":"remote"); + + XSetErrorHandler(x11_errorhandler); + return 1; } @@ -387,6 +410,8 @@ int vo_x11_uninit(Display *display, Window window) { + XSetErrorHandler(NULL); + #ifdef HAVE_NEW_GUI /* destroy window only if it's not controlled by GUI */ if (vo_window == None)