Mercurial > projects > dwt-linux
changeset 156:3948d75b8370
Own XError handler that does a segfault for backtrace
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 09 Feb 2008 21:22:22 +0100 |
parents | e4c3c05ade69 |
children | 00cab3126f7f |
files | dwt/widgets/Display.d |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/dwt/widgets/Display.d Sat Feb 09 18:49:26 2008 +0100 +++ b/dwt/widgets/Display.d Sat Feb 09 21:22:22 2008 +0100 @@ -887,17 +887,29 @@ if (Default is null) Default = this; } +private static extern(C) int XErrorHandler( void*, XErrorEvent* ){ + Stdout.formatln ("*** XError" ); + byte* p; + *p = 3; + return 0; +} + synchronized void createDisplay (DeviceData data) { /* Required for g_main_context_wakeup */ if (!OS.g_thread_supported ()) { OS.g_thread_init (null); } OS.gtk_set_locale(); - int cnt = 0; - if (!OS.gtk_init_check (&cnt, null)) { + int cnt = 2; + char*[] args = [ "name".ptr, "--sync".ptr, null ]; + char** a = args.ptr; + if (!OS.gtk_init_check (&cnt, &a )) { DWT.error (DWT.ERROR_NO_HANDLES, null, " [gtk_init_check() failed]"); } + assert( cnt is 1 ); if (OS.GDK_WINDOWING_X11 ()) xDisplay = cast(void*) OS.GDK_DISPLAY (); + + OS.XSetErrorHandler( &Display.XErrorHandler ); char* ptr = OS.gtk_check_version (MAJOR, MINOR, MICRO); if (ptr !is null) { char [] buffer = fromUtf8z(ptr);