diff --git a/configure.ac b/configure.ac index 3c9aa04a2..1eaf6ad27 100644 --- a/configure.ac +++ b/configure.ac @@ -70,11 +70,6 @@ AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h]) -AC_CHECK_PROG(HAVE_LAUNCHD, [launchd], [yes], []) -if test "x$HAVE_LAUNCHD" = xyes; then - AC_DEFINE(HAS_LAUNCHD, 1, [launchd support available]) -fi - dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_BIGENDIAN([ENDIAN="X_BIG_ENDIAN"], [ENDIAN="X_LITTLE_ENDIAN"]) @@ -464,6 +459,8 @@ AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir [ APPLE_APPLICATIONS_DIR="${withval}" ]. [ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ]) +AC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto]) + AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]), [BUILDDOCS=$enableval], [BUILDDOCS=no]) @@ -1613,7 +1610,7 @@ if test "X$XQUARTZ" = Xauto; then LDFLAGS=$save_LDFLAGS]) if test "X$xorg_cv_Carbon_framework" = Xyes; then - AC_DEFINE([DARWIN_WITH_QUARTZ],[1],[Have Quartz]) + AC_DEFINE([XQUARTZ],[1],[Have Quartz]) XQUARTZ=yes else XQUARTZ=no @@ -1649,7 +1646,7 @@ if test "x$XQUARTZ" = xyes; then AC_SUBST([DARWIN_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) AC_SUBST([APPLE_APPLICATIONS_DIR]) - CFLAGS="${CFLAGS} -DHAVE_LAUNCHD -D__DARWIN__ -DDARWIN_WITH_QUARTZ -DROOTLESS_WORKAROUND" + CFLAGS="${CFLAGS} -D__DARWIN__ -DROOTLESS_WORKAROUND" PLIST_VERSION_STRING=$PACKAGE_VERSION AC_SUBST([PLIST_VERSION_STRING]) PLIST_VENDOR_WEB=$VENDOR_WEB @@ -1671,6 +1668,23 @@ if test "x$XQUARTZ" = xyes; then DGA=no fi fi + +if test "x$LAUNCHD" = xauto; then + # Do we want to have this default to on for Xquartz builds only or any time we have launchd (like Xnest or Xvfb on OS-X) + #AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no]) + AC_MSG_CHECKING([whether to support launchd]) + if test "x$XQUARTZ" = xyes ; then + LAUNCHD=yes + else + LAUNCHD=no + fi + AC_MSG_RESULT([$LAUNCHD]) +fi + +if test "x$LAUNCHD" = xyes ; then + AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available]) +fi + # Support for objc in autotools is minimal and not documented. OBJC='$(CC)' OBJCLD='$(CCLD)' @@ -2000,17 +2014,6 @@ hw/xgl/glxext/module/Makefile hw/xnest/Makefile hw/xwin/Makefile hw/darwin/Makefile -hw/darwin/bundle/Makefile -hw/darwin/bundle/Dutch.lproj/Makefile -hw/darwin/bundle/English.lproj/Makefile -hw/darwin/bundle/French.lproj/Makefile -hw/darwin/bundle/German.lproj/Makefile -hw/darwin/bundle/Japanese.lproj/Makefile -hw/darwin/bundle/Portuguese.lproj/Makefile -hw/darwin/bundle/Spanish.lproj/Makefile -hw/darwin/bundle/Swedish.lproj/Makefile -hw/darwin/bundle/ko.lproj/Makefile -hw/darwin/iokit/Makefile hw/darwin/quartz/Makefile hw/darwin/quartz/cr/Makefile hw/darwin/quartz/fullscreen/Makefile diff --git a/dix/main.c b/dix/main.c index 586b800d0..50dbb6767 100644 --- a/dix/main.c +++ b/dix/main.c @@ -256,10 +256,15 @@ main(int argc, char *argv[], char *envp[]) PrinterInitGlobals(); #endif +#ifdef XQUARTZ /* Quartz support on Mac OS X requires that the Cocoa event loop be in * the main thread. This allows the X server main to be called again * from another thread. */ -#ifdef DARWIN_WITH_QUARTZ + + /* TODO: Put some runtime conditioning on this, so it doesn't get + * executed by Xvfb, Xnest, Xfake, Xephyr, etc when built at the same + * time as Xquartz + */ DarwinHandleGUI(argc, argv, envp); #endif diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index e83f04d11..e23a3d143 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -1,5 +1,5 @@ AM_CFLAGS = @XORG_CFLAGS@ -AM_CPPFLAGS = @XORG_INCS@ -I../../miext/rootless -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" -DHAVE_XORG_CONFIG_H -DXFree86Server +AM_CPPFLAGS = @XORG_INCS@ -I../../miext/rootless -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" -DHAVE_XORG_CONFIG_H -DXFree86Server -DINXQUARTZ SUBDIRS = quartz utils diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index 52fd17046..f0c35f8e0 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -836,14 +836,11 @@ void ddxUseMsg( void ) ErrorF("-keymap : read the keymapping from a file instead of the kernel.\n"); ErrorF("-version : show the server version.\n"); ErrorF("\n"); -#ifdef DARWIN_WITH_QUARTZ - ErrorF("Quartz modes:\n"); + ErrorF("Quartz modes (Experimental / In Development):\n"); ErrorF("-fullscreen : run full screen in parallel with Mac OS X window server.\n"); ErrorF("-rootless : run rootless inside Mac OS X window server.\n"); - ErrorF("-quartz : use default Mac OS X window server mode\n"); ErrorF("\n"); ErrorF("Options ignored in rootless mode:\n"); -#endif ErrorF("-size : use a screen resolution of x .\n"); ErrorF("-depth <8,15,24> : use this bit depth.\n"); ErrorF("-refresh : use a monitor refresh rate of Hz.\n"); diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am index 5a78bfbcf..26bc8ebb9 100644 --- a/hw/darwin/quartz/Makefile.am +++ b/hw/darwin/quartz/Makefile.am @@ -2,7 +2,7 @@ noinst_LIBRARIES = libXQuartz.a AM_CFLAGS = @XORG_CFLAGS@ AM_OBJCFLAGS = @XORG_CFLAGS@ -AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ -DXBINDIR=\"${bindir}\" -DINXQUARTZ -DHAS_KL_API -DHAVE_XORG_CONFIG_H +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ -DXBINDIR=\"${bindir}\" -DHAS_KL_API -DHAVE_XORG_CONFIG_H SUBDIRS = cr fullscreen xpr diff --git a/hw/darwin/quartz/applewm.c b/hw/darwin/quartz/applewm.c index 78cf9df13..2272a70c1 100644 --- a/hw/darwin/quartz/applewm.c +++ b/hw/darwin/quartz/applewm.c @@ -445,11 +445,7 @@ ProcAppleWMSetWindowMenu( break; } } -#ifdef INXQUARTZ X11ApplicationSetWindowMenu (nitems, items, shortcuts); -#else - QuartzSetWindowMenu (nitems, items, shortcuts); -#endif free(items); free(shortcuts); @@ -464,12 +460,7 @@ ProcAppleWMSetWindowMenuCheck( REQUEST(xAppleWMSetWindowMenuCheckReq); REQUEST_SIZE_MATCH(xAppleWMSetWindowMenuCheckReq); -#ifdef INXQUARTZ X11ApplicationSetWindowMenuCheck (stuff->index); -#else - QuartzMessageMainThread(kQuartzSetWindowMenuCheck, &stuff->index, - sizeof(stuff->index)); -#endif return (client->noClientException); } @@ -480,11 +471,7 @@ ProcAppleWMSetFrontProcess( { REQUEST_SIZE_MATCH(xAppleWMSetFrontProcessReq); -#ifdef INXQUARTZ X11ApplicationSetFrontProcess(); -#else - QuartzMessageMainThread(kQuartzSetFrontProcess, NULL, 0); -#endif return (client->noClientException); } @@ -526,12 +513,7 @@ ProcAppleWMSetCanQuit( REQUEST_SIZE_MATCH(xAppleWMSetCanQuitReq); -#ifdef INXQUARTZ X11ApplicationSetCanQuit(stuff->state); -#else - QuartzMessageMainThread(kQuartzSetCanQuit, &stuff->state, - sizeof(stuff->state)); -#endif return (client->noClientException); } diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index c0666e64f..7ba452cec 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -185,12 +185,8 @@ void DarwinModeInitInput( int argc, char **argv ) { -#ifdef INXQUARTZ X11ApplicationSetCanQuit(1); X11ApplicationServerReady(); -#else - QuartzMessageMainThread(kQuartzServerStarted, NULL, 0); -#endif // Do final display mode specific initialization before handling events if (quartzProcs->InitInput) quartzProcs->InitInput(argc, argv); @@ -354,9 +350,6 @@ static void QuartzHide(void) } } quartzServerVisible = FALSE; -#ifndef INXQUARTZ - QuartzMessageMainThread(kQuartzServerHidden, NULL, 0); -#endif } diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m index 2e7b86b25..c5e6e5c86 100644 --- a/hw/darwin/quartz/quartzCocoa.m +++ b/hw/darwin/quartz/quartzCocoa.m @@ -45,63 +45,12 @@ #include -#ifndef INXQUARTZ -#import "Preferences.h" -#endif #include "pseudoramiX.h" extern void FatalError(const char *, ...); extern char *display; extern int noPanoramiXExtension; -#ifndef INXQUARTZ -/* - * QuartzReadPreferences - * Read the user preferences from the Cocoa front end. - */ -void QuartzReadPreferences(void) -{ - char *fileString; - - darwinFakeButtons = [Preferences fakeButtons]; - darwinFakeMouse2Mask = [Preferences button2Mask]; - darwinFakeMouse3Mask = [Preferences button3Mask]; - darwinMouseAccelChange = [Preferences mouseAccelChange]; - quartzUseSysBeep = [Preferences systemBeep]; - quartzEnableKeyEquivalents = [Preferences enableKeyEquivalents]; - - // quartzRootless has already been set - if (quartzRootless) { - // Use PseudoramiX instead of Xinerama - noPanoramiXExtension = TRUE; - noPseudoramiXExtension = ![Preferences xinerama]; - - quartzUseAGL = [Preferences useAGL]; - } else { - noPanoramiXExtension = ![Preferences xinerama]; - noPseudoramiXExtension = TRUE; - - // Full screen can't use AGL for GLX - quartzUseAGL = FALSE; - } - - if ([Preferences useKeymapFile]) { - fileString = (char *) [[Preferences keymapFile] lossyCString]; - darwinKeymapFile = (char *) malloc(strlen(fileString)+1); - if (! darwinKeymapFile) - FatalError("malloc failed in QuartzReadPreferences()!\n"); - strcpy(darwinKeymapFile, fileString); - } - - display = (char *) malloc(8); - if (! display) - FatalError("malloc failed in QuartzReadPreferences()!\n"); - snprintf(display, 8, "%i", [Preferences display]); - - darwinDesiredDepth = [Preferences depth] - 1; -} -#endif - /* * QuartzWriteCocoaPasteboard * Write text to the Mac OS X pasteboard. @@ -165,19 +114,6 @@ char *QuartzReadCocoaPasteboard(void) int QuartzFSUseQDCursor( int depth) // screen depth { -#ifndef INXQUARTZ - switch ([Preferences useQDCursor]) { - case qdCursor_Always: - return TRUE; - case qdCursor_Never: - return FALSE; - case qdCursor_Not8Bit: - if (depth > 8) - return TRUE; - else - return FALSE; - } -#endif return TRUE; } diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c index f62779048..583941d08 100644 --- a/hw/darwin/quartz/quartzStartup.c +++ b/hw/darwin/quartz/quartzStartup.c @@ -40,19 +40,6 @@ char **envpGlobal; // argcGlobal and argvGlobal // are from dix/globals.c -#ifndef INXQUARTZ -int NSApplicationMain(int argc, char *argv[]); - -// GLX bundle function pointers -void * __DarwinglXMesaProvider = NULL; -typedef void (*GlxPushProviderPtr)(void *); -GlxPushProviderPtr GlxPushProvider = NULL; -typedef void (*GlxExtensionInitPtr)(void); -typedef void (*GlxWrapInitVisualsPtr)(miInitVisualsProcPtr *); -typedef Bool (*QuartzModeBundleInitPtr)(void); -static GlxExtensionInitPtr GlxExtensionInit = NULL; -static GlxWrapInitVisualsPtr GlxWrapInitVisuals = NULL; -#else void X11ControllerMain(int argc, char *argv[], void (*server_thread) (void *), void *server_arg); void GlxExtensionInit(void); @@ -63,7 +50,6 @@ static void server_thread (void *arg) { exit (main (argcGlobal, argvGlobal, envpGlobal)); } -#endif /* * DarwinHandleGUI @@ -83,9 +69,6 @@ void DarwinHandleGUI( int fd[2]; if (been_here) { -#ifndef INXQUARTZ - QuartzReadPreferences(); -#endif return; } been_here = TRUE; @@ -120,14 +103,10 @@ void DarwinHandleGUI( } } -#ifndef INXQUARTZ - main_exit = NSApplicationMain(argc, argv); -#else extern void _InitHLTB(void); _InitHLTB(); X11ControllerMain(argc, argv, server_thread, NULL); -#endif exit(main_exit); } @@ -138,54 +117,6 @@ void DarwinHandleGUI( Bool QuartzLoadDisplayBundle( const char *dpyBundleName) { -#ifndef INXQUARTZ - CFBundleRef mainBundle; - CFStringRef bundleName; - CFURLRef bundleURL; - CFBundleRef dpyBundle; - QuartzModeBundleInitPtr bundleInit; - - // Get the main bundle for the application - mainBundle = CFBundleGetMainBundle(); - - // Make CFString from bundle name - bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - dpyBundleName, - kCFStringEncodingASCII, - kCFAllocatorNull); - - // Look for the appropriate bundle in the main bundle - bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName, - NULL, NULL); - if (!bundleURL) { - ErrorF("Could not find display mode bundle %s.\n", dpyBundleName); - return FALSE; - } - - // Make a bundle instance using the URLRef - dpyBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL); - - if (!CFBundleLoadExecutable(dpyBundle)) { - ErrorF("Could not load display mode bundle %s.\n", dpyBundleName); - return FALSE; - } - - // Lookup the bundle initialization function - bundleInit = (void *) - CFBundleGetFunctionPointerForName(dpyBundle, - CFSTR("QuartzModeBundleInit")); - if (!bundleInit) { - ErrorF("Could not initialize display mode bundle %s.\n", - dpyBundleName); - return FALSE; - } - if (!bundleInit()) - return FALSE; - - // Release the CF objects - CFRelease(bundleName); - CFRelease(bundleURL); -#endif return TRUE; } @@ -234,20 +165,6 @@ static void LoadGlxBundle(void) } // Find the GLX init functions - -#ifndef INXQUARTZ - __DarwinglXMesaProvider = (void *) CFBundleGetDataPointerForName( - glxBundle, CFSTR("__glXMesaProvider")); - - GlxPushProvider = (void *) CFBundleGetFunctionPointerForName( - glxBundle, CFSTR("GlxPushProvider")); - - GlxExtensionInit = (void *) CFBundleGetFunctionPointerForName( - glxBundle, CFSTR("GlxExtensionInit")); - - GlxWrapInitVisuals = (void *) CFBundleGetFunctionPointerForName( - glxBundle, CFSTR("GlxWrapInitVisuals")); -#endif if (!GlxExtensionInit || !GlxWrapInitVisuals) { FatalError("Could not initialize GLX bundle."); } @@ -264,10 +181,6 @@ static void LoadGlxBundle(void) */ void DarwinGlxPushProvider(void *impl) { -#ifndef INXQUARTZ - if (!GlxExtensionInit) - LoadGlxBundle(); -#endif GlxPushProvider(impl); } @@ -277,10 +190,6 @@ void DarwinGlxPushProvider(void *impl) */ void DarwinGlxExtensionInit(void) { -#ifndef INXQUARTZ - if (!GlxExtensionInit) - LoadGlxBundle(); -#endif GlxExtensionInit(); } @@ -291,10 +200,8 @@ void DarwinGlxExtensionInit(void) void DarwinGlxWrapInitVisuals( miInitVisualsProcPtr *procPtr) { -#ifdef INXQUARTZ if (!GlxWrapInitVisuals) LoadGlxBundle(); -#endif GlxWrapInitVisuals(procPtr); } diff --git a/include/dix-config.h.in b/include/dix-config.h.in index 6badccab7..29b917e03 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -130,6 +130,9 @@ /* Define to 1 if launchd is available. */ #undef HAVE_LAUNCHD +/* Have Quartz */ +#undef XQUARTZ + /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM