diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index f0c35f8e0..ada29c435 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -72,6 +72,10 @@ #include "darwin.h" #include "darwinClut8.h" +#ifdef ENABLE_DEBUG_LOG +FILE *debug_log_fp = NULL; +#endif + /* * X server shared global variables */ @@ -648,6 +652,20 @@ void OsVendorInit(void) { if (serverGeneration == 1) { DarwinPrintBanner(); +#ifdef ENABLE_DEBUG_LOG + { + char *home_dir=NULL, *log_file_path=NULL; + home_dir = getenv("HOME"); + if (home_dir) asprintf(&log_file_path, "%s/%s", home_dir, DEBUG_LOG_NAME); + if (log_file_path) { + if (!access(log_file_path, F_OK)) { + debug_log_fp = fopen(log_file_path, "a"); + if (debug_log_fp) ErrorF("Debug logging enabled to %s\n", log_file_path); + } + free(log_file_path); + } + } +#endif } // Find the full path to the keymapping file. diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h index bc96bb091..25bba20e8 100644 --- a/hw/darwin/darwin.h +++ b/hw/darwin/darwin.h @@ -152,4 +152,14 @@ enum { kXDarwinWindowMoved // window has moved on screen }; +#define ENABLE_DEBUG_LOG 1 + +#ifdef ENABLE_DEBUG_LOG +extern FILE *debug_log_fp; +#define DEBUG_LOG_NAME "x11-debug.txt" +#define DEBUG_LOG(msg, args...) if (debug_log_fp) fprintf(debug_log_fp, "%s:%d: " msg, __FUNCTION__, __LINE__, ##args ) +#else +#define DEBUG_LOG(msg, args...) +#endif + #endif /* _DARWIN_H */