Mercurial > mplayer.hg
comparison libvo/x11_common.c @ 4742:a34682347090
added local X11 error handler (call player_exit)
author | alex |
---|---|
date | Sun, 17 Feb 2002 12:34:29 +0000 |
parents | 93d562ad1c22 |
children | b18e61cb457a |
comparison
equal
deleted
inserted
replaced
4741:d3a52470594c | 4742:a34682347090 |
---|---|
133 } | 133 } |
134 return bestvisual_depth; | 134 return bestvisual_depth; |
135 } | 135 } |
136 #endif | 136 #endif |
137 | 137 |
138 static void x11_errorhandler(Display *display, XErrorEvent *event) | |
139 { | |
140 #define MSGLEN 60 | |
141 char msg[MSGLEN]; | |
142 | |
143 XGetErrorText(display, event->error_code, &msg, MSGLEN); | |
144 | |
145 printf("X11 error: %s\n", msg); | |
146 | |
147 if (verbose) | |
148 { | |
149 printf("Type: %x, display: %x, resourceid: %x, serial: %x\n", | |
150 event->type, event->display, event->resourceid, event->serial); | |
151 printf("Error code: %x, request code: %x, minor code: %x\n", | |
152 event->error_code, event->request_code, event->minor_code); | |
153 } | |
154 | |
155 exit_player("X11 error"); | |
156 #undef MSGLEN | |
157 } | |
138 | 158 |
139 int vo_init( void ) | 159 int vo_init( void ) |
140 { | 160 { |
141 // int mScreen; | 161 // int mScreen; |
142 int depth, bpp; | 162 int depth, bpp; |
238 if (*mDisplayName==':') mLocalDisplay=1; else mLocalDisplay=0; | 258 if (*mDisplayName==':') mLocalDisplay=1; else mLocalDisplay=0; |
239 printf("vo: X11 running at %dx%d with depth %d and %d bits/pixel (\"%s\" => %s display)\n", | 259 printf("vo: X11 running at %dx%d with depth %d and %d bits/pixel (\"%s\" => %s display)\n", |
240 vo_screenwidth,vo_screenheight, | 260 vo_screenwidth,vo_screenheight, |
241 depth, vo_depthonscreen, | 261 depth, vo_depthonscreen, |
242 mDisplayName,mLocalDisplay?"local":"remote"); | 262 mDisplayName,mLocalDisplay?"local":"remote"); |
263 | |
264 XSetErrorHandler(x11_errorhandler); | |
265 | |
243 return 1; | 266 return 1; |
244 } | 267 } |
245 | 268 |
246 | 269 |
247 #include "../linux/keycodes.h" | 270 #include "../linux/keycodes.h" |
385 } | 408 } |
386 #endif | 409 #endif |
387 | 410 |
388 int vo_x11_uninit(Display *display, Window window) | 411 int vo_x11_uninit(Display *display, Window window) |
389 { | 412 { |
413 XSetErrorHandler(NULL); | |
414 | |
390 #ifdef HAVE_NEW_GUI | 415 #ifdef HAVE_NEW_GUI |
391 /* destroy window only if it's not controlled by GUI */ | 416 /* destroy window only if it's not controlled by GUI */ |
392 if (vo_window == None) | 417 if (vo_window == None) |
393 #endif | 418 #endif |
394 { | 419 { |