more changes for X11.app

This commit is contained in:
Ben Byer 2007-02-26 19:39:26 -08:00
parent fa06e11f97
commit 154d2c13f4
2 changed files with 119 additions and 12 deletions

View File

@ -25,11 +25,39 @@ libdarwinShared_a_SOURCES = darwin.c \
darwinKeyboard.c \
$(darwin_XINPUT_SRCS)
bin_PROGRAMS = XDarwin
bin_PROGRAMS = XDarwin Xquartz
XDarwin_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c
Xquartz_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c \
apple/X11Application.m \
apple/X11Controller.m \
quartz/XServer.m \
quartz/Preferences.m \
quartz/applewm.c \
quartz/keysym2ucs.c \
quartz/pseudoramiX.c \
quartz/quartz.c \
quartz/quartzAudio.c \
quartz/quartzCocoa.m \
quartz/quartzKeyboard.c \
quartz/quartzPasteboard.c \
quartz/quartzStartup.c \
quartz/xpr/appledri.c \
quartz/xpr/dri.c \
quartz/xpr/xprAppleWM.c \
quartz/xpr/xprCursor.c \
quartz/xpr/xprFrame.c \
quartz/xpr/xprScreen.c \
quartz/xpr/x-hash.c \
quartz/xpr/x-hook.c \
quartz/xpr/x-list.c
XDarwin_LDADD = \
$(top_builddir)/dix/dixfonts.lo \
$(top_builddir)/dix/libdix.la \
@ -59,12 +87,48 @@ XDarwin_LDADD = \
@XORG_LIBS@ \
-lXau -lXdmcp -lXfont -lfreetype
Xquartz_LDADD = \
$(top_builddir)/dix/dixfonts.lo \
$(top_builddir)/dix/libdix.la \
$(top_builddir)/os/libos.la \
./libdarwinShared.a \
$(top_builddir)/dix/libxpstubs.la \
$(top_builddir)/miext/shadow/libshadow.la \
$(top_builddir)/fb/libfb.la \
$(top_builddir)/composite/libcomposite.la \
$(top_builddir)/damageext/libdamageext.la \
$(top_builddir)/miext/damage/libdamage.la \
$(top_builddir)/xfixes/libxfixes.la \
$(top_builddir)/miext/cw/libcw.la \
$(top_builddir)/Xext/libXext.la \
$(top_builddir)/xkb/libxkb.la \
$(top_builddir)/xkb/libxkbstubs.la \
$(top_builddir)/Xi/libXi.la \
$(top_builddir)/dbe/libdbe.la \
$(top_builddir)/record/librecord.la \
$(top_builddir)/XTrap/libxtrap.la \
$(top_builddir)/miext/rootless/librootless.la \
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
$(top_builddir)/miext/rootless/accel/librlAccel.la \
@XORG_LIBS@ \
-lXau -lXdmcp -lXfont -lfreetype -lXplugin
XDarwin_LDFLAGS = \
-XCClinker -Objc \
-Wl,-u,_miDCInitialize \
-Wl,-framework,IOKit
-XCClinker -Objc \
-Wl,-u,_miDCInitialize \
-Wl,-framework,IOKit
Xquartz_LDFLAGS = \
-XCClinker -Objc \
-Wl,-u,_miDCInitialize \
-Wl,-framework,Carbon \
-Wl,-framework,ApplicationServices \
-Wl,-framework,Cocoa \
-Wl,-framework,CoreAudio \
-Wl,-framework,IOKit
XDarwin_CFLAGS = -DINXDARWIN
Xquartz_CFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API -DHAVE_XORG_CONFIG_H
if XQUARTZ
macosdir = $(darwinappdir)/Contents/MacOS
@ -72,6 +136,10 @@ macosdir = $(darwinappdir)/Contents/MacOS
DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
macos_PROGRAMS = XDarwinApp
macos_SCRIPTS = x11app
x11app:
cd apple && xcodebuild
XDarwinApp_SOURCES = \
$(top_srcdir)/fb/fbcmap.c \
@ -248,6 +316,7 @@ install-data-hook: $(HOOK_TARGETS)
xquartz-install-hook:
mv $(DESTDIR)$(macosdir)/XDarwinApp $(DESTDIR)$(macosdir)/XDarwin
cd apple && xcodebuild install
EXTRA_DIST = \
darwin.c \

View File

@ -38,11 +38,22 @@
#include "opaque.h"
#include "micmap.h"
#include <assert.h>
int NSApplicationMain(int argc, char *argv[]);
char **envpGlobal; // argcGlobal and argvGlobal
// are from dix/globals.c
#ifdef INX11APP
void X11ControllerMain(int argc, char *argv[], void (*server_thread) (void *), void *server_arg);
void GlxExtensionInit(void);
void GlxWrapInitVisuals(miInitVisualsProcPtr *);
static void server_thread (void *arg) {
extern int main (int argc, char **argv, char **envp);
exit (main (argcGlobal, argvGlobal, envpGlobal));
}
#else
int NSApplicationMain(int argc, char *argv[]);
// GLX bundle function pointers
typedef void (*GlxExtensionInitPtr)(void);
static GlxExtensionInitPtr GlxExtensionInit = NULL;
@ -55,6 +66,7 @@ typedef Bool (*QuartzModeBundleInitPtr)(void);
void * __DarwinglXMesaProvider = NULL;
typedef void (*GlxPushProviderPtr)(void *);
GlxPushProviderPtr GlxPushProvider = NULL;
#endif
/*
* DarwinHandleGUI
@ -74,7 +86,9 @@ void DarwinHandleGUI(
int fd[2];
if (been_here) {
#ifdef INXDARWINAPP
QuartzReadPreferences();
#endif
return;
}
been_here = TRUE;
@ -109,11 +123,27 @@ void DarwinHandleGUI(
}
}
#ifdef INX11APP
/* Initially I ran the X server on the main thread, and received
events on the second thread. But now we may be using Carbon,
that needs to run on the main thread. (Otherwise, when it's
prebound, it will initialize itself on the wrong thread)
grr.. but doing that means that if the X thread gets scheduled
before the main thread when we're _not_ prebound, things fail,
so initialize by hand. */
extern void _InitHLTB(void);
_InitHLTB();
X11ControllerMain(argc, argv, server_thread, NULL);
#else
main_exit = NSApplicationMain(argc, argv);
#endif
exit(main_exit);
}
#ifndef INX11APP
/*
* QuartzLoadDisplayBundle
* Try to load the appropriate bundle containing the back end display code.
@ -239,15 +269,21 @@ static void LoadGlxBundle(void)
CFRelease(bundleURL);
}
#else
Bool QuartzLoadDisplayBundle(const char *dpyBundleName)
{
return TRUE;
}
#endif
/*
* DarwinGlxExtensionInit
* Initialize the GLX extension.
*/
void DarwinGlxPushProvider(void *impl)
{
#ifndef INX11APP
if (!GlxExtensionInit)
LoadGlxBundle();
#endif
GlxPushProvider(impl);
}
@ -258,9 +294,10 @@ void DarwinGlxPushProvider(void *impl)
*/
void DarwinGlxExtensionInit(void)
{
#ifndef INX11APP
if (!GlxExtensionInit)
LoadGlxBundle();
#endif
GlxExtensionInit();
}
@ -271,9 +308,10 @@ void DarwinGlxExtensionInit(void)
void DarwinGlxWrapInitVisuals(
miInitVisualsProcPtr *procPtr)
{
#ifndef INX11APP
if (!GlxWrapInitVisuals)
LoadGlxBundle();
#endif
GlxWrapInitVisuals(procPtr);
}