diff --git a/dix/events.c b/dix/events.c index c0142ca6c..6a2fff186 100644 --- a/dix/events.c +++ b/dix/events.c @@ -2373,13 +2373,25 @@ WindowHasNewCursor(WindowPtr pWin) PostNewCursor(); } +#ifdef XQUARTZ +#include +extern char *__crashreporter_info__; +extern const char *__crashreporter_info__base; +extern int __crashreporter_info__len; +#endif + _X_EXPORT void NewCurrentScreen(ScreenPtr newScreen, int x, int y) { sprite.hotPhys.x = x; sprite.hotPhys.y = y; - ErrorF("noPanoramiXExtension=%d newScreen=%p\n", noPanoramiXExtension, newScreen); - ErrorF("newScreen->myNum=%d\n", newScreen->myNum); +#ifdef XQUARTZ + /* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */ + snprintf(__crashreporter_info__, __crashreporter_info__len, "%s\n\nNewCurrentScreen debug data\nnoPanoramiXExtension=%d\nnewScreen=%p\nnewScreen->myNum=%d\n", + __crashreporter_info__base, noPanoramiXExtension, newScreen,newScreen->myNum); + ErrorF("NewCurrentScreen debug data\nnoPanoramiXExtension=%d\nnewScreen=%p\nnewScreen->myNum=%d\n", + noPanoramiXExtension, newScreen, newScreen->myNum); +#endif #ifdef PANORAMIX if(!noPanoramiXExtension) { sprite.hotPhys.x += panoramiXdataPtr[newScreen->myNum].x - diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c index 2260a5fc0..72d1b2336 100644 --- a/hw/xquartz/darwin.c +++ b/hw/xquartz/darwin.c @@ -153,8 +153,6 @@ const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]); #define XSERVER_VERSION "?" #endif -const char *__crashreporter_info__ = "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE; - void DDXRingBell(int volume, int pitch, int duration) { // FIXME -- make some noise, yo } diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c index 0eb45d157..6f1704e45 100644 --- a/hw/xquartz/mach-startup/bundle-main.c +++ b/hw/xquartz/mach-startup/bundle-main.c @@ -59,6 +59,18 @@ extern int noPanoramiXExtension; #define DEFAULT_STARTX "/usr/X11/bin/startx" #define DEFAULT_SHELL "/bin/sh" +#ifndef BUILD_DATE +#define BUILD_DATE "" +#endif +#ifndef XSERVER_VERSION +#define XSERVER_VERSION "?" +#endif + +const int __crashreporter_info__len = 4096; +const char *__crashreporter_info__base = "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE; +char __crashreporter_info__buf[4096]; +char *__crashreporter_info__ = __crashreporter_info__buf; + #define DEBUG 1 static int execute(const char *command); @@ -389,7 +401,10 @@ int main(int argc, char **argv, char **envp) { // The server must not run the PanoramiX operations. noPanoramiXExtension = TRUE; - + + /* Setup the initial crasherporter info */ + strlcpy(__crashreporter_info__, __crashreporter_info__base, __crashreporter_info__len); + fprintf(stderr, "X11.app: main(): argc=%d\n", argc); for(i=0; i < argc; i++) { fprintf(stderr, "\targv[%u] = %s\n", (unsigned)i, argv[i]); @@ -397,7 +412,7 @@ int main(int argc, char **argv, char **envp) { listenOnly = TRUE; } } - + mp = checkin_or_register(SERVER_BOOTSTRAP_NAME); if(mp == MACH_PORT_NULL) { fprintf(stderr, "NULL mach service: %s", SERVER_BOOTSTRAP_NAME); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index f71a1a201..9066e0be0 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -131,16 +131,45 @@ RootlessNativeWindowStateChanged (WindowPtr pWin, unsigned int state) pWin->rootlessUnhittable = winRec->is_offscreen; } +#ifdef XQUARTZ +#include +extern char *__crashreporter_info__; +extern const char *__crashreporter_info__base; +extern int __crashreporter_info__len; +#endif + void RootlessNativeWindowMoved (WindowPtr pWin) { xp_box bounds; int sx, sy, err; XID vlist[2]; Mask mask; ClientPtr client, pClient; - RootlessWindowRec *winRec = WINREC(pWin); + RootlessWindowRec *winRec; + +#ifdef XQUARTZ + /* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */ + snprintf(__crashreporter_info__, __crashreporter_info__len, + "%s\n\RootlessNativeWindowMoved debug data\npWin=%p\n", + __crashreporter_info__base, pWin); + ErrorF("RootlessNativeWindowMoved debug data\npWin=%p\n", pWin); +#endif + + winRec = WINREC(pWin); + +#ifdef XQUARTZ + /* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */ + snprintf(__crashreporter_info__, __crashreporter_info__len, "%swinRec=%p\nwinRec->wid=%d\n", __crashreporter_info__, winRec, winRec ? (int)winRec->wid : 0); + ErrorF("winRec=%p\nwinRec->wid=%d\n", winRec, winRec ? (int)winRec->wid : 0); +#endif if (xp_get_window_bounds ((xp_window_id)winRec->wid, &bounds) != Success) return; +#ifdef XQUARTZ + /* We're seeing a crash here, but I'm not sure what's causing it... so putting in some debugging */ + snprintf(__crashreporter_info__, __crashreporter_info__len, "%spWin->drawable.pScreen=%p\npWin->drawable.pScreen->myNum=%d\n", __crashreporter_info__, pWin->drawable.pScreen, pWin->drawable.pScreen ? pWin->drawable.pScreen->myNum : 0); + ErrorF("pWin->drawable.pScreen=%p\npWin->drawable.pScreen->myNum=%d\n", pWin->drawable.pScreen, pWin->drawable.pScreen ? pWin->drawable.pScreen->myNum : 0); +#endif + sx = dixScreenOrigins[pWin->drawable.pScreen->myNum].x + darwinMainScreenX; sy = dixScreenOrigins[pWin->drawable.pScreen->myNum].y + darwinMainScreenY; @@ -153,7 +182,7 @@ void RootlessNativeWindowMoved (WindowPtr pWin) { /* pretend we're the owner of the window! */ err = dixLookupClient(&pClient, pWin->drawable.id, NullClient, DixUnknownAccess); if(err != Success) { - ErrorF("RootlessNativeWindowMoved(): Failed to lookup window: 0x%x\n", pWin->drawable.id); + ErrorF("RootlessNativeWindowMoved(): Failed to lookup window: 0x%x\n", (unsigned int)pWin->drawable.id); return; }