From 8b0fcf24271764c9fcf7da2f62ae27cbab5b625e Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 26 Oct 2007 14:10:03 -0700 Subject: [PATCH 01/74] added Apple-specific defaults to configure.ac --- configure.ac | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 6c0aa3ab6..64bfb6f97 100644 --- a/configure.ac +++ b/configure.ac @@ -424,18 +424,18 @@ AC_ARG_ENABLE(evi, AS_HELP_STRING([--disable-evi], [Build Extended-Vi AC_ARG_ENABLE(multibuffer, AS_HELP_STRING([--enable-multibuffer], [Build Multibuffer extension (default: disabled)]), [MULTIBUFFER=$enableval], [MULTIBUFFER=no]) AC_ARG_ENABLE(fontcache, AS_HELP_STRING([--enable-fontcache], [Build FontCache extension (default: disabled)]), [FONTCACHE=$enableval], [FONTCACHE=no]) AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes]) -AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes]) +AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--enable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no]) AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes]) AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes]) AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes]) dnl DDXes. AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) -AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto]) -AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes]) +AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no]) +AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: no)]), [XVFB=$enableval], [XVFB=yes]) AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) -AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: auto)]), [XPRINT=$enableval], [XPRINT=auto]) +AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) AC_ARG_ENABLE(xglx, AS_HELP_STRING([--enable-xglx], [Build Xglx xgl module (default: no)]), [XGLX=$enableval], [XGLX=no]) AC_ARG_ENABLE(xegl, AS_HELP_STRING([--enable-xegl], [Build Xegl xgl module (default: no)]), [XEGL=$enableval], [XEGL=no]) @@ -514,7 +514,7 @@ XEXT_LIB='$(top_builddir)/Xext/libXext.la' XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la' dnl Core modules for most extensions, et al. -REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto [kbproto >= 1.0.3]" +REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto [kbproto >= 1.0.3]" REQUIRED_LIBS="xfont xau fontenc" AM_CONDITIONAL(XV, [test "x$XV" = xyes]) From cc9b4723ecdcb4ccc612a166c34433b7c0aa1764 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 26 Oct 2007 15:40:35 -0700 Subject: [PATCH 02/74] added missing file from Apple version of 7.2 --- .../apple/English.lproj/InfoPlist.strings | Bin 0 -> 276 bytes .../apple/English.lproj/Localizable.strings | Bin 0 -> 1094 bytes .../apple/English.lproj/main.nib/classes.nib | 318 +++++ .../apple/English.lproj/main.nib/info.nib | 18 + .../English.lproj/main.nib/keyedobjects.nib | Bin 0 -> 30865 bytes hw/darwin/apple/Info.plist | 35 + hw/darwin/apple/X11.icns | Bin 0 -> 65908 bytes hw/darwin/apple/X11.xcodeproj/project.pbxproj | 344 +++++ hw/darwin/apple/X11Application.h | 104 ++ hw/darwin/apple/X11Application.m | 1131 +++++++++++++++++ hw/darwin/apple/X11Controller.h | 86 ++ hw/darwin/apple/X11Controller.m | 748 +++++++++++ hw/darwin/apple/Xquartz.man | 158 +++ hw/darwin/apple/bundle-main.c | 914 +++++++++++++ .../bundle/Dutch.lproj/Localizable.strings | Bin 1426 -> 1422 bytes hw/darwin/bundle/Dutch.lproj/Makefile.am | 39 + .../bundle/English.lproj/Localizable.strings | Bin 711 -> 1424 bytes hw/darwin/bundle/English.lproj/Makefile.am | 39 + hw/darwin/bundle/French.lproj/Makefile.am | 41 + hw/darwin/bundle/German.lproj/Makefile.am | 39 + hw/darwin/bundle/Info.plist | 66 + hw/darwin/bundle/Japanese.lproj/Makefile.am | 40 + hw/darwin/bundle/Makefile.am | 38 + hw/darwin/bundle/Portuguese.lproj/Makefile.am | 39 + hw/darwin/bundle/Spanish.lproj/Makefile.am | 39 + hw/darwin/bundle/Swedish.lproj/Makefile.am | 39 + hw/darwin/bundle/ko.lproj/Makefile.am | 40 + hw/darwin/iokit/Makefile.am | 17 + hw/darwin/launcher/Info.plist | 30 + hw/darwin/launcher/X11.icns | Bin 0 -> 65908 bytes .../launcher/X11.xcodeproj/project.pbxproj | 297 +++++ hw/darwin/launcher/bundle-main.c | 79 ++ hw/darwin/quartz/Makefile.am | 57 + hw/darwin/quartz/cr/Makefile.am | 21 + hw/darwin/quartz/fullscreen/Makefile.am | 9 + hw/darwin/quartz/xpr/Makefile.am | 30 + hw/darwin/quartz/xpr/appledri.h | 107 ++ hw/darwin/quartz/xpr/appledristr.h | 176 +++ hw/darwin/utils/Makefile.am | 12 + hw/darwin/utils/event_status_driver.h | 133 ++ 40 files changed, 5283 insertions(+) create mode 100644 hw/darwin/apple/English.lproj/InfoPlist.strings create mode 100644 hw/darwin/apple/English.lproj/Localizable.strings create mode 100644 hw/darwin/apple/English.lproj/main.nib/classes.nib create mode 100644 hw/darwin/apple/English.lproj/main.nib/info.nib create mode 100644 hw/darwin/apple/English.lproj/main.nib/keyedobjects.nib create mode 100644 hw/darwin/apple/Info.plist create mode 100644 hw/darwin/apple/X11.icns create mode 100644 hw/darwin/apple/X11.xcodeproj/project.pbxproj create mode 100644 hw/darwin/apple/X11Application.h create mode 100644 hw/darwin/apple/X11Application.m create mode 100644 hw/darwin/apple/X11Controller.h create mode 100644 hw/darwin/apple/X11Controller.m create mode 100644 hw/darwin/apple/Xquartz.man create mode 100644 hw/darwin/apple/bundle-main.c create mode 100644 hw/darwin/bundle/Dutch.lproj/Makefile.am create mode 100644 hw/darwin/bundle/English.lproj/Makefile.am create mode 100644 hw/darwin/bundle/French.lproj/Makefile.am create mode 100644 hw/darwin/bundle/German.lproj/Makefile.am create mode 100644 hw/darwin/bundle/Info.plist create mode 100644 hw/darwin/bundle/Japanese.lproj/Makefile.am create mode 100644 hw/darwin/bundle/Makefile.am create mode 100644 hw/darwin/bundle/Portuguese.lproj/Makefile.am create mode 100644 hw/darwin/bundle/Spanish.lproj/Makefile.am create mode 100644 hw/darwin/bundle/Swedish.lproj/Makefile.am create mode 100644 hw/darwin/bundle/ko.lproj/Makefile.am create mode 100644 hw/darwin/iokit/Makefile.am create mode 100644 hw/darwin/launcher/Info.plist create mode 100644 hw/darwin/launcher/X11.icns create mode 100644 hw/darwin/launcher/X11.xcodeproj/project.pbxproj create mode 100644 hw/darwin/launcher/bundle-main.c create mode 100644 hw/darwin/quartz/Makefile.am create mode 100644 hw/darwin/quartz/cr/Makefile.am create mode 100644 hw/darwin/quartz/fullscreen/Makefile.am create mode 100644 hw/darwin/quartz/xpr/Makefile.am create mode 100644 hw/darwin/quartz/xpr/appledri.h create mode 100644 hw/darwin/quartz/xpr/appledristr.h create mode 100644 hw/darwin/utils/Makefile.am create mode 100644 hw/darwin/utils/event_status_driver.h diff --git a/hw/darwin/apple/English.lproj/InfoPlist.strings b/hw/darwin/apple/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..88e1f04ac78e9f0b14a2b6fa57a4a02ae91d8edd GIT binary patch literal 276 zcmZvXy9&ZU5Jhk8S1c)mn3%>wEHt19Vq;?~c`2F)Nfh+s)w5ez1X*_P?983nv+s`r z`7+w6R-%(`y6B}$DY*yQsv}dYLJgX8Zn@>e6E)7?sV95I{d6v$nIl%LwN|?0PVr^h zGrvTQ7Hm&POYH~HO3di*uZ2v3!NQhL@m^e>XMq} Mw>ec5d~OW%}uNjLkA_dG8|a-XSfl3Up%^@aVHF%fx04FOQ7;2ecM3 z#>T5dYqUZtm1vf&!fw^9YMJGnVy#ns{Qi+yLC;LDL3194end}CjCG?=NT~&VbUNq! z_w%p%dB%3m(pKNoamR*)G~eAec5FsqCJnQ-nL9nlY1_uvpdPfsXMtth_NzGC0=&&; hwvQgB@*R~6nB2tLT~__K + + + + IBClasses + + + CLASS + IBLibraryObjectTemplate + LANGUAGE + ObjC + OUTLETS + + draggedView + NSView + representedObject + NSObject + + SUPERCLASS + NSView + + + CLASS + IBInspector + LANGUAGE + ObjC + OUTLETS + + inspectorView + NSView + + SUPERCLASS + NSObject + + + CLASS + NSDateFormatter + LANGUAGE + ObjC + SUPERCLASS + NSFormatter + + + ACTIONS + + apps_table_cancel + id + apps_table_delete + id + apps_table_done + id + apps_table_duplicate + id + apps_table_new + id + apps_table_show + id + bring_to_front + id + close_window + id + enable_fullscreen_changed + id + minimize_window + id + next_window + id + prefs_changed + id + prefs_show + id + previous_window + id + toggle_fullscreen + id + x11_help + id + zoom_window + id + + CLASS + X11Controller + LANGUAGE + ObjC + OUTLETS + + apps_separator + id + apps_table + id + depth + id + dock_apps_menu + id + dock_menu + id + dock_window_separator + id + enable_auth + id + enable_fullscreen + id + enable_keyequivs + id + enable_tcp + id + fake_buttons + id + prefs_panel + id + sync_keymap + id + toggle_fullscreen_item + id + use_sysbeep + id + window_separator + id + x11_about_item + id + + SUPERCLASS + NSObject + + + CLASS + NSNumberFormatter + LANGUAGE + ObjC + SUPERCLASS + NSFormatter + + + CLASS + NSFormatter + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + ACTIONS + + alignCenter: + id + alignJustified: + id + alignLeft: + id + alignRight: + id + arrangeInFront: + id + centerSelectionInVisibleArea: + id + changeFont: + id + checkSpelling: + id + clear: + id + clearRecentDocuments: + id + complete: + id + copy: + id + copyFont: + id + copyRuler: + id + cut: + id + delete: + id + deminiaturize: + id + fax: + id + hide: + id + hideOtherApplications: + id + loosenKerning: + id + lowerBaseline: + id + makeKeyAndOrderFront: + id + miniaturize: + id + newDocument: + id + openDocument: + id + orderBack: + id + orderFront: + id + orderFrontColorPanel: + id + orderFrontHelpPanel: + id + orderOut: + id + outline: + id + paste: + id + pasteAsPlainText: + id + pasteAsRichText: + id + pasteFont: + id + pasteRuler: + id + pause: + id + performClose: + id + performFindPanelAction: + id + performMiniaturize: + id + performZoom: + id + play: + id + print: + id + printDocument: + id + raiseBaseline: + id + record: + id + redo: + id + resume: + id + revertDocumentToSaved: + id + run: + id + runPageLayout: + id + runToolbarCustomizationPalette: + id + saveAllDocuments: + id + saveDocument: + id + saveDocumentAs: + id + saveDocumentTo: + id + selectAll: + id + selectText: + id + showGuessPanel: + id + showHelp: + id + start: + id + startSpeaking: + id + stop: + id + stopSpeaking: + id + subscript: + id + superscript: + id + terminate: + id + tightenKerning: + id + toggleContinuousSpellChecking: + id + toggleRuler: + id + toggleToolbarShown: + id + turnOffKerning: + id + turnOffLigatures: + id + underline: + id + undo: + id + unhideAllApplications: + id + unscript: + id + useAllLigatures: + id + useStandardKerning: + id + useStandardLigatures: + id + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + IBVersion + 1 + + diff --git a/hw/darwin/apple/English.lproj/main.nib/info.nib b/hw/darwin/apple/English.lproj/main.nib/info.nib new file mode 100644 index 000000000..88bc6260d --- /dev/null +++ b/hw/darwin/apple/English.lproj/main.nib/info.nib @@ -0,0 +1,18 @@ + + + + + IBFramework Version + 588 + IBOpenObjects + + 244 + 29 + 423 + + IBSystem Version + 9A356 + targetFramework + IBCocoaFramework + + diff --git a/hw/darwin/apple/English.lproj/main.nib/keyedobjects.nib b/hw/darwin/apple/English.lproj/main.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..8b31450ff5c9a6357f70baf56268899dee194109 GIT binary patch literal 30865 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 jOR{83u{2A!3|ng1mSd}Jt)sMY%*m + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + X11 + CFBundleGetInfoString + X11 + CFBundleIconFile + X11.icns + CFBundleIdentifier + org.x.X11 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + X11 + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.0 + CFBundleSignature + x11a + CSResourcesFileMapped + + NSHumanReadableCopyright + Copyright © 2003-2007, Apple Inc. +Copyright © 2003, XFree86 Project, Inc. + NSMainNibFile + main + NSPrincipalClass + X11Application + + diff --git a/hw/darwin/apple/X11.icns b/hw/darwin/apple/X11.icns new file mode 100644 index 0000000000000000000000000000000000000000..d770e617ddb455d8a499550e712f93a06a69f871 GIT binary patch literal 65908 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 E014<25dZ)H literal 0 HcmV?d00001 diff --git a/hw/darwin/apple/X11.xcodeproj/project.pbxproj b/hw/darwin/apple/X11.xcodeproj/project.pbxproj new file mode 100644 index 000000000..a47e4d157 --- /dev/null +++ b/hw/darwin/apple/X11.xcodeproj/project.pbxproj @@ -0,0 +1,344 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 527F24190B5D938C007840A7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; }; + 527F241A0B5D938C007840A7 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; }; + 527F241B0B5D938C007840A7 /* X11.icns in Resources */ = {isa = PBXBuildFile; fileRef = 50459C5F038587C60ECA21EC /* X11.icns */; }; + 527F241D0B5D938C007840A7 /* bundle-main.c in Sources */ = {isa = PBXBuildFile; fileRef = 50EE2AB703849F0B0ECA21EC /* bundle-main.c */; }; + 527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */; }; + 527F24200B5D938C007840A7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 570C5748047186C400ACF82F /* SystemConfiguration.framework */; }; + 527F24370B5D9D89007840A7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 527F24260B5D938C007840A7 /* Info.plist */; }; + 52D9C0ED0BCDDF6B00CD2AFC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 52D9C0EB0BCDDF6B00CD2AFC /* Localizable.strings */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = ""; }; + 50459C5F038587C60ECA21EC /* X11.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = X11.icns; sourceTree = ""; }; + 50EE2AB703849F0B0ECA21EC /* bundle-main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = "bundle-main.c"; sourceTree = ""; }; + 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 527F24260B5D938C007840A7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; + 527F24270B5D938C007840A7 /* X11.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = X11.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 52D9C0EC0BCDDF6B00CD2AFC /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; + 570C5748047186C400ACF82F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 527F241E0B5D938C007840A7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */, + 527F24200B5D938C007840A7 /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 195DF8CFFE9D517E11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 527F24270B5D938C007840A7 /* X11.app */, + ); + name = Products; + sourceTree = ""; + }; + 20286C29FDCF999611CA2CEA /* X11 */ = { + isa = PBXGroup; + children = ( + 20286C2AFDCF999611CA2CEA /* Sources */, + 20286C2CFDCF999611CA2CEA /* Resources */, + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */, + 195DF8CFFE9D517E11CA2CBB /* Products */, + 527F24260B5D938C007840A7 /* Info.plist */, + ); + name = X11; + sourceTree = ""; + }; + 20286C2AFDCF999611CA2CEA /* Sources */ = { + isa = PBXGroup; + children = ( + 50EE2AB703849F0B0ECA21EC /* bundle-main.c */, + ); + name = Sources; + sourceTree = ""; + }; + 20286C2CFDCF999611CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 52D9C0EB0BCDDF6B00CD2AFC /* Localizable.strings */, + 50459C5F038587C60ECA21EC /* X11.icns */, + 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */, + 02345980000FD03B11CA0E72 /* main.nib */, + ); + name = Resources; + sourceTree = ""; + }; + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */, + 570C5748047186C400ACF82F /* SystemConfiguration.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 527F24170B5D938C007840A7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 527F24160B5D938C007840A7 /* X11 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */; + buildPhases = ( + 527F24170B5D938C007840A7 /* Headers */, + 527F24180B5D938C007840A7 /* Resources */, + 527F241C0B5D938C007840A7 /* Sources */, + 527F241E0B5D938C007840A7 /* Frameworks */, + 527F24210B5D938C007840A7 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = X11; + productName = X11; + productReference = 527F24270B5D938C007840A7 /* X11.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 20286C28FDCF999611CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 20286C29FDCF999611CA2CEA /* X11 */; + projectDirPath = ""; + projectRoot = ""; + shouldCheckCompatibility = 1; + targets = ( + 527F24160B5D938C007840A7 /* X11 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 527F24180B5D938C007840A7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 527F24370B5D9D89007840A7 /* Info.plist in Resources */, + 527F24190B5D938C007840A7 /* InfoPlist.strings in Resources */, + 527F241A0B5D938C007840A7 /* main.nib in Resources */, + 527F241B0B5D938C007840A7 /* X11.icns in Resources */, + 52D9C0ED0BCDDF6B00CD2AFC /* Localizable.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 527F24210B5D938C007840A7 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 527F241C0B5D938C007840A7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 527F241D0B5D938C007840A7 /* bundle-main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 02345980000FD03B11CA0E72 /* main.nib */ = { + isa = PBXVariantGroup; + children = ( + 1870340FFE93FCAF11CA0CD7 /* English */, + ); + name = main.nib; + sourceTree = ""; + }; + 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 0867D6ABFE840B52C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 52D9C0EB0BCDDF6B00CD2AFC /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 52D9C0EC0BCDDF6B00CD2AFC /* English */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 527F24090B5D8FFC007840A7 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + SKIP_INSTALL = YES; + }; + name = Development; + }; + 527F240A0B5D8FFC007840A7 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + SKIP_INSTALL = YES; + }; + name = Deployment; + }; + 527F240B0B5D8FFC007840A7 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + SKIP_INSTALL = YES; + }; + name = Default; + }; + 527F24230B5D938C007840A7 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_32_BIT)"; + COPY_PHASE_STRIP = NO; + DSTROOT = "$(DSTROOT)"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = /usr/X11/include; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = $DSTROOT/Applications/Utilties; + LIBRARY_SEARCH_PATHS = /usr/X11/lib; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lXau", + "-lxcb", + "-lX11", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = X11; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = app; + }; + name = Development; + }; + 527F24240B5D938C007840A7 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DSTROOT = "$(DSTROOT)"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = /usr/X11/include; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = $DSTROOT/Applications/Utilties; + LIBRARY_SEARCH_PATHS = /usr/X11/lib; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lXau", + "-lxcb", + "-lX11", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = X11; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = app; + }; + name = Deployment; + }; + 527F24250B5D938C007840A7 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = /usr/X11/include; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = $DSTROOT/Applications/Utilties; + LIBRARY_SEARCH_PATHS = /usr/X11/lib; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lXau", + "-lxcb", + "-lX11", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = X11; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = app; + }; + name = Default; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 527F24090B5D8FFC007840A7 /* Development */, + 527F240A0B5D8FFC007840A7 /* Deployment */, + 527F240B0B5D8FFC007840A7 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 527F24230B5D938C007840A7 /* Development */, + 527F24240B5D938C007840A7 /* Deployment */, + 527F24250B5D938C007840A7 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; +/* End XCConfigurationList section */ + }; + rootObject = 20286C28FDCF999611CA2CEA /* Project object */; +} diff --git a/hw/darwin/apple/X11Application.h b/hw/darwin/apple/X11Application.h new file mode 100644 index 000000000..fb153e750 --- /dev/null +++ b/hw/darwin/apple/X11Application.h @@ -0,0 +1,104 @@ +/* X11Application.h -- subclass of NSApplication to multiplex events + $Id: X11Application.h,v 1.26 2003/08/08 19:16:13 jharper Exp $ + + Copyright (c) 2002-2007 Apple Inc. All rights reserved. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise to + promote the sale, use or other dealings in this Software without + prior written authorization. */ + +#ifndef X11APPLICATION_H +#define X11APPLICATION_H 1 + +#if __OBJC__ + +#import +#import "X11Controller.h" + +@interface X11Application : NSApplication { + X11Controller *_controller; + + unsigned int _x_active :1; +} + +- (void) set_controller:controller; +- (void) set_window_menu:(NSArray *)list; + +- (int) prefs_get_integer:(NSString *)key default:(int)def; +- (const char *) prefs_get_string:(NSString *)key default:(const char *)def; +- (float) prefs_get_float:(NSString *)key default:(float)def; +- (int) prefs_get_boolean:(NSString *)key default:(int)def; +- (NSArray *) prefs_get_array:(NSString *)key; +- (void) prefs_set_integer:(NSString *)key value:(int)value; +- (void) prefs_set_float:(NSString *)key value:(float)value; +- (void) prefs_set_boolean:(NSString *)key value:(int)value; +- (void) prefs_set_array:(NSString *)key value:(NSArray *)value; +- (void) prefs_set_string:(NSString *)key value:(NSString *)value; +- (void) prefs_synchronize; + +- (BOOL) x_active; + +@end + +extern X11Application *X11App; + +#endif /* __OBJC__ */ + +extern void X11ApplicationSetWindowMenu (int nitems, const char **items, + const char *shortcuts); +extern void X11ApplicationSetWindowMenuCheck (int idx); +extern void X11ApplicationSetFrontProcess (void); +extern void X11ApplicationSetCanQuit (int state); +extern void X11ApplicationServerReady (void); +extern void X11ApplicationShowHideMenubar (int state); + +extern void X11ApplicationMain (int argc, const char *argv[], + void (*server_thread) (void *), + void *server_arg); + +extern int X11EnableKeyEquivalents; +extern int quartzHasRoot, quartzEnableRootless; + +#define APP_PREFS "org.x.X11" + +#define PREFS_APPSMENU "apps_menu" +#define PREFS_FAKEBUTTONS "enable_fake_buttons" +#define PREFS_SYSBEEP "enable_system_beep" +#define PREFS_KEYEQUIVS "enable_key_equivalents" +#define PREFS_KEYMAP_FILE "keymap_file" +#define PREFS_SYNC_KEYMAP "sync_keymap" +#define PREFS_DEPTH "depth" +#define PREFS_NO_AUTH "no_auth" +#define PREFS_NO_TCP "nolisten_tcp" +#define PREFS_DONE_XINIT_CHECK "done_xinit_check" +#define PREFS_NO_QUIT_ALERT "no_quit_alert" +#define PREFS_FAKE_BUTTON2 "fake_button2" +#define PREFS_FAKE_BUTTON3 "fake_button3" +#define PREFS_ROOTLESS "rootless" +#define PREFS_FULLSCREEN_HOTKEYS "fullscreen_hotkeys" +#define PREFS_SWAP_ALT_META "swap_alt_meta" +#define PREFS_XP_OPTIONS "xp_options" +#define PREFS_ENABLE_STEREO "enable_stereo" + +#endif /* X11APPLICATION_H */ diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m new file mode 100644 index 000000000..9ae470e46 --- /dev/null +++ b/hw/darwin/apple/X11Application.m @@ -0,0 +1,1131 @@ +/* X11Application.m -- subclass of NSApplication to multiplex events + + Copyright (c) 2002-2007 Apple Inc. All rights reserved. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise to + promote the sale, use or other dealings in this Software without + prior written authorization. */ + +#include "../quartz/quartzCommon.h" + +#import "X11Application.h" +#include + +/* ouch! */ +#define BOOL X_BOOL +//# include "Xproto.h" +# include "darwin.h" +# include "../quartz/quartz.h" +# define _APPLEWM_SERVER_ +# include "X11/extensions/applewm.h" +//# include "X.h" +# include "micmap.h" +#undef BOOL + +#include "xf86Version.h" + +#include +#include +#include + +#define DEFAULTS_FILE "/usr/X11/lib/X11/xserver/Xquartz.plist" + +int X11EnableKeyEquivalents = TRUE; +int quartzHasRoot = FALSE, quartzEnableRootless = TRUE; + +extern int darwinFakeButtons; +extern Bool enable_stereo; + +X11Application *X11App; + +#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask \ +| NSAlternateKeyMask | NSCommandKeyMask) + +@implementation X11Application + +typedef struct message_struct message; +struct message_struct { + mach_msg_header_t hdr; + SEL selector; + NSObject *arg; +}; + +static mach_port_t _port; + +static void send_nsevent (NSEventType type, NSEvent *e); + +/* Quartz mode initialization routine. This is often dynamically loaded + but is statically linked into this X server. */ +extern Bool QuartzModeBundleInit(void); + +static void +init_ports (void) +{ + kern_return_t r; + NSPort *p; + + if (_port != MACH_PORT_NULL) + return; + + r = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, &_port); + if (r != KERN_SUCCESS) + return; + + p = [NSMachPort portWithMachPort:_port]; + [p setDelegate:NSApp]; + [p scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; +} + +static void +message_kit_thread (SEL selector, NSObject *arg) +{ + message msg; + kern_return_t r; + + msg.hdr.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MAKE_SEND, 0); + msg.hdr.msgh_size = sizeof (msg); + msg.hdr.msgh_remote_port = _port; + msg.hdr.msgh_local_port = MACH_PORT_NULL; + msg.hdr.msgh_reserved = 0; + msg.hdr.msgh_id = 0; + + msg.selector = selector; + msg.arg = [arg retain]; + + r = mach_msg (&msg.hdr, MACH_SEND_MSG, msg.hdr.msgh_size, + 0, MACH_PORT_NULL, 0, MACH_PORT_NULL); + if (r != KERN_SUCCESS) + fprintf (stderr, "%s: mach_msg failed: %x\n", __FUNCTION__, r); +} + +- (void) handleMachMessage:(void *)_msg +{ + message *msg = _msg; + + [self performSelector:msg->selector withObject:msg->arg]; + [msg->arg release]; +} + +- (void) set_controller:obj +{ + if (_controller == nil) + _controller = [obj retain]; +} + +- (void) dealloc +{ + if (_controller != nil) + [_controller release]; + + if (_port != MACH_PORT_NULL) + mach_port_deallocate (mach_task_self (), _port); + + [super dealloc]; +} + +- (void) orderFrontStandardAboutPanel: (id) sender +{ + NSMutableDictionary *dict; + NSDictionary *infoDict; + NSString *tem; + + dict = [NSMutableDictionary dictionaryWithCapacity:2]; + infoDict = [[NSBundle mainBundle] infoDictionary]; + + [dict setObject: NSLocalizedString (@"The X Window System", @"About panel") + forKey:@"ApplicationName"]; + + tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; + + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2", + tem] forKey:@"ApplicationVersion"]; + + [self orderFrontStandardAboutPanelWithOptions: dict]; +} + +- (void) activateX:(BOOL)state +{ + /* Create a TSM document that supports full Unicode input, and + have it activated while X is active (unless using the old + keymapping files) */ + static TSMDocumentID x11_document; + + if (state) + { + QuartzMessageServerThread (kXDarwinActivate, 0); + + if (!_x_active) + { + if (x11_document == 0 && darwinKeymapFile == NULL) + { + OSType types[1]; + types[0] = kUnicodeDocument; + NewTSMDocument (1, types, &x11_document, 0); + } + + if (x11_document != 0) + ActivateTSMDocument (x11_document); + } + } + else + { + QuartzMessageServerThread (kXDarwinDeactivate, 0); + + if (_x_active) + { + if (x11_document != 0) + DeactivateTSMDocument (x11_document); + } + } + + _x_active = state; +} + +- (void) became_key:(NSWindow *)win +{ + [self activateX:NO]; +} + +- (void) sendEvent:(NSEvent *)e +{ + NSEventType type; + BOOL for_appkit, for_x; + + type = [e type]; + + /* By default pass down the responder chain and to X. */ + for_appkit = YES; + for_x = YES; + + switch (type) + { + case NSLeftMouseDown: case NSRightMouseDown: case NSOtherMouseDown: + case NSLeftMouseUp: case NSRightMouseUp: case NSOtherMouseUp: + if ([e window] != nil) + { + /* Pointer event has a window. Probably something for the kit. */ + + for_x = NO; + + if (_x_active) + [self activateX:NO]; + } + else if ([self modalWindow] == nil) + { + /* Must be an X window. Tell appkit it doesn't have focus. */ + + for_appkit = NO; + + if ([self isActive]) + { + [self deactivate]; + + if (!_x_active && quartzProcs->IsX11Window([e window], + [e windowNumber])) + [self activateX:YES]; + } + } + break; + + case NSKeyDown: case NSKeyUp: + if (_x_active) + { + static int swallow_up; + + /* No kit window is focused, so send it to X. */ + + for_appkit = NO; + + if (type == NSKeyDown) + { + /* Before that though, see if there are any global + shortcuts bound to it. */ + + if (X11EnableKeyEquivalents + && [[self mainMenu] performKeyEquivalent:e]) + { + swallow_up = [e keyCode]; + for_x = NO; + } + else if (!quartzEnableRootless + && ([e modifierFlags] & ALL_KEY_MASKS) + == (NSCommandKeyMask | NSAlternateKeyMask) + && ([e keyCode] == 0 /*a*/ + || [e keyCode] == 53 /*Esc*/)) + { + swallow_up = 0; + for_x = NO; +#ifdef DARWIN_DDX_MISSING + QuartzMessageServerThread (kXDarwinToggleFullscreen, 0); +#endif + } + } + else + { + /* If we saw a key equivalent on the down, don't pass + the up through to X. */ + + if (swallow_up != 0 && [e keyCode] == swallow_up) + { + swallow_up = 0; + for_x = NO; + } + } + } + else + { + for_x = NO; + } + break; + + case NSFlagsChanged: + /* For the l33t X users who remap modifier keys to normal keysyms. */ + if (!_x_active) + for_x = NO; + break; + + case NSAppKitDefined: + switch ([e subtype]) + { + case NSApplicationActivatedEventType: + for_x = NO; + if ([self modalWindow] == nil) + { + for_appkit = NO; + + /* FIXME: hack to avoid having to pass the event to appkit, + which would cause it to raise one of its windows. */ + _appFlags._active = YES; + + [self activateX:YES]; + if ([e data2] & 0x10) X11ApplicationSetFrontProcess(); + } + break; + + case 18: /* ApplicationDidReactivate */ + if (quartzHasRoot) + for_appkit = NO; + break; + + case NSApplicationDeactivatedEventType: + for_x = NO; + [self activateX:NO]; + break; + } + break; + + default: break; /* for gcc */ + } + + if (for_appkit) + [super sendEvent:e]; + + if (for_x) + send_nsevent (type, e); +} + +- (void) set_window_menu:(NSArray *)list +{ + [_controller set_window_menu:list]; +} + +- (void) set_window_menu_check:(NSNumber *)n +{ + [_controller set_window_menu_check:n]; +} + +- (void) set_apps_menu:(NSArray *)list +{ + [_controller set_apps_menu:list]; +} + +- (void) set_front_process:unused +{ + [NSApp activateIgnoringOtherApps:YES]; + + if ([self modalWindow] == nil) + [self activateX:YES]; +} + +- (void) set_can_quit:(NSNumber *)state +{ + [_controller set_can_quit:[state boolValue]]; +} + +- (void) server_ready:unused +{ + [_controller server_ready]; +} + +- (void) show_hide_menubar:(NSNumber *)state +{ + if ([state boolValue]) + ShowMenuBar (); + else + HideMenuBar (); +} + + +/* user preferences */ + +/* Note that these functions only work for arrays whose elements + can be toll-free-bridged between NS and CF worlds. */ + +static const void *cfretain (CFAllocatorRef a, const void *b) { + return CFRetain (b); +} + +static void cfrelease (CFAllocatorRef a, const void *b) { + CFRelease (b); +} + +static CFMutableArrayRef +nsarray_to_cfarray (NSArray *in) +{ + CFMutableArrayRef out; + CFArrayCallBacks cb; + NSObject *ns; + const CFTypeRef *cf; + int i, count; + + memset (&cb, 0, sizeof (cb)); + cb.version = 0; + cb.retain = cfretain; + cb.release = cfrelease; + + count = [in count]; + out = CFArrayCreateMutable (NULL, count, &cb); + + for (i = 0; i < count; i++) + { + ns = [in objectAtIndex:i]; + + if ([ns isKindOfClass:[NSArray class]]) + cf = (CFTypeRef) nsarray_to_cfarray ((NSArray *) ns); + else + cf = CFRetain ((CFTypeRef) ns); + + CFArrayAppendValue (out, cf); + CFRelease (cf); + } + + return out; +} +static NSMutableArray * +cfarray_to_nsarray (CFArrayRef in) +{ + NSMutableArray *out; + const CFTypeRef *cf; + NSObject *ns; + int i, count; + + count = CFArrayGetCount (in); + out = [[NSMutableArray alloc] initWithCapacity:count]; + + for (i = 0; i < count; i++) + { + cf = CFArrayGetValueAtIndex (in, i); + + if (CFGetTypeID (cf) == CFArrayGetTypeID ()) + ns = cfarray_to_nsarray ((CFArrayRef) cf); + else + ns = [(id)cf retain]; + + [out addObject:ns]; + [ns release]; + } + + return out; +} + +- (CFPropertyListRef) prefs_get:(NSString *)key +{ + CFPropertyListRef value; + + value = CFPreferencesCopyAppValue ((CFStringRef) key, CFSTR (APP_PREFS)); + + if (value == NULL) + { + static CFDictionaryRef defaults; + + if (defaults == NULL) + { + CFStringRef error = NULL; + CFDataRef data; + CFURLRef url; + SInt32 error_code; + + url = (CFURLCreateFromFileSystemRepresentation + (NULL, (unsigned char *)DEFAULTS_FILE, strlen (DEFAULTS_FILE), false)); + if (CFURLCreateDataAndPropertiesFromResource (NULL, url, &data, + NULL, NULL, + &error_code)) + { + defaults = (CFPropertyListCreateFromXMLData + (NULL, data, kCFPropertyListMutableContainersAndLeaves, &error)); + if (error != NULL) + CFRelease (error); + CFRelease (data); + } + CFRelease (url); + + if (defaults != NULL) + { + NSMutableArray *apps, *elt; + int count, i; + NSString *name, *nname; + + /* Localize the names in the default apps menu. */ + + apps = [(NSDictionary *)defaults objectForKey:@PREFS_APPSMENU]; + if (apps != nil) + { + count = [apps count]; + for (i = 0; i < count; i++) + { + elt = [apps objectAtIndex:i]; + if (elt != nil && [elt isKindOfClass:[NSArray class]]) + { + name = [elt objectAtIndex:0]; + if (name != nil) + { + nname = NSLocalizedString (name, nil); + if (nname != nil && nname != name) + [elt replaceObjectAtIndex:0 withObject:nname]; + } + } + } + } + } + } + + if (defaults != NULL) + value = CFDictionaryGetValue (defaults, key); + + if (value != NULL) + CFRetain (value); + } + + return value; +} + +- (int) prefs_get_integer:(NSString *)key default:(int)def +{ + CFPropertyListRef value; + int ret; + + value = [self prefs_get:key]; + + if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ()) + CFNumberGetValue (value, kCFNumberIntType, &ret); + else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) + ret = CFStringGetIntValue (value); + else + ret = def; + + if (value != NULL) + CFRelease (value); + + return ret; +} + +- (const char *) prefs_get_string:(NSString *)key default:(const char *)def +{ + CFPropertyListRef value; + const char *ret = NULL; + + value = [self prefs_get:key]; + + if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) + { + NSString *s = (NSString *) value; + + ret = [s UTF8String]; + } + + if (value != NULL) + CFRelease (value); + + return ret != NULL ? ret : def; +} + +- (float) prefs_get_float:(NSString *)key default:(float)def +{ + CFPropertyListRef value; + float ret = def; + + value = [self prefs_get:key]; + + if (value != NULL + && CFGetTypeID (value) == CFNumberGetTypeID () + && CFNumberIsFloatType (value)) + { + CFNumberGetValue (value, kCFNumberFloatType, &ret); + } + else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) + { + ret = CFStringGetDoubleValue (value); + } + + if (value != NULL) + CFRelease (value); + + return ret; +} + +- (int) prefs_get_boolean:(NSString *)key default:(int)def +{ + CFPropertyListRef value; + int ret = def; + + value = [self prefs_get:key]; + + if (value != NULL) + { + if (CFGetTypeID (value) == CFNumberGetTypeID ()) + CFNumberGetValue (value, kCFNumberIntType, &ret); + else if (CFGetTypeID (value) == CFBooleanGetTypeID ()) + ret = CFBooleanGetValue (value); + else if (CFGetTypeID (value) == CFStringGetTypeID ()) + { + const char *tem = [(NSString *) value lossyCString]; + if (strcasecmp (tem, "true") == 0 || strcasecmp (tem, "yes") == 0) + ret = YES; + else + ret = NO; + } + + CFRelease (value); + } + + return ret; +} + +- (NSArray *) prefs_get_array:(NSString *)key +{ + NSArray *ret = nil; + CFPropertyListRef value; + + value = [self prefs_get:key]; + + if (value != NULL) + { + if (CFGetTypeID (value) == CFArrayGetTypeID ()) + ret = [cfarray_to_nsarray (value) autorelease]; + + CFRelease (value); + } + + return ret; +} + +- (void) prefs_set_integer:(NSString *)key value:(int)value +{ + CFNumberRef x; + + x = CFNumberCreate (NULL, kCFNumberIntType, &value); + + CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS), + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); + + CFRelease (x); +} + +- (void) prefs_set_float:(NSString *)key value:(float)value +{ + CFNumberRef x; + + x = CFNumberCreate (NULL, kCFNumberFloatType, &value); + + CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS), + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); + + CFRelease (x); +} + +- (void) prefs_set_boolean:(NSString *)key value:(int)value +{ + CFPreferencesSetValue ((CFStringRef) key, + (CFTypeRef) value ? kCFBooleanTrue + : kCFBooleanFalse, CFSTR (APP_PREFS), + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); + +} + +- (void) prefs_set_array:(NSString *)key value:(NSArray *)value +{ + CFArrayRef cfarray; + + cfarray = nsarray_to_cfarray (value); + CFPreferencesSetValue ((CFStringRef) key, + (CFTypeRef) cfarray, + CFSTR (APP_PREFS), + kCFPreferencesCurrentUser, kCFPreferencesAnyHost); + CFRelease (cfarray); +} + +- (void) prefs_set_string:(NSString *)key value:(NSString *)value +{ + CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) value, + CFSTR (APP_PREFS), kCFPreferencesCurrentUser, + kCFPreferencesAnyHost); +} + +- (void) prefs_synchronize +{ + CFPreferencesAppSynchronize (kCFPreferencesCurrentApplication); +} + +- (void) read_defaults +{ + const char *tem; + + quartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP + default:quartzUseSysBeep]; + quartzEnableRootless = [self prefs_get_boolean:@PREFS_ROOTLESS + default:quartzEnableRootless]; +#ifdef DARWIN_DDX_MISSING + quartzFullscreenDisableHotkeys = ![self prefs_get_boolean: + @PREFS_FULLSCREEN_HOTKEYS default: + !quartzFullscreenDisableHotkeys]; + quartzXpluginOptions = [self prefs_get_integer:@PREFS_XP_OPTIONS + default:quartzXpluginOptions]; +#endif + + darwinSwapAltMeta = [self prefs_get_boolean:@PREFS_SWAP_ALT_META + default:darwinSwapAltMeta]; + darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS + default:darwinFakeButtons]; + if (darwinFakeButtons) + { + const char *fake2, *fake3; + + fake2 = [self prefs_get_string:@PREFS_FAKE_BUTTON2 default:NULL]; + fake3 = [self prefs_get_string:@PREFS_FAKE_BUTTON3 default:NULL]; + + if (fake2 != NULL) darwinFakeMouse2Mask = DarwinParseModifierList(fake2); + if (fake3 != NULL) darwinFakeMouse3Mask = DarwinParseModifierList(fake3); + + } + + X11EnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS + default:X11EnableKeyEquivalents]; + + darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP + default:darwinSyncKeymap]; + + tem = [self prefs_get_string:@PREFS_KEYMAP_FILE default:NULL]; + if (tem != NULL) + darwinKeymapFile = strdup (tem); + else + darwinKeymapFile = NULL; + + darwinDesiredDepth = [self prefs_get_integer:@PREFS_DEPTH + default:darwinDesiredDepth]; + + enable_stereo = [self prefs_get_boolean:@PREFS_ENABLE_STEREO + default:false]; +} + +/* This will end up at the end of the responder chain. */ +- (void) copy:sender +{ + QuartzMessageServerThread (kXDarwinPasteboardNotify, 1, + AppleWMCopyToPasteboard); +} + +- (BOOL) x_active +{ + return _x_active; +} + +@end + +static NSArray * +array_with_strings_and_numbers (int nitems, const char **items, + const char *numbers) +{ + NSMutableArray *array, *subarray; + NSString *string; + NSString *number; + int i; + + /* (Can't autorelease on the X server thread) */ + + array = [[NSMutableArray alloc] initWithCapacity:nitems]; + + for (i = 0; i < nitems; i++) + { + subarray = [[NSMutableArray alloc] initWithCapacity:2]; + + string = [[NSString alloc] initWithUTF8String:items[i]]; + [subarray addObject:string]; + [string release]; + + if (numbers[i] != 0) + { + number = [[NSString alloc] initWithFormat:@"%d", numbers[i]]; + [subarray addObject:number]; + [number release]; + } + else + [subarray addObject:@""]; + + [array addObject:subarray]; + [subarray release]; + } + + return array; +} + +void +X11ApplicationSetWindowMenu (int nitems, const char **items, + const char *shortcuts) +{ + NSArray *array; + array = array_with_strings_and_numbers (nitems, items, shortcuts); + + /* Send the array of strings over to the appkit thread */ + + message_kit_thread (@selector (set_window_menu:), array); + [array release]; +} + +void +X11ApplicationSetWindowMenuCheck (int idx) +{ + NSNumber *n; + + n = [[NSNumber alloc] initWithInt:idx]; + + message_kit_thread (@selector (set_window_menu_check:), n); + + [n release]; +} + +void +X11ApplicationSetFrontProcess (void) +{ + message_kit_thread (@selector (set_front_process:), nil); +} + +void +X11ApplicationSetCanQuit (int state) +{ + NSNumber *n; + + n = [[NSNumber alloc] initWithBool:state]; + + message_kit_thread (@selector (set_can_quit:), n); + + [n release]; +} + +void +X11ApplicationServerReady (void) +{ + message_kit_thread (@selector (server_ready:), nil); +} + +void +X11ApplicationShowHideMenubar (int state) +{ + NSNumber *n; + + n = [[NSNumber alloc] initWithBool:state]; + + message_kit_thread (@selector (show_hide_menubar:), n); + + [n release]; +} + +static void * +create_thread (void *func, void *arg) +{ + pthread_attr_t attr; + pthread_t tid; + + pthread_attr_init (&attr); + + pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM); + pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); + + pthread_create (&tid, &attr, func, arg); + + pthread_attr_destroy (&attr); + + return (void *) tid; +} + +static void +check_xinitrc (void) +{ + char *tem, buf[1024]; + NSString *msg; + + if ([X11App prefs_get_boolean:@PREFS_DONE_XINIT_CHECK default:NO]) + return; + + tem = getenv ("HOME"); + if (tem == NULL) + goto done; + + snprintf (buf, sizeof (buf), "%s/.xinitrc", tem); + if (access (buf, F_OK) != 0) + goto done; + + /* FIXME: put localized strings into Resources/English.lproj */ + + msg = NSLocalizedString ( + @"You have an existing ~/.xinitrc file.\n\n\ + Windows displayed by X11 applications may not have titlebars, or may look \ + different to windows displayed by native applications.\n\n\ + Would you like to move aside the existing file and use the standard X11 \ + environment?", @"Startup xinitrc dialog"); + + if (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Yes", @""), + NSLocalizedString (@"No", @""), nil) + == NSAlertDefaultReturn) + { + char buf2[1024]; + int i = -1; + + snprintf (buf2, sizeof (buf2), "%s.old", buf); + + for (i = 1; access (buf2, F_OK) == 0; i++) + snprintf (buf2, sizeof (buf2), "%s.old.%d", buf, i); + + rename (buf, buf2); + } + + done: + [X11App prefs_set_boolean:@PREFS_DONE_XINIT_CHECK value:YES]; + [X11App prefs_synchronize]; +} + +void +X11ApplicationMain (int argc, const char *argv[], + void (*server_thread) (void *), void *server_arg) +{ + NSAutoreleasePool *pool; + +#ifdef DEBUG + while (access ("/tmp/x11-block", F_OK) == 0) + sleep (1); +#endif + + pool = [[NSAutoreleasePool alloc] init]; + + X11App = (X11Application *) [X11Application sharedApplication]; + + init_ports (); + + [NSApp read_defaults]; + + [NSBundle loadNibNamed:@"main" owner:NSApp]; + + [[NSNotificationCenter defaultCenter] addObserver:NSApp + selector:@selector (became_key:) + name:NSWindowDidBecomeKeyNotification object:nil]; + + check_xinitrc (); + + /* + * The xpr Quartz mode is statically linked into this server. + * Initialize all the Quartz functions. + */ + QuartzModeBundleInit(); + + /* Calculate the height of the menubar so we can avoid it. */ + aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) - + NSMaxY([[NSScreen mainScreen] visibleFrame]) - 1; + + if (!create_thread (server_thread, server_arg)) + { + fprintf (stderr, "can't create secondary thread\n"); + exit (1); + } + + [NSApp run]; + + /* not reached */ +} + + +/* event conversion */ + +static inline unsigned short +convert_flags (unsigned int nsflags) +{ + unsigned int xflags; + + if (nsflags == ~0) return 0xffff; + + xflags = 0; + + if (nsflags & NSAlphaShiftKeyMask) xflags |= LockMask; + if (nsflags & NSShiftKeyMask) xflags |= ShiftMask; + if (nsflags & NSControlKeyMask) xflags |= ControlMask; + if (nsflags & NSAlternateKeyMask) xflags |= Mod1Mask; + if (nsflags & NSCommandKeyMask) xflags |= Mod2Mask; + /* FIXME: secondaryfn? */ + + return xflags; +} + +static void +send_nsevent (NSEventType type, NSEvent *e) +{ + static unsigned int button_state = 0; + NSRect screen; + NSPoint location; + NSWindow *window; + int pointer_x, pointer_y; + xEvent xe; + + memset (&xe, 0, sizeof (xe)); + + /* This field should be filled in for every event */ + xe.u.keyButtonPointer.time = GetTimeInMillis(); + + /* convert location to global top-left coordinates */ + location = [e locationInWindow]; + window = [e window]; + screen = [[[NSScreen screens] objectAtIndex:0] frame]; + + if (window != nil) { + NSRect frame = [window frame]; + pointer_x = location.x + frame.origin.x; + pointer_y = (((screen.origin.y + screen.size.height) + - location.y) - frame.origin.y); + } else { + pointer_x = location.x; + pointer_y = (screen.origin.y + screen.size.height) - location.y; + } + + xe.u.keyButtonPointer.rootX = pointer_x; + xe.u.keyButtonPointer.rootY = pointer_y; + + switch (type) { + float count; + + case NSLeftMouseDown: + xe.u.u.type = ButtonPress; + xe.u.u.detail = 1; + goto do_press_event; + + case NSRightMouseDown: + xe.u.u.type = ButtonPress; + xe.u.u.detail = 3; + goto do_press_event; + + case NSOtherMouseDown: + xe.u.u.type = ButtonPress; + xe.u.u.detail = 2; /* FIXME? */ + goto do_press_event; + +do_press_event: + if (!quartzProcs->IsX11Window([e window], [e windowNumber])) { + /* X server doesn't grok this window, drop the event. + + Note: theoretically this isn't necessary, but if I click + on the menubar, we get sent a LeftMouseDown when the + release happens, but no LeftMouseUp is ever seen! */ + + break; + } + goto do_event; + + case NSLeftMouseUp: + xe.u.u.type = ButtonRelease; + xe.u.u.detail = 1; + goto do_release_event; + + case NSRightMouseUp: + xe.u.u.type = ButtonRelease; + xe.u.u.detail = 3; + goto do_release_event; + + case NSOtherMouseUp: + xe.u.u.type = ButtonRelease; + xe.u.u.detail = 2; /* FIXME? */ + goto do_release_event; + +do_release_event: + if ((button_state & (1 << xe.u.u.detail)) == 0) + { + /* X didn't see the button press for this release, so skip it */ + break; + } + goto do_event; + + case NSMouseMoved: + case NSLeftMouseDragged: + case NSRightMouseDragged: + case NSOtherMouseDragged: + xe.u.u.type = MotionNotify; + goto do_event; + + case NSKeyDown: + xe.u.u.type = KeyPress; + xe.u.u.detail = [e keyCode]; + goto do_event; + + case NSKeyUp: + xe.u.u.type = KeyRelease; + xe.u.u.detail = [e keyCode]; + goto do_event; + + case NSScrollWheel: + xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]); + count = [e deltaY]; + xe.u.u.detail = count > 0.0f ? 4 : 5; + for (count = fabs(count); count > 0.0; count = count - 1.0f) { + xe.u.u.type = ButtonPress; + DarwinEQEnqueue(&xe); + xe.u.u.type = ButtonRelease; + DarwinEQEnqueue(&xe); + } + xe.u.u.type = 0; + break; + + case NSFlagsChanged: + xe.u.u.type = kXDarwinUpdateModifiers; + xe.u.clientMessage.u.l.longs0 = [e modifierFlags]; + DarwinEQEnqueue (&xe); + break; + +do_event: + // xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]); + DarwinEQEnqueue (&xe); + break; + + default: break; /* for gcc */ + } + + if (xe.u.u.type == ButtonPress) + button_state |= (1 << xe.u.u.detail); + else if (xe.u.u.type == ButtonRelease) + button_state &= ~(1 << xe.u.u.detail); +} diff --git a/hw/darwin/apple/X11Controller.h b/hw/darwin/apple/X11Controller.h new file mode 100644 index 000000000..954d0abb9 --- /dev/null +++ b/hw/darwin/apple/X11Controller.h @@ -0,0 +1,86 @@ +/* X11Controller.h -- connect the IB ui + $Id: X11Controller.h,v 1.21 2003/07/24 17:52:29 jharper Exp $ + + Copyright (c) 2002 Apple Computer, Inc. All rights reserved. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise to + promote the sale, use or other dealings in this Software without + prior written authorization. */ + +#ifndef X11CONTROLLER_H +#define X11CONTROLLER_H 1 + +#if __OBJC__ + +#import +#include "../quartz/xpr/x-list.h" + +@interface X11Controller : NSObject +{ + NSPanel *prefs_panel; + + NSButton *fake_buttons; + NSButton *enable_fullscreen; + NSButton *use_sysbeep; + NSButton *enable_keyequivs; + NSButton *sync_keymap; + NSButton *enable_auth; + NSButton *enable_tcp; + NSPopUpButton *depth; + + NSMenuItem *x11_about_item; + NSMenuItem *window_separator; + NSMenuItem *dock_window_separator; + NSMenuItem *apps_separator; + NSMenuItem *toggle_fullscreen_item; + NSMenu *dock_apps_menu; + NSTableView *apps_table; + + NSArray *apps; + NSMutableArray *table_apps; + + NSMenu *dock_menu; + + int checked_window_item; + x_list *pending_apps; + + BOOL finished_launching; + BOOL can_quit; +} + +- (void) set_window_menu:(NSArray *)list; +- (void) set_window_menu_check:(NSNumber *)n; +- (void) set_apps_menu:(NSArray *)list; +- (void) set_can_quit:(BOOL)state; +- (void) server_ready; + +@end + +#endif /* __OBJC__ */ + +extern void X11ControllerMain (int argc, const char *argv[], + void (*server_thread) (void *), + void *server_arg); + +#endif /* X11CONTROLLER_H */ diff --git a/hw/darwin/apple/X11Controller.m b/hw/darwin/apple/X11Controller.m new file mode 100644 index 000000000..cc039b115 --- /dev/null +++ b/hw/darwin/apple/X11Controller.m @@ -0,0 +1,748 @@ +/* X11Controller.m -- connect the IB ui, also the NSApp delegate + $Id: X11Controller.m,v 1.40 2006/09/06 21:19:32 jharper Exp $ + + Copyright (c) 2002-2007 Apple Inc. All rights reserved. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise to + promote the sale, use or other dealings in this Software without + prior written authorization. */ + +#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin" + +#include "../quartz/quartzCommon.h" + +#import "X11Controller.h" +#import "X11Application.h" +#import + +/* ouch! */ +#define BOOL X_BOOL +//# include "Xproto.h" +#include "opaque.h" +# include "darwin.h" +# include "../quartz/quartz.h" +# define _APPLEWM_SERVER_ +# include "X11/extensions/applewm.h" +# include "../quartz/applewmExt.h" +//# include "X.h" +#undef BOOL + +#include +#include +#include +#include +#include + +#define TRACE() fprintf (stderr, "%s\n", __FUNCTION__) + +@implementation X11Controller + +- (void) awakeFromNib +{ + X11Application *xapp = NSApp; + NSArray *array; + + /* Point X11Application at ourself. */ + [xapp set_controller:self]; + + array = [xapp prefs_get_array:@PREFS_APPSMENU]; + if (array != nil) + { + int count; + + /* convert from [TITLE1 COMMAND1 TITLE2 COMMAND2 ...] + to [[TITLE1 COMMAND1] [TITLE2 COMMAND2] ...] format. */ + + count = [array count]; + if (count > 0 + && ![[array objectAtIndex:0] isKindOfClass:[NSArray class]]) + { + int i; + NSMutableArray *copy, *sub; + + copy = [NSMutableArray arrayWithCapacity:(count / 2)]; + + for (i = 0; i < count / 2; i++) + { + sub = [[NSMutableArray alloc] initWithCapacity:3]; + [sub addObject:[array objectAtIndex:i*2]]; + [sub addObject:[array objectAtIndex:i*2+1]]; + [sub addObject:@""]; + [copy addObject:sub]; + [sub release]; + } + + array = copy; + } + + [self set_apps_menu:array]; + } +} + +- (void) item_selected:sender +{ + [NSApp activateIgnoringOtherApps:YES]; + + QuartzMessageServerThread (kXDarwinControllerNotify, 2, + AppleWMWindowMenuItem, [sender tag]); +} + +- (void) remove_window_menu +{ + NSMenu *menu; + int first, count, i; + + /* Work backwards so we don't mess up the indices */ + menu = [window_separator menu]; + first = [menu indexOfItem:window_separator] + 1; + count = [menu numberOfItems]; + for (i = count - 1; i >= first; i--) + [menu removeItemAtIndex:i]; + + menu = [dock_window_separator menu]; + count = [menu indexOfItem:dock_window_separator]; + for (i = 0; i < count; i++) + [dock_menu removeItemAtIndex:0]; +} + +- (void) install_window_menu:(NSArray *)list +{ + NSMenu *menu; + NSMenuItem *item; + int first, count, i; + + menu = [window_separator menu]; + first = [menu indexOfItem:window_separator] + 1; + count = [list count]; + for (i = 0; i < count; i++) + { + NSString *name, *shortcut; + + name = [[list objectAtIndex:i] objectAtIndex:0]; + shortcut = [[list objectAtIndex:i] objectAtIndex:1]; + + item = (NSMenuItem *) [menu addItemWithTitle:name action:@selector + (item_selected:) keyEquivalent:shortcut]; + [item setTarget:self]; + [item setTag:i]; + [item setEnabled:YES]; + + item = (NSMenuItem *) [dock_menu insertItemWithTitle:name + action:@selector + (item_selected:) keyEquivalent:shortcut + atIndex:i]; + [item setTarget:self]; + [item setTag:i]; + [item setEnabled:YES]; + } + + if (checked_window_item >= 0 && checked_window_item < count) + { + item = (NSMenuItem *) [menu itemAtIndex:first + checked_window_item]; + [item setState:NSOnState]; + item = (NSMenuItem *) [dock_menu itemAtIndex:checked_window_item]; + [item setState:NSOnState]; + } +} + +- (void) remove_apps_menu +{ + NSMenu *menu; + NSMenuItem *item; + int i; + + if (apps == nil || apps_separator == nil) return; + + menu = [apps_separator menu]; + + if (menu != nil) + { + for (i = [menu numberOfItems] - 1; i >= 0; i--) + { + item = (NSMenuItem *) [menu itemAtIndex:i]; + if ([item tag] != 0) + [menu removeItemAtIndex:i]; + } + } + + if (dock_apps_menu != nil) + { + for (i = [dock_apps_menu numberOfItems] - 1; i >= 0; i--) + { + item = (NSMenuItem *) [dock_apps_menu itemAtIndex:i]; + if ([item tag] != 0) + [dock_apps_menu removeItemAtIndex:i]; + } + } + + [apps release]; + apps = nil; +} + +- (void) prepend_apps_item:(NSArray *)list index:(int)i menu:(NSMenu *)menu +{ + NSString *title, *shortcut = @""; + NSArray *group; + NSMenuItem *item; + + group = [list objectAtIndex:i]; + title = [group objectAtIndex:0]; + if ([group count] >= 3) + shortcut = [group objectAtIndex:2]; + + if ([title length] != 0) + { + item = (NSMenuItem *) [menu insertItemWithTitle:title + action:@selector (app_selected:) + keyEquivalent:shortcut atIndex:0]; + [item setTarget:self]; + [item setEnabled:YES]; + } + else + { + item = (NSMenuItem *) [NSMenuItem separatorItem]; + [menu insertItem:item atIndex:0]; + } + + [item setTag:i+1]; /* can't be zero, so add one */ +} + +- (void) install_apps_menu:(NSArray *)list +{ + NSMenu *menu; + int i, count; + + count = [list count]; + + if (count == 0 || apps_separator == nil) return; + + menu = [apps_separator menu]; + + for (i = count - 1; i >= 0; i--) + { + if (menu != nil) + [self prepend_apps_item:list index:i menu:menu]; + if (dock_apps_menu != nil) + [self prepend_apps_item:list index:i menu:dock_apps_menu]; + } + + apps = [list retain]; +} + +- (void) set_window_menu:(NSArray *)list +{ + [self remove_window_menu]; + [self install_window_menu:list]; + + QuartzMessageServerThread (kXDarwinControllerNotify, 1, + AppleWMWindowMenuNotify); +} + +- (void) set_window_menu_check:(NSNumber *)nn +{ + NSMenu *menu; + NSMenuItem *item; + int first, count; + int n = [nn intValue]; + + menu = [window_separator menu]; + first = [menu indexOfItem:window_separator] + 1; + count = [menu numberOfItems] - first; + + if (checked_window_item >= 0 && checked_window_item < count) + { + item = (NSMenuItem *) [menu itemAtIndex:first + checked_window_item]; + [item setState:NSOffState]; + item = (NSMenuItem *) [dock_menu itemAtIndex:checked_window_item]; + [item setState:NSOffState]; + } + if (n >= 0 && n < count) + { + item = (NSMenuItem *) [menu itemAtIndex:first + n]; + [item setState:NSOnState]; + item = (NSMenuItem *) [dock_menu itemAtIndex:n]; + [item setState:NSOnState]; + } + checked_window_item = n; +} + +- (void) set_apps_menu:(NSArray *)list +{ + [self remove_apps_menu]; + [self install_apps_menu:list]; +} + +- (void) launch_client:(NSString *)filename +{ + const char *command = [filename UTF8String]; + const char *argv[5]; + int child1, child2 = 0; + int status; + + argv[0] = "/usr/bin/login"; + argv[1] = "-fp"; + argv[2] = getlogin(); + argv[3] = command; + argv[4] = NULL; + + /* Do the fork-twice trick to avoid having to reap zombies */ + + child1 = fork(); + + switch (child1) { + case -1: /* error */ + break; + + case 0: /* child1 */ + child2 = fork(); + + switch (child2) { + int max_files, i; + char buf[1024], *temp; + + case -1: /* error */ + _exit(1); + + case 0: /* child2 */ + /* close all open files except for standard streams */ + max_files = sysconf(_SC_OPEN_MAX); + for (i = 3; i < max_files; i++) close(i); + + /* ensure stdin is on /dev/null */ + close(0); + open("/dev/null", O_RDONLY); + + /* Setup environment */ + temp = getenv("DISPLAY"); + if (temp == NULL || temp[0] == 0) { + snprintf(buf, sizeof(buf), ":%s", display); + setenv("DISPLAY", buf, TRUE); + } + + temp = getenv("PATH"); + if (temp == NULL || temp[0] == 0) + setenv ("PATH", DEFAULT_PATH, TRUE); + else if (strnstr(temp, "/usr/X11/bin", sizeof(temp)) == NULL) { + snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", temp); + setenv("PATH", buf, TRUE); + } + /* cd $HOME */ + temp = getenv("HOME"); + if (temp != NULL && temp[0]!=0) chdir(temp); + + execvp(argv[0], (char **const) argv); + + _exit(2); + + default: /* parent (child1) */ + _exit(0); + } + break; + + default: /* parent */ + waitpid(child1, &status, 0); + } +} + +- (void) app_selected:sender +{ + int tag; + NSString *item; + + tag = [sender tag] - 1; + if (apps == nil || tag < 0 || tag >= [apps count]) + return; + + item = [[apps objectAtIndex:tag] objectAtIndex:1]; + + [self launch_client:item]; +} + +- (IBAction) apps_table_show:sender +{ + NSArray *columns; + + if (table_apps == nil) { + table_apps = [[NSMutableArray alloc] initWithCapacity:1]; + + if (apps != nil)[table_apps addObjectsFromArray:apps]; + } + + columns = [apps_table tableColumns]; + [[columns objectAtIndex:0] setIdentifier:@"0"]; + [[columns objectAtIndex:1] setIdentifier:@"1"]; + [[columns objectAtIndex:2] setIdentifier:@"2"]; + + [apps_table setDataSource:self]; + [apps_table selectRow:0 byExtendingSelection:NO]; + + [[apps_table window] makeKeyAndOrderFront:sender]; +} + +- (IBAction) apps_table_cancel:sender +{ + [[apps_table window] orderOut:sender]; + [apps_table reloadData]; + + [table_apps release]; + table_apps = nil; +} + +- (IBAction) apps_table_done:sender +{ + [apps_table deselectAll:sender]; /* flush edits? */ + + [self remove_apps_menu]; + [self install_apps_menu:table_apps]; + + [NSApp prefs_set_array:@PREFS_APPSMENU value:table_apps]; + [NSApp prefs_synchronize]; + + [[apps_table window] orderOut:sender]; + + [table_apps release]; + table_apps = nil; +} + +- (IBAction) apps_table_new:sender +{ + NSMutableArray *item; + + int row = [apps_table selectedRow], i; + + if (row < 0) row = 0; + else row = row + 1; + + i = row; + if (i > [table_apps count]) + return; /* avoid exceptions */ + + [apps_table deselectAll:sender]; + + item = [[NSMutableArray alloc] initWithCapacity:3]; + [item addObject:@""]; + [item addObject:@""]; + [item addObject:@""]; + + [table_apps insertObject:item atIndex:i]; + [item release]; + + [apps_table reloadData]; + [apps_table selectRow:row byExtendingSelection:NO]; +} + +- (IBAction) apps_table_duplicate:sender +{ + int row = [apps_table selectedRow], i; + NSObject *item; + + if (row < 0) { + [self apps_table_new:sender]; + return; + } + + i = row; + if (i > [table_apps count] - 1) return; /* avoid exceptions */ + + [apps_table deselectAll:sender]; + + item = [[table_apps objectAtIndex:i] mutableCopy]; + [table_apps insertObject:item atIndex:i]; + [item release]; + + [apps_table reloadData]; + [apps_table selectRow:row+1 byExtendingSelection:NO]; +} + +- (IBAction) apps_table_delete:sender +{ + int row = [apps_table selectedRow]; + + if (row >= 0) + { + int i = row; + + if (i > [table_apps count] - 1) return; /* avoid exceptions */ + + [apps_table deselectAll:sender]; + + [table_apps removeObjectAtIndex:i]; + } + + [apps_table reloadData]; + + row = MIN (row, [table_apps count] - 1); + if (row >= 0) + [apps_table selectRow:row byExtendingSelection:NO]; +} + +- (int) numberOfRowsInTableView:(NSTableView *)tableView +{ + if (table_apps == nil) return 0; + + return [table_apps count]; +} + +- (id) tableView:(NSTableView *)tableView +objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row +{ + NSArray *item; + int col; + + if (table_apps == nil) return nil; + + col = [[tableColumn identifier] intValue]; + + item = [table_apps objectAtIndex:row]; + if ([item count] > col) + return [item objectAtIndex:col]; + else + return @""; +} + +- (void) tableView:(NSTableView *)tableView setObjectValue:(id)object + forTableColumn:(NSTableColumn *)tableColumn row:(int)row +{ + NSMutableArray *item; + int col; + + if (table_apps == nil) return; + + col = [[tableColumn identifier] intValue]; + + item = [table_apps objectAtIndex:row]; + [item replaceObjectAtIndex:col withObject:object]; +} + +- (void) hide_window:sender +{ + if ([X11App x_active]) + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMHideWindow); + else + NSBeep (); /* FIXME: something here */ +} + +- (IBAction)bring_to_front:sender +{ + QuartzMessageServerThread(kXDarwinControllerNotify, 1, AppleWMBringAllToFront); +} + +- (IBAction)close_window:sender +{ + if ([X11App x_active]) + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMCloseWindow); + else + [[NSApp keyWindow] performClose:sender]; +} + +- (IBAction)minimize_window:sender +{ + if ([X11App x_active]) + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMMinimizeWindow); + else + [[NSApp keyWindow] performMiniaturize:sender]; +} + +- (IBAction)zoom_window:sender +{ + if ([X11App x_active]) + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMZoomWindow); + else + [[NSApp keyWindow] performZoom:sender]; +} + +- (IBAction) next_window:sender +{ + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMNextWindow); +} + +- (IBAction) previous_window:sender +{ + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMPreviousWindow); +} + +- (IBAction) enable_fullscreen_changed:sender +{ + int value = ![enable_fullscreen intValue]; + +#ifdef DARWIN_DDX_MISSING + QuartzMessageServerThread (kXDarwinSetRootless, 1, value); +#endif + + [NSApp prefs_set_boolean:@PREFS_ROOTLESS value:value]; + [NSApp prefs_synchronize]; +} + +- (IBAction) toggle_fullscreen:sender +{ +#ifdef DARWIN_DDX_MISSING + QuartzMessageServerThread (kXDarwinToggleFullscreen, 0); +#endif +} + +- (void) set_can_quit:(BOOL)state +{ + can_quit = state; +} + +- (IBAction)prefs_changed:sender +{ + darwinFakeButtons = [fake_buttons intValue]; + quartzUseSysBeep = [use_sysbeep intValue]; + X11EnableKeyEquivalents = [enable_keyequivs intValue]; + darwinSyncKeymap = [sync_keymap intValue]; + + /* after adding prefs here, also add to [X11Application read_defaults] + and below */ + + [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; + [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; + [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; + [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; + [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]]; + [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; + [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; + + [NSApp prefs_synchronize]; +} + +- (IBAction) prefs_show:sender +{ + [fake_buttons setIntValue:darwinFakeButtons]; + [use_sysbeep setIntValue:quartzUseSysBeep]; + [enable_keyequivs setIntValue:X11EnableKeyEquivalents]; + [sync_keymap setIntValue:darwinSyncKeymap]; + [sync_keymap setEnabled:darwinKeymapFile == NULL]; + + [enable_auth setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_AUTH default:NO]]; + [enable_tcp setIntValue:![NSApp prefs_get_boolean:@PREFS_NO_TCP default:NO]]; + [depth selectItemAtIndex:[depth indexOfItemWithTag:[NSApp prefs_get_integer:@PREFS_DEPTH default:-1]]]; + + [enable_fullscreen setIntValue:!quartzEnableRootless]; + + [prefs_panel makeKeyAndOrderFront:sender]; +} + +- (IBAction) quit:sender +{ + QuartzMessageServerThread (kXDarwinQuit, 0); +} + +- (IBAction) x11_help:sender +{ + AHLookupAnchor ((CFStringRef)NSLocalizedString(@"Mac Help", no comment), CFSTR ("mchlp2276")); +} + +- (BOOL) validateMenuItem:(NSMenuItem *)item +{ + NSMenu *menu = [item menu]; + + if (item == toggle_fullscreen_item) + return !quartzEnableRootless; + else if (menu == [window_separator menu] || menu == dock_menu + || (menu == [x11_about_item menu] && [item tag] == 42)) + return (AppleWMSelectedEvents () & AppleWMControllerNotifyMask) != 0; + else + return TRUE; +} + +- (void) applicationDidHide:(NSNotification *)notify +{ + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMHideAll); +} + +- (void) applicationDidUnhide:(NSNotification *)notify +{ + QuartzMessageServerThread (kXDarwinControllerNotify, 1, AppleWMShowAll); +} + +- (NSApplicationTerminateReply) applicationShouldTerminate:sender +{ + NSString *msg; + + if (can_quit || [X11App prefs_get_boolean:@PREFS_NO_QUIT_ALERT default:NO]) + return NSTerminateNow; + + /* Make sure we're frontmost. */ + [NSApp activateIgnoringOtherApps:YES]; + + msg = NSLocalizedString (@"Are you sure you want to quit X11?\n\nIf you quit X11, any X11 applications you are running will stop immediately and you will lose any changes you have not saved.", @"Dialog when quitting"); + + /* FIXME: safe to run the alert in here? Or should we return Later + and then run the alert on a timer? It seems to work here, so.. */ + + return (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Quit", @""), + NSLocalizedString (@"Cancel", @""), nil) + == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel; +} + +- (void) applicationWillTerminate:(NSNotification *)aNotification +{ + [X11App prefs_synchronize]; + + /* shutdown the X server, it will exit () for us. */ + QuartzMessageServerThread (kXDarwinQuit, 0); + + /* In case it doesn't, exit anyway after a while. */ + while (sleep (10) != 0) ; + exit (1); +} + +- (void) server_ready +{ + x_list *node; + + finished_launching = YES; + + for (node = pending_apps; node != NULL; node = node->next) + { + NSString *filename = node->data; + [self launch_client:filename]; + [filename release]; + } + + x_list_free (pending_apps); + pending_apps = NULL; +} + +- (BOOL) application:(NSApplication *)app openFile:(NSString *)filename +{ + const char *name = [filename UTF8String]; + + if (finished_launching) + [self launch_client:filename]; + else if (name[0] != ':') /* ignore display names */ + pending_apps = x_list_prepend (pending_apps, [filename retain]); + + /* FIXME: report failures. */ + return YES; +} + +@end + +void X11ControllerMain (int argc, const char *argv[], + void (*server_thread) (void *), void *server_arg) +{ + X11ApplicationMain (argc, argv, server_thread, server_arg); +} diff --git a/hw/darwin/apple/Xquartz.man b/hw/darwin/apple/Xquartz.man new file mode 100644 index 000000000..edac30ee9 --- /dev/null +++ b/hw/darwin/apple/Xquartz.man @@ -0,0 +1,158 @@ +.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.4 2002/01/09 18:01:58 torrey Exp $ +.\" +.TH XQUARTZ 1 __vendorversion__ +.SH NAME +Xquartz \- X window system server for Quartz operating system +.SH SYNOPSIS +.B Xquartz +[ options ] ... +.SH DESCRIPTION +.I Xquartz +is the X window server for Mac OS X provided by Apple. +.I Xquartz +runs in parallel with Aqua in rootless mode. In rootless mode, the X +window system and Mac OS X share your display. The root window of the +X11 display is the size of the screen and contains all the other +windows. The X11 root window is not displayed in rootless mode as Mac +OS X handles the desktop background. +.SH OPTIONS +.PP +In addition to the normal server options described in the \fIXserver(1)\fP +manual page, \fIXquartz\fP accepts the following command line switches: +.TP 8 +.B \-fakebuttons +Emulates a 3 button mouse using modifier keys. By default, the Command modifier +is used to emulate button 2 and Option is used for button 3. Thus, clicking the +first mouse button while holding down Command will act like clicking +button 2. Holding down Option will simulate button 3. +.TP 8 +.B \-nofakebuttons +Do not emulate a 3 button mouse. This is the default. +.TP 8 +.B "\-fakemouse2 \fImodifiers\fP" +Change the modifier keys used to emulate the second mouse button. By default, +Command is used to emulate the second button. Any combination of the following +modifier names may be used: Shift, Option, Control, Command, Fn. For example, +.B \-fakemouse2 """Option,Shift"" +will set holding Option, Shift and clicking on button one as equivalent to +clicking the second mouse button. +.TP 8 +.B "\-fakemouse3 \fImodifiers\fP" +Change the modifier keys used to emulate the third mouse button. By default, +Option is used to emulate the third button. Any combination of the following +modifier names may be used: Shift, Option, Control, Command, Fn. For example, +.B \-fakemouse3 """Control,Shift"" +will set holding Control, Shift and clicking on button one as equivalent to +clicking the third mouse button. +.TP 8 +.B "\-swapAltMeta" +Swaps the meaning of the Alt and Meta modifier keys. +.TP 8 +.B "\-keymap \fIfile\fP" +On startup \fIXquartz\fP translates a Darwin keymapping into an X keymap. +The default is to read this keymapping from USA.keymapping. With this option +the keymapping will be read from \fIfile\fP instead. If the file's path is +not specified, it will be searched for in Library/Keyboards/ underneath the +following directories (in order): ~, /, /Network, /System. +.TP 8 +.B \-nokeymap +On startup \fIXquartz\fP translates a Darwin keymapping into an X keymap. +With this option \fIXquartz\fP queries the kernel for the current keymapping +instead of reading it from a file. This will often fail on newer kernels. +.TP 8 +.B "\-depth \fIdepth\fP" +Specifies the color bit depth to use. Currently only 15, and 24 color +bits per pixel are supported. If not specified, defaults to the depth +of the main display. +.SH CUSTOMIZATION +\fIXquartz\fP can also be customized using the defaults(1) command. The available options are: +.TP 8 +.B defaults write com.apple.x11 enable_fake_buttons -boolean true +Equivalent to the \fB-fakebuttons\fP command line option. +.TP 8 +.B defaults write com.apple.x11 fake_button2 \fImodifiers\fP +Equivalent to the \fB-fakemouse2\fP option. +.TP 8 +.B defaults write com.apple.x11 fake_button3 \fImodifiers\fP +Equivalent to the \fB-fakemouse3\fP option. +.TP 8 +.B defaults write com.apple.x11 swap_alt_meta -boolean true +Equivalent to the \fB-swapAltMeta\fP option. +.TP 8 +.B defaults write com.apple.x11 keymap_file \fIfilename\fP +Equivalent to the \fB-keymap\fP option. +.TP 8 +.B defaults write com.apple.x11 no_quit_alert -boolean true +Disables the alert dialog displayed when attempting to quit X11. +.TP 8 +.B defaults write com.apple.x11 no_auth -boolean true +Stops the X server requiring that clients authenticate themselves when +connecting. See Xsecurity(__miscmansuffix__). +.TP 8 +.B defaults write com.apple.x11 nolisten_tcp -boolean true +Prevents the X server accepting remote connections. +.TP 8 +.B defaults write com.apple.x11 xinit_kills_server -boolean false +Stops the X server exiting when the xinitrc script terminates. +.TP 8 +.B defaults write com.apple.x11 fullscreen_hotkeys -boolean false +Allows system hotkeys to be handled while in X11 fullscreen mode. +.TP 8 +.B defaults write com.apple.x11 enable_system_beep -boolean false +Don't use the standard system beep effect for X11 alerts. +.TP 8 +.B defaults write com.apple.x11 enable_key_equivalents -boolean false +Disable menu keyboard equivalents while X11 windows are focused. +.TP 8 +.B defaults write com.apple.x11 depth \fIdepth\fP +Equivalent to the \fB-depth\fP option. +.SH "SEE ALSO" +.PP +X(__miscmansuffix__), XFree86(1), Xserver(1), xdm(1), xinit(1) +.PP +.SH AUTHORS +XFree86 was originally ported to Mac OS X Server by John Carmack. Dave +Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0. +Torrey T. Lyons improved and integrated this code into the XFree86 +Project's mainline for the 4.0.2 release. +.PP +The following members of the XonX Team contributed to the following +releases (in alphabetical order): +.TP 4 +XFree86 4.1.0: +.br +Rob Braun - Darwin x86 support +.br +Torrey T. Lyons - Project Lead +.br +Andreas Monitzer - Cocoa version of XDarwin front end +.br +Gregory Robert Parker - Original Quartz implementation +.br +Christoph Pfisterer - Dynamic shared X libraries +.br +Toshimitsu Tanaka - Japanese localization +.TP 4 +XFree86 4.2.0: +.br +Rob Braun - Darwin x86 support +.br +Pablo Di Noto - Spanish localization +.br +Paul Edens - Dutch localization +.br +Kyunghwan Kim - Korean localization +.br +Mario Klebsch - Non-US keyboard support +.br +Torrey T. Lyons - Project Lead +.br +Andreas Monitzer - German localization +.br +Patrik Montgomery - Swedish localization +.br +Greg Parker - Rootless support +.br +Toshimitsu Tanaka - Japanese localization +.br +Olivier Verdier - French localization diff --git a/hw/darwin/apple/bundle-main.c b/hw/darwin/apple/bundle-main.c new file mode 100644 index 000000000..34cbcbab5 --- /dev/null +++ b/hw/darwin/apple/bundle-main.c @@ -0,0 +1,914 @@ +/* bundle-main.c -- X server launcher + + Copyright (c) 2002-2007 Apple Inc. All rights reserved. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise to + promote the sale, use or other dealings in this Software without + prior written authorization. + + Parts of this file are derived from xdm, which has this copyright: + + Copyright 1988, 1998 The Open Group + + Permission to use, copy, modify, distribute, and sell this software + and its documentation for any purpose is hereby granted without fee, + provided that the above copyright notice appear in all copies and + that both that copyright notice and this permission notice appear in + supporting documentation. + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of The Open Group shall + not be used in advertising or otherwise to promote the sale, use or + other dealings in this Software without prior written authorization + from The Open Group. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#define X_SERVER "/usr/X11/bin/Xquartz" +#define XTERM_PATH "/usr/X11/bin/xterm" +#define WM_PATH "/usr/bin/quartz-wm" +#define DEFAULT_XINITRC "/usr/X11/lib/X11/xinit/xinitrc" +#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11/bin" + +/* what xinit does */ +#ifndef SHELL +# define SHELL "sh" +#endif + +#undef FALSE +#define FALSE 0 +#undef TRUE +#define TRUE 1 + +#define MAX_DISPLAYS 64 + +static int server_pid = -1, client_pid = -1; +static int xinit_kills_server = FALSE; +static jmp_buf exit_continuation; +static const char *server_name = NULL; +static Display *server_dpy; + +static char *auth_file; + +typedef struct addr_list_struct addr_list; + +struct addr_list_struct { + addr_list *next; + Xauth auth; +}; + +static addr_list *addresses; + + +/* Utility functions. */ + +/* Return the current host name. Matches what Xlib does. */ +static char * +host_name (void) +{ +#ifdef NEED_UTSNAME + static struct utsname name; + + uname(&name); + + return name.nodename; +#else + static char buf[100]; + + gethostname(buf, sizeof(buf)); + + return buf; +#endif +} + +static int +read_boolean_pref (CFStringRef name, int default_) +{ + int value; + Boolean ok; + + value = CFPreferencesGetAppBooleanValue (name, + CFSTR ("com.apple.x11"), &ok); + return ok ? value : default_; +} + +static inline int +binary_equal (const void *a, const void *b, int length) +{ + return memcmp (a, b, length) == 0; +} + +static inline void * +binary_dup (const void *a, int length) +{ + void *b = malloc (length); + if (b != NULL) + memcpy (b, a, length); + return b; +} + +static inline void +binary_free (void *data, int length) +{ + if (data != NULL) + free (data); +} + + +/* Functions for managing the authentication entries. */ + +/* Returns true if something matching AUTH is in our list of auth items */ +static int +check_auth_item (Xauth *auth) +{ + addr_list *a; + + for (a = addresses; a != NULL; a = a->next) + { + if (a->auth.family == auth->family + && a->auth.address_length == auth->address_length + && binary_equal (a->auth.address, auth->address, auth->address_length) + && a->auth.number_length == auth->number_length + && binary_equal (a->auth.number, auth->number, auth->number_length) + && a->auth.name_length == auth->name_length + && binary_equal (a->auth.name, auth->name, auth->name_length)) + { + return TRUE; + } + } + + return FALSE; +} + +/* Add one item to our list of auth items. */ +static void +add_auth_item (Xauth *auth) +{ + addr_list *a = malloc (sizeof (addr_list)); + + a->auth.family = auth->family; + a->auth.address_length = auth->address_length; + a->auth.address = binary_dup (auth->address, auth->address_length); + a->auth.number_length = auth->number_length; + a->auth.number = binary_dup (auth->number, auth->number_length); + a->auth.name_length = auth->name_length; + a->auth.name = binary_dup (auth->name, auth->name_length); + a->auth.data_length = auth->data_length; + a->auth.data = binary_dup (auth->data, auth->data_length); + + a->next = addresses; + addresses = a; +} + +/* Free all allocated auth items. */ +static void +free_auth_items (void) +{ + addr_list *a; + + while ((a = addresses) != NULL) + { + addresses = a->next; + + binary_free (a->auth.address, a->auth.address_length); + binary_free (a->auth.number, a->auth.number_length); + binary_free (a->auth.name, a->auth.name_length); + binary_free (a->auth.data, a->auth.data_length); + free (a); + } +} + +/* Add the unix domain auth item. */ +static void +define_local (Xauth *auth) +{ + char *host = host_name (); + +#ifdef DEBUG + fprintf (stderr, "x11: hostname is %s\n", host); +#endif + + auth->family = FamilyLocal; + auth->address_length = strlen (host); + auth->address = host; + + add_auth_item (auth); +} + +/* Add the tcp auth item. */ +static void +define_named (Xauth *auth, const char *name) +{ + struct ifaddrs *addrs, *ptr; + + if (getifaddrs (&addrs) != 0) + return; + + for (ptr = addrs; ptr != NULL; ptr = ptr->ifa_next) + { + if (ptr->ifa_addr->sa_family != AF_INET) + continue; + + auth->family = FamilyInternet; + auth->address_length = sizeof (struct in_addr); + auth->address = (char *) &(((struct sockaddr_in *) ptr->ifa_addr)->sin_addr); + +#ifdef DEBUG + fprintf (stderr, "x11: ipaddr is %d.%d.%d.%d\n", + (unsigned char) auth->address[0], + (unsigned char) auth->address[1], + (unsigned char) auth->address[2], + (unsigned char) auth->address[3]); +#endif + + add_auth_item (auth); + } + + freeifaddrs (addrs); +} + +/* Parse the display number from NAME and add it to AUTH. */ +static void +set_auth_number (Xauth *auth, const char *name) +{ + char *colon; + char *dot, *number; + + colon = strrchr(name, ':'); + if (colon != NULL) + { + colon++; + dot = strchr(colon, '.'); + + if (dot != NULL) + auth->number_length = dot - colon; + else + auth->number_length = strlen (colon); + + number = malloc (auth->number_length + 1); + if (number != NULL) + { + strncpy (number, colon, auth->number_length); + number[auth->number_length] = '\0'; + } + else + { + auth->number_length = 0; + } + + auth->number = number; + } +} + +/* Put 128 bits of random data into DATA. If possible, it will be "high + quality" */ +static int +generate_mit_magic_cookie (char data[16]) +{ + int fd, ret, i; + long *ldata = (long *) data; + + fd = open ("/dev/random", O_RDONLY); + if (fd > 0) { + ret = read (fd, data, 16); + close (fd); + if (ret == 16) return TRUE; + } + + /* fall back to the usual crappy rng */ + + srand48 (getpid () ^ time (NULL)); + + for (i = 0; i < 4; i++) + ldata[i] = lrand48 (); + + return TRUE; +} + +/* Create the keys we'll be using for the display named NAME. */ +static int +make_auth_keys (const char *name) +{ + Xauth auth; + char key[16]; + + if (auth_file == NULL) + return FALSE; + + auth.name = "MIT-MAGIC-COOKIE-1"; + auth.name_length = strlen (auth.name); + + if (!generate_mit_magic_cookie (key)) + { + auth_file = NULL; + return FALSE; + } + + auth.data = key; + auth.data_length = 16; + + set_auth_number (&auth, name); + + define_named (&auth, host_name ()); + define_local (&auth); + + free (auth.number); + + return TRUE; +} + +/* If ADD-ENTRIES is true, merge our auth entries into the existing + Xauthority file. If ADD-ENTRIES is false, remove our entries. */ +static int +write_auth_file (int add_entries) +{ + char *home, newname[1024]; + int fd, ret; + FILE *new_fh, *old_fh; + addr_list *addr; + Xauth *auth; + + if (auth_file == NULL) + return FALSE; + + home = getenv ("HOME"); + if (home == NULL) + { + auth_file = NULL; + return FALSE; + } + + snprintf (newname, sizeof (newname), "%s/.XauthorityXXXXXX", home); + mktemp (newname); + + if (XauLockAuth (auth_file, 1, 2, 10) != LOCK_SUCCESS) + { + /* FIXME: do something here? */ + + auth_file = NULL; + return FALSE; + } + + fd = open (newname, O_WRONLY | O_CREAT | O_TRUNC, 0600); + if (fd >= 0) + { + new_fh = fdopen (fd, "w"); + if (new_fh != NULL) + { + if (add_entries) + { + for (addr = addresses; addr != NULL; addr = addr->next) + { + XauWriteAuth (new_fh, &addr->auth); + } + } + + old_fh = fopen (auth_file, "r"); + if (old_fh != NULL) + { + while ((auth = XauReadAuth (old_fh)) != NULL) + { + if (!check_auth_item (auth)) + XauWriteAuth (new_fh, auth); + XauDisposeAuth (auth); + } + fclose (old_fh); + } + + fclose (new_fh); + unlink (auth_file); + + ret = rename (newname, auth_file); + + if (ret != 0) + auth_file = NULL; + + XauUnlockAuth (auth_file); + return ret == 0; + } + + close (fd); + } + + XauUnlockAuth (auth_file); + auth_file = NULL; + return FALSE; +} + + +/* Subprocess management functions. */ + +static int +start_server (char **xargv) +{ + int child; + + child = fork (); + + switch (child) + { + case -1: /* error */ + perror ("fork"); + return FALSE; + + case 0: /* child */ + execv (X_SERVER, xargv); + perror ("Couldn't exec " X_SERVER); + _exit (1); + + default: /* parent */ + server_pid = child; + return TRUE; + } +} + +static int +wait_for_server (void) +{ + int count = 100; + + while (count-- > 0) + { + int status; + + server_dpy = XOpenDisplay (server_name); + if (server_dpy != NULL) + return TRUE; + + if (waitpid (server_pid, &status, WNOHANG) == server_pid) + return FALSE; + + sleep (1); + } + + return FALSE; +} + +static int +start_client (void) +{ + int child; + + child = fork(); + + switch (child) { + char *temp, buf[1024]; + + case -1: /* error */ + perror("fork"); + return FALSE; + + case 0: /* child */ + /* Setup environment */ + temp = getenv("DISPLAY"); + if (temp != NULL && temp[0] != 0) + setenv("DISPLAY", server_name, TRUE); + + temp = getenv("PATH"); + if (temp == NULL || temp[0] == 0) + setenv ("PATH", DEFAULT_PATH, TRUE); + else if (strnstr(temp, "/usr/X11/bin", sizeof(temp)) == NULL) { + snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", temp); + setenv("PATH", buf, TRUE); + } + + /* First try value of $XINITRC, if set. */ + temp = getenv("XINITRC"); + if (temp != NULL && temp[0] != 0 && access(temp, R_OK) == 0) + execlp (SHELL, SHELL, temp, NULL); + + /* Then look for .xinitrc in user's home directory. */ + temp = getenv("HOME"); + if (temp != NULL && temp[0] != 0) { + chdir(temp); + snprintf (buf, sizeof (buf), "%s/.xinitrc", temp); + if (access(buf, R_OK) == 0) + execlp(SHELL, SHELL, buf, NULL); + } + + /* Then try the default xinitrc in the lib directory. */ + + if (access(DEFAULT_XINITRC, R_OK) == 0) + execlp(SHELL, SHELL, DEFAULT_XINITRC, NULL); + + /* Then fallback to hardcoding an xterm and the window manager. */ + + // system(XTERM_PATH " &"); + execl(WM_PATH, WM_PATH, NULL); + + perror("exec"); + _exit(1); + + default: /* parent */ + client_pid = child; + return TRUE; + } +} + +static void +sigchld_handler (int sig) +{ + int pid, status; + + again: + pid = waitpid (WAIT_ANY, &status, WNOHANG); + + if (pid > 0) + { + if (pid == server_pid) + { + server_pid = -1; + + if (client_pid >= 0) + kill (client_pid, SIGTERM); + } + else if (pid == client_pid) + { + client_pid = -1; + + if (server_pid >= 0 && xinit_kills_server) + kill (server_pid, SIGTERM); + } + goto again; + } + + if (server_pid == -1 && client_pid == -1) + longjmp (exit_continuation, 1); + + signal (SIGCHLD, sigchld_handler); +} + + +/* Server utilities. */ + +static Boolean +display_exists_p (int number) +{ + char buf[64]; + xcb_connection_t *conn; + char *fullname = NULL; + int idisplay, iscreen; + char *conn_auth_name, *conn_auth_data; + int conn_auth_namelen, conn_auth_datalen; + + // extern void *_X11TransConnectDisplay (); + // extern void _XDisconnectDisplay (); + + /* Since connecting to the display waits for a few seconds if the + display doesn't exist, check for trivial non-existence - if the + socket in /tmp exists or not.. (note: if the socket exists, the + server may still not, so we need to try to connect in that case..) */ + + sprintf (buf, "/tmp/.X11-unix/X%d", number); + if (access (buf, F_OK) != 0) + return FALSE; + + /* This is a private function that we shouldn't really be calling, + but it's the best way to see if the server exists (without + needing to hold the necessary authentication to use it) */ + + sprintf (buf, ":%d", number); + /* conn = _X11TransConnectDisplay (buf, &fullname, &idisplay, &iscreen, + &conn_auth_name, &conn_auth_namelen, + &conn_auth_data, &conn_auth_datalen); */ + conn = xcb_connect(buf, NULL); + + if (conn == NULL) + return FALSE; + + // _XDisconnectDisplay (conn); + xcb_disconnect(conn); + return TRUE; +} + + +/* Monitoring when the system's ip addresses change. */ + +static Boolean pending_timer; + +static void +timer_callback (CFRunLoopTimerRef timer, void *info) +{ + pending_timer = FALSE; + + /* Update authentication names. Need to write .Xauthority file first + without the existing entries, then again with the new entries.. */ + + write_auth_file (FALSE); + + free_auth_items (); + make_auth_keys (server_name); + + write_auth_file (TRUE); +} + +/* This function is called when the system's ip addresses may have changed. */ +static void +ipaddr_callback (SCDynamicStoreRef store, CFArrayRef changed_keys, void *info) +{ +#if DEBUG + if (changed_keys != NULL) { + fprintf (stderr, "x11: changed sc keys: "); + CFShow (changed_keys); + } +#endif + + if (auth_file != NULL && !pending_timer) + { + CFRunLoopTimerRef timer; + + timer = CFRunLoopTimerCreate (NULL, CFAbsoluteTimeGetCurrent () + 1.0, + 0.0, 0, 0, timer_callback, NULL); + CFRunLoopAddTimer (CFRunLoopGetCurrent (), timer, + kCFRunLoopDefaultMode); + CFRelease (timer); + + pending_timer = TRUE; + } +} + +/* This code adapted from "Living in a Dynamic TCP/IP Environment" technote. */ +static Boolean +install_ipaddr_source (void) +{ + CFRunLoopSourceRef source = NULL; + + SCDynamicStoreContext context = {0}; + SCDynamicStoreRef ref; + + ref = SCDynamicStoreCreate (NULL, + CFSTR ("AddIPAddressListChangeCallbackSCF"), + ipaddr_callback, &context); + + if (ref != NULL) + { + const void *keys[4], *patterns[2]; + int i; + + keys[0] = SCDynamicStoreKeyCreateNetworkGlobalEntity (NULL, kSCDynamicStoreDomainState, kSCEntNetIPv4); + keys[1] = SCDynamicStoreKeyCreateNetworkGlobalEntity (NULL, kSCDynamicStoreDomainState, kSCEntNetIPv6); + keys[2] = SCDynamicStoreKeyCreateComputerName (NULL); + keys[3] = SCDynamicStoreKeyCreateHostNames (NULL); + + patterns[0] = SCDynamicStoreKeyCreateNetworkInterfaceEntity (NULL, kSCDynamicStoreDomainState, kSCCompAnyRegex, kSCEntNetIPv4); + patterns[1] = SCDynamicStoreKeyCreateNetworkInterfaceEntity (NULL, kSCDynamicStoreDomainState, kSCCompAnyRegex, kSCEntNetIPv6); + + if (keys[0] != NULL && keys[1] != NULL && keys[2] != NULL + && keys[3] != NULL && patterns[0] != NULL && patterns[1] != NULL) + { + CFArrayRef key_array, pattern_array; + + key_array = CFArrayCreate (NULL, keys, 4, &kCFTypeArrayCallBacks); + pattern_array = CFArrayCreate (NULL, patterns, 2, &kCFTypeArrayCallBacks); + + if (key_array != NULL || pattern_array != NULL) + { + SCDynamicStoreSetNotificationKeys (ref, key_array, pattern_array); + source = SCDynamicStoreCreateRunLoopSource (NULL, ref, 0); + } + + if (key_array != NULL) + CFRelease (key_array); + if (pattern_array != NULL) + CFRelease (pattern_array); + } + + + for (i = 0; i < 4; i++) + if (keys[i] != NULL) + CFRelease (keys[i]); + for (i = 0; i < 2; i++) + if (patterns[i] != NULL) + CFRelease (patterns[i]); + + CFRelease (ref); + } + + if (source != NULL) + { + CFRunLoopAddSource (CFRunLoopGetCurrent (), + source, kCFRunLoopDefaultMode); + CFRelease (source); + } + + return source != NULL; +} + + +/* Entrypoint. */ + +void +termination_signal_handler (int unused_sig) +{ + signal (SIGTERM, SIG_DFL); + signal (SIGHUP, SIG_DFL); + signal (SIGINT, SIG_DFL); + signal (SIGQUIT, SIG_DFL); + + longjmp (exit_continuation, 1); +} + +int +main (int argc, char **argv) +{ + char **xargv; + int i, j; + int fd; + + xargv = alloca (sizeof (char *) * (argc + 32)); + + if (!read_boolean_pref (CFSTR ("no_auth"), FALSE)) + auth_file = XauFileName (); + + /* The standard X11 behaviour is for the server to quit when the first + client exits. But it can be useful for debugging (and to mimic our + behaviour in the beta releases) to not do that. */ + + xinit_kills_server = read_boolean_pref (CFSTR ("xinit_kills_server"), TRUE); + + for (i = 1; i < argc; i++) + { + if (argv[i][0] == ':') + server_name = argv[i]; + } + + if (server_name == NULL) + { + static char name[8]; + + /* No display number specified, so search for the first unused. + + There's a big old race condition here if two servers start at + the same time, but that's fairly unlikely. We could create + lockfiles or something, but that's seems more likely to cause + problems than the race condition itself.. */ + + for (i = 0; i < MAX_DISPLAYS; i++) + { + if (!display_exists_p (i)) + break; + } + + if (i == MAX_DISPLAYS) + { + fprintf (stderr, "%s: couldn't allocate a display number", argv[0]); + exit (1); + } + + sprintf (name, ":%d", i); + server_name = name; + } + + if (auth_file != NULL) + { + /* Create new Xauth keys and add them to the .Xauthority file */ + + make_auth_keys (server_name); + write_auth_file (TRUE); + } + + /* Construct our new argv */ + + i = j = 0; + + xargv[i++] = argv[j++]; + + if (auth_file != NULL) + { + xargv[i++] = "-auth"; + xargv[i++] = auth_file; + } + + /* By default, don't listen on tcp sockets if Xauth is disabled. */ + + if (read_boolean_pref (CFSTR ("nolisten_tcp"), auth_file == NULL)) + { + xargv[i++] = "-nolisten"; + xargv[i++] = "tcp"; + } + + while (j < argc) + { + if (argv[j++][0] != ':') + xargv[i++] = argv[j-1]; + } + + xargv[i++] = (char *) server_name; + xargv[i++] = NULL; + + /* Detach from any controlling terminal and connect stdin to /dev/null */ + +#ifdef TIOCNOTTY + fd = open ("/dev/tty", O_RDONLY); + if (fd != -1) + { + ioctl (fd, TIOCNOTTY, 0); + close (fd); + } +#endif + + fd = open ("/dev/null", O_RDWR, 0); + if (fd >= 0) + { + dup2 (fd, 0); + if (fd > 0) + close (fd); + } + + if (!start_server (xargv)) + return 1; + + if (!wait_for_server ()) + { + kill (server_pid, SIGTERM); + return 1; + } + + if (!start_client ()) + { + kill (server_pid, SIGTERM); + return 1; + } + + signal (SIGCHLD, sigchld_handler); + + signal (SIGTERM, termination_signal_handler); + signal (SIGHUP, termination_signal_handler); + signal (SIGINT, termination_signal_handler); + signal (SIGQUIT, termination_signal_handler); + + if (setjmp (exit_continuation) == 0) + { + if (install_ipaddr_source ()) + CFRunLoopRun (); + else + while (1) pause (); + } + + signal (SIGCHLD, SIG_IGN); + + if (client_pid >= 0) kill (client_pid, SIGTERM); + if (server_pid >= 0) kill (server_pid, SIGTERM); + + if (auth_file != NULL) + { + /* Remove our Xauth keys */ + + write_auth_file (FALSE); + } + + free_auth_items (); + + return 0; +} diff --git a/hw/darwin/bundle/Dutch.lproj/Localizable.strings b/hw/darwin/bundle/Dutch.lproj/Localizable.strings index 6abd9107299ea24f4724f2fe30c513968b74e8cc..4fe16b355438d41c73a9a500e7462adcee91999c 100644 GIT binary patch delta 16 XcmbQl-N(J*In(5qOkJBxnPr&(IlcxW delta 20 bcmeC $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/English.lproj/Localizable.strings b/hw/darwin/bundle/English.lproj/Localizable.strings index 2c25c1dc31fc32a5c85b97b5bd0bb8535589cb7c..f2e8e3c238ea22879f195a9af3ad9c3667f34a67 100644 GIT binary patch literal 1424 zcmd6nO;5r=5QgXMuV@G-A{6l>24jpOo-}IE=(W&-XemuwME&vVGh1K_67*=Ac6Mjy zC7H$XSGRkbSmT#1eE zfUhSbGP+o5-eiW;CF>Ne&w0X1@ww6ko#qL#bXTgbq0OT{b9TAJfQP60)K;q9CYvKW z=y#C~sq-}OuA_6&)zQ`s?tNra_E;+;V=!q|%1@h$Vq}>&uYF$q9jG&tch0qTL~B&W zVk(Q+g$uuu+)|(VR&3+kNeK5szbf5*qZG zscB?>8 z$a$Q5XGk^0EpM#x1#FdRYu+fwD>-i}_NdnI;tX#*8s8^Y9i$-q)*0>>SYque77*tN zrs_ydalE{9L>IF;wwbD3wQ;)iYU#=KOjWch*RD0JRt@Kt)F_?UzVxs96%FW>rDT-- z@`}^s9A{~IrqWY&o+6#izoql9Gf3qeb-3NuI1cJT{?Uk~;96U9f?6}#kefU-MtZ-| z$BzlV<8$aT0%$A$>X&{G!}vQ6T4ODQTxnPfL30P!Fo(J&o(< $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp \ + InfoPlist.strings.cpp + diff --git a/hw/darwin/bundle/French.lproj/Makefile.am b/hw/darwin/bundle/French.lproj/Makefile.am new file mode 100644 index 000000000..4dca9342f --- /dev/null +++ b/hw/darwin/bundle/French.lproj/Makefile.am @@ -0,0 +1,41 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit + +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +Frenchlprojdir = $(resourcesdir)/French.lproj + +Frenchlproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings + +Frenchlprojnibdir = $(Frenchlprojdir)/MainMenu.nib +Frenchlprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/German.lproj/Makefile.am b/hw/darwin/bundle/German.lproj/Makefile.am new file mode 100644 index 000000000..fcb5dd24f --- /dev/null +++ b/hw/darwin/bundle/German.lproj/Makefile.am @@ -0,0 +1,39 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +Germanlprojdir = $(resourcesdir)/German.lproj + +Germanlproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings Localizable.strings + +Germanlprojnibdir = $(Germanlprojdir)/MainMenu.nib +Germanlprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/Info.plist b/hw/darwin/bundle/Info.plist new file mode 100644 index 000000000..7e1770819 --- /dev/null +++ b/hw/darwin/bundle/Info.plist @@ -0,0 +1,66 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + x11app + + CFBundleTypeName + X11 Application + CFBundleTypeOSTypes + + **** + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + tool + * + + CFBundleTypeName + UNIX Application + CFBundleTypeOSTypes + + **** + + CFBundleTypeRole + Viewer + + + CFBundleExecutable + XDarwin + CFBundleGetInfoString + XDarwin 1.4.0, X.Org Foundation + CFBundleIconFile + XDarwin.icns + CFBundleIdentifier + org.x.X11 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + XDarwin + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.0.0 + CFBundleSignature + ???? + CFBundleVersion + + NSHelpFile + XDarwinHelp.html + NSMainNibFile + MainMenu + NSPrincipalClass + XApplication + + diff --git a/hw/darwin/bundle/Japanese.lproj/Makefile.am b/hw/darwin/bundle/Japanese.lproj/Makefile.am new file mode 100644 index 000000000..8d891edb5 --- /dev/null +++ b/hw/darwin/bundle/Japanese.lproj/Makefile.am @@ -0,0 +1,40 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +Japaneselprojdir = $(resourcesdir)/Japanese.lproj + +Japaneselproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings + +Japaneselprojnibdir = $(Japaneselprojdir)/MainMenu.nib +Japaneselprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/Makefile.am b/hw/darwin/bundle/Makefile.am new file mode 100644 index 000000000..dee34fd83 --- /dev/null +++ b/hw/darwin/bundle/Makefile.am @@ -0,0 +1,38 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + +SUBDIRS = English.lproj Dutch.lproj French.lproj German.lproj Japanese.lproj \ + ko.lproj Portuguese.lproj Spanish.lproj Swedish.lproj + +bin_SCRIPTS = startXClients + +startXClients: $(srcdir)/startXClients.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) -DXINITDIR=$(XINITDIR) -DXBINDIR=$(BINDIR) $< | $(CPP_SED_MAGIC) > $@ + -chmod 755 startXClients + +contentsdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents +resourcesdir = $(contentsdir)/Resources + +contents_DATA = Info.plist +resources_DATA = XDarwin.icns startXClients + +install-data-hook: + chmod 755 $(DESTDIR)$(resourcesdir)/startXClients + echo "APPL????" > $(DESTDIR)$(contentsdir)/PkgInfo + touch $(DESTDIR)@APPLE_APPLICATIONS_DIR@/XDarwin.app + +uninstall-hook: + rm -rf $(DESTDIR)$(contentsdir)/PkgInfo + +CLEANFILES = startXClients + +EXTRA_DIST = \ + XDarwin.icns \ + Info.plist diff --git a/hw/darwin/bundle/Portuguese.lproj/Makefile.am b/hw/darwin/bundle/Portuguese.lproj/Makefile.am new file mode 100644 index 000000000..540649c7a --- /dev/null +++ b/hw/darwin/bundle/Portuguese.lproj/Makefile.am @@ -0,0 +1,39 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +Portugueselprojdir = $(resourcesdir)/Portuguese.lproj + +Portugueselproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings + +Portugueselprojnibdir = $(Portugueselprojdir)/MainMenu.nib +Portugueselprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/Spanish.lproj/Makefile.am b/hw/darwin/bundle/Spanish.lproj/Makefile.am new file mode 100644 index 000000000..978ac3542 --- /dev/null +++ b/hw/darwin/bundle/Spanish.lproj/Makefile.am @@ -0,0 +1,39 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +Spanishlprojdir = $(resourcesdir)/Spanish.lproj + +Spanishlproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings + +Spanishlprojnibdir = $(Spanishlprojdir)/MainMenu.nib +Spanishlprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/Swedish.lproj/Makefile.am b/hw/darwin/bundle/Swedish.lproj/Makefile.am new file mode 100644 index 000000000..3cf542c4a --- /dev/null +++ b/hw/darwin/bundle/Swedish.lproj/Makefile.am @@ -0,0 +1,39 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +Swedishlprojdir = $(resourcesdir)/Swedish.lproj + +Swedishlproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings + +Swedishlprojnibdir = $(Swedishlprojdir)/MainMenu.nib +Swedishlprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/bundle/ko.lproj/Makefile.am b/hw/darwin/bundle/ko.lproj/Makefile.am new file mode 100644 index 000000000..a5462ff9f --- /dev/null +++ b/hw/darwin/bundle/ko.lproj/Makefile.am @@ -0,0 +1,40 @@ +BINDIR = ${bindir} +include $(top_srcdir)/cpprules.in +XINITDIR = $(libdir)/X11/xinit +XDEFS = \ + -DX_VERSION="$(PLIST_VERSION_STRING)" \ + -DX_PRE_RELEASE="$(PRE)" \ + -DX_REL_DATE="$(XORG_DATE)" \ + -DX_VENDOR_NAME="$(VENDOR_STRING)" \ + -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" + + +resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources + +kolprojdir = $(resourcesdir)/ko.lproj + +kolproj_DATA = \ + XDarwinHelp.html \ + InfoPlist.strings \ + Credits.rtf Localizable.strings + +kolprojnibdir = $(kolprojdir)/MainMenu.nib +kolprojnib_DATA = \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib + +InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ + +XDarwinHelp.html: XDarwinHelp.html.cpp + $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ + +CLEANFILES = XDarwinHelp.html InfoPlist.strings + +EXTRA_DIST = \ + Credits.rtf Localizable.strings \ + Localizable.strings \ + MainMenu.nib/classes.nib \ + MainMenu.nib/objects.nib \ + XDarwinHelp.html.cpp + diff --git a/hw/darwin/iokit/Makefile.am b/hw/darwin/iokit/Makefile.am new file mode 100644 index 000000000..77227d77b --- /dev/null +++ b/hw/darwin/iokit/Makefile.am @@ -0,0 +1,17 @@ +noinst_LIBRARIES = libiokit.a + +AM_CFLAGS = @XORG_CFLAGS@ +INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ +AM_DEFS = +if XQUARTZ +AM_DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server +XQUARTZ_SUBDIRS = bundle quartz +endif +DEFS = @DEFS@ $(AM_DEFS) + +libiokit_a_SOURCES = xfIOKit.c \ + xfIOKitCursor.c \ + xfIOKitStartup.c + +EXTRA_DIST = \ + xfIOKit.h diff --git a/hw/darwin/launcher/Info.plist b/hw/darwin/launcher/Info.plist new file mode 100644 index 000000000..b5385b61a --- /dev/null +++ b/hw/darwin/launcher/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + X11 + CFBundleGetInfoString + 2.0, Copyright © 2003-2007, Apple Inc. + CFBundleIconFile + X11.icns + CFBundleIdentifier + org.x.X11_launcher + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + X11 + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.0 + CFBundleSignature + x11l + LSUIElement + 1 + NSHumanReadableCopyright + Copyright © 2007, Apple Inc. + + diff --git a/hw/darwin/launcher/X11.icns b/hw/darwin/launcher/X11.icns new file mode 100644 index 0000000000000000000000000000000000000000..d770e617ddb455d8a499550e712f93a06a69f871 GIT binary patch literal 65908 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 E014<25dZ)H literal 0 HcmV?d00001 diff --git a/hw/darwin/launcher/X11.xcodeproj/project.pbxproj b/hw/darwin/launcher/X11.xcodeproj/project.pbxproj new file mode 100644 index 000000000..f82552ac5 --- /dev/null +++ b/hw/darwin/launcher/X11.xcodeproj/project.pbxproj @@ -0,0 +1,297 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 527F241B0B5D938C007840A7 /* X11.icns in Resources */ = {isa = PBXBuildFile; fileRef = 50459C5F038587C60ECA21EC /* X11.icns */; }; + 527F241D0B5D938C007840A7 /* bundle-main.c in Sources */ = {isa = PBXBuildFile; fileRef = 50EE2AB703849F0B0ECA21EC /* bundle-main.c */; }; + 527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */; }; + 527F24370B5D9D89007840A7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 527F24260B5D938C007840A7 /* Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 50459C5F038587C60ECA21EC /* X11.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = X11.icns; sourceTree = ""; }; + 50EE2AB703849F0B0ECA21EC /* bundle-main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = "bundle-main.c"; sourceTree = ""; }; + 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 527F24260B5D938C007840A7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; + 527F24270B5D938C007840A7 /* X11.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = X11.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 527F241E0B5D938C007840A7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 195DF8CFFE9D517E11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 527F24270B5D938C007840A7 /* X11.app */, + ); + name = Products; + sourceTree = ""; + }; + 20286C29FDCF999611CA2CEA /* X11 */ = { + isa = PBXGroup; + children = ( + 20286C2AFDCF999611CA2CEA /* Sources */, + 20286C2CFDCF999611CA2CEA /* Resources */, + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */, + 195DF8CFFE9D517E11CA2CBB /* Products */, + 527F24260B5D938C007840A7 /* Info.plist */, + ); + name = X11; + sourceTree = ""; + }; + 20286C2AFDCF999611CA2CEA /* Sources */ = { + isa = PBXGroup; + children = ( + 50EE2AB703849F0B0ECA21EC /* bundle-main.c */, + ); + name = Sources; + sourceTree = ""; + }; + 20286C2CFDCF999611CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 50459C5F038587C60ECA21EC /* X11.icns */, + ); + name = Resources; + sourceTree = ""; + }; + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 527F24170B5D938C007840A7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 527F24160B5D938C007840A7 /* X11 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */; + buildPhases = ( + 527F24170B5D938C007840A7 /* Headers */, + 527F24180B5D938C007840A7 /* Resources */, + 527F241C0B5D938C007840A7 /* Sources */, + 527F241E0B5D938C007840A7 /* Frameworks */, + 527F24210B5D938C007840A7 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = X11; + productName = X11; + productReference = 527F24270B5D938C007840A7 /* X11.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 20286C28FDCF999611CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 20286C29FDCF999611CA2CEA /* X11 */; + projectDirPath = ""; + projectRoot = ""; + shouldCheckCompatibility = 1; + targets = ( + 527F24160B5D938C007840A7 /* X11 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 527F24180B5D938C007840A7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 527F24370B5D9D89007840A7 /* Info.plist in Resources */, + 527F241B0B5D938C007840A7 /* X11.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 527F24210B5D938C007840A7 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 527F241C0B5D938C007840A7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 527F241D0B5D938C007840A7 /* bundle-main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 527F24090B5D8FFC007840A7 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + SKIP_INSTALL = YES; + }; + name = Development; + }; + 527F240A0B5D8FFC007840A7 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + SKIP_INSTALL = YES; + }; + name = Deployment; + }; + 527F240B0B5D8FFC007840A7 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + SKIP_INSTALL = YES; + }; + name = Default; + }; + 527F24230B5D938C007840A7 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_32_BIT)"; + COPY_PHASE_STRIP = NO; + DSTROOT = "$(DSTROOT)"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = /usr/X11/include; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = $DSTROOT/Applications/Utilties; + LIBRARY_SEARCH_PATHS = /usr/X11/lib; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lXau", + "-lxcb", + "-lX11", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = X11; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = app; + }; + name = Development; + }; + 527F24240B5D938C007840A7 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DSTROOT = "$(DSTROOT)"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = /usr/X11/include; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = $DSTROOT/Applications/Utilties; + LIBRARY_SEARCH_PATHS = /usr/X11/lib; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = X11; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = app; + }; + name = Deployment; + }; + 527F24250B5D938C007840A7 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = "$(DSTROOT)"; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + HEADER_SEARCH_PATHS = /usr/X11/include; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = $DSTROOT/Applications/Utilties; + LIBRARY_SEARCH_PATHS = /usr/X11/lib; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-lXau", + "-lxcb", + "-lX11", + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = X11; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = app; + }; + name = Default; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 527F24090B5D8FFC007840A7 /* Development */, + 527F240A0B5D8FFC007840A7 /* Deployment */, + 527F240B0B5D8FFC007840A7 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 527F24230B5D938C007840A7 /* Development */, + 527F24240B5D938C007840A7 /* Deployment */, + 527F24250B5D938C007840A7 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; +/* End XCConfigurationList section */ + }; + rootObject = 20286C28FDCF999611CA2CEA /* Project object */; +} diff --git a/hw/darwin/launcher/bundle-main.c b/hw/darwin/launcher/bundle-main.c new file mode 100644 index 000000000..988c04f68 --- /dev/null +++ b/hw/darwin/launcher/bundle-main.c @@ -0,0 +1,79 @@ +/* main.c -- X application launcher + + Copyright (c) 2007 Apple Inc. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT + HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise to + promote the sale, use or other dealings in this Software without + prior written authorization. */ + +#include +#include +#include + +#include + +#define DEFAULT_APP "/usr/X11/bin/xterm" + +int main (int argc, char **argv) { + char *command = DEFAULT_APP; + const char *newargv[5]; + int child; + + + CFPropertyListRef PlistRef = CFPreferencesCopyAppValue(CFSTR("app_to_run"), + kCFPreferencesCurrentApplication); + + if ((PlistRef == NULL) || (CFGetTypeID(PlistRef) != CFStringGetTypeID())) { + CFPreferencesSetAppValue(CFSTR("app_to_run"), CFSTR(DEFAULT_APP), + kCFPreferencesCurrentApplication); + CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication); + } else { + int len = CFStringGetLength((CFStringRef)PlistRef)+1; + command = (char *) malloc(len); + CFStringGetCString((CFStringRef)PlistRef, command, len, kCFStringEncodingASCII); + fprintf(stderr, "command=%s\n", command); + } + + if (PlistRef) CFRelease(PlistRef); + + newargv[0] = "/usr/bin/login"; + newargv[1] = "-fp"; + newargv[2] = getlogin(); + newargv[3] = command; + newargv[4] = NULL; + + child = fork(); + + switch (child) { + case -1: /* error */ + perror ("fork"); + return EXIT_FAILURE; + case 0: /* child */ + execvp (newargv[0], (char **const) newargv); + perror ("Couldn't exec"); + _exit (1); + } + + return 0; +} diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am new file mode 100644 index 000000000..bc6d4fc29 --- /dev/null +++ b/hw/darwin/quartz/Makefile.am @@ -0,0 +1,57 @@ +noinst_LIBRARIES = libXQuartz.a + +AM_CFLAGS = @XORG_CFLAGS@ +AM_OBJCFLAGS = @XORG_CFLAGS@ + +INCLUDES = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ +AM_DEFS = -DHAS_CG_MACH_PORT -DHAS_KL_API +if HAVE_X_PLUGIN +AM_DEFS += -DBUILD_XPR +XPR = xpr +endif +DEFS = @DEFS@ $(AM_DEFS) -DXBINDIR=\"${bindir}\" +SUBDIRS = cr fullscreen $(XPR) + +libXQuartz_a_SOURCES = \ + Preferences.m \ + XApplication.m \ + XServer.m \ + applewm.c \ + keysym2ucs.c \ + quartz.c \ + quartzAudio.c \ + quartzCocoa.m \ + quartzPasteboard.c \ + quartzKeyboard.c \ + quartzStartup.c \ + pseudoramiX.c + +bin_PROGRAMS = XDarwinStartup + +XDarwinStartup_SOURCES = XDarwinStartup.c +XDarwinStartup_LDFLAGS = -Wl,-framework,CoreFoundation \ + -Wl,-framework,ApplicationServices +XDarwinStartupCFLAGS = -DXBINDIR="${bindir}" +XDARWINROOT = @APPLE_APPLICATIONS_DIR@ +BINDIR = $(bindir) +install-exec-local: + -(cd $(DESTDIR)$(BINDIR); rm X; $(LN_S) XDarwinStartup X) + +man1_MANS = XDarwinStartup.man + + +EXTRA_DIST = \ + applewmExt.h \ + keysym2ucs.h \ + Preferences.h \ + pseudoramiX.h \ + quartzAudio.h \ + quartzCommon.h \ + quartzCursor.c \ + quartzCursor.h \ + quartz.h \ + quartzPasteboard.h \ + XApplication.h \ + XDarwin.pbproj/project.pbxproj \ + XServer.h \ + XDarwinStartup.man diff --git a/hw/darwin/quartz/cr/Makefile.am b/hw/darwin/quartz/cr/Makefile.am new file mode 100644 index 000000000..abfac991c --- /dev/null +++ b/hw/darwin/quartz/cr/Makefile.am @@ -0,0 +1,21 @@ +noinst_LIBRARIES = libcr.a +AM_CFLAGS = @XORG_CFLAGS@ +AM_OBJCFLAGS = @XORG_CFLAGS@ +DEFS = @DEFS@ -DDEFER_NSWINDOW +INCLUDES = @XORG_INCS@ \ + -I../fullscreen \ + -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \ + -I$(top_srcdir)/miext/rootless \ + -I$(top_srcdir)/miext/rootless/safeAlpha \ + -I$(top_srcdir)/mi + +libcr_a_SOURCES = crAppleWM.m \ + crFrame.m \ + crScreen.m \ + ../fullscreen/quartzCursor.c \ + XView.m + +EXTRA_DIST = \ + cr.h \ + XView.h + diff --git a/hw/darwin/quartz/fullscreen/Makefile.am b/hw/darwin/quartz/fullscreen/Makefile.am new file mode 100644 index 000000000..37c767c35 --- /dev/null +++ b/hw/darwin/quartz/fullscreen/Makefile.am @@ -0,0 +1,9 @@ +noinst_LIBRARIES = libfullscreen.a +AM_CFLAGS = @XORG_CFLAGS@ +INCLUDES = @XORG_INCS@ -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. + +libfullscreen_a_SOURCES = fullscreen.c \ + quartzCursor.c + +EXTRA_DIST = \ + quartzCursor.h diff --git a/hw/darwin/quartz/xpr/Makefile.am b/hw/darwin/quartz/xpr/Makefile.am new file mode 100644 index 000000000..980c7a4d6 --- /dev/null +++ b/hw/darwin/quartz/xpr/Makefile.am @@ -0,0 +1,30 @@ +noinst_LIBRARIES = libxpr.a +AM_CFLAGS = @XORG_CFLAGS@ +INCLUDES = @XORG_INCS@ \ + -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \ + -I$(top_srcdir)/miext/rootless \ + -I$(top_srcdir)/miext/rootless/safeAlpha \ + -I$(top_srcdir)/miext + +libxpr_a_SOURCES = \ + appledri.c \ + dri.c \ + xprAppleWM.c \ + xprCursor.c \ + xprFrame.c \ + xprScreen.c \ + x-hash.c \ + x-hook.c \ + x-list.c + +xprbundledir = @APPLE_APPLICATIONS_DIR@/Resources/xpr.bundle/Contents/MacOS + +EXTRA_DIST = \ + dri.h \ + dristruct.h \ + x-hash.h \ + x-hook.h \ + x-list.h \ + Xplugin.h \ + xpr.h + diff --git a/hw/darwin/quartz/xpr/appledri.h b/hw/darwin/quartz/xpr/appledri.h new file mode 100644 index 000000000..9c630373d --- /dev/null +++ b/hw/darwin/quartz/xpr/appledri.h @@ -0,0 +1,107 @@ +/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */ +/************************************************************************** + +Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +Copyright 2000 VA Linux Systems, Inc. +Copyright (c) 2002 Apple Computer, Inc. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +/* + * Authors: + * Kevin E. Martin + * Jens Owen + * Rickard E. (Rik) Faith + * + */ + +#ifndef _APPLEDRI_H_ +#define _APPLEDRI_H_ + +#include + +#define X_AppleDRIQueryVersion 0 +#define X_AppleDRIQueryDirectRenderingCapable 1 +#define X_AppleDRICreateSurface 2 +#define X_AppleDRIDestroySurface 3 +#define X_AppleDRIAuthConnection 4 +/* Requests up to and including 18 were used in a previous version */ + +/* Events */ +#define AppleDRIObsoleteEvent1 0 +#define AppleDRIObsoleteEvent2 1 +#define AppleDRIObsoleteEvent3 2 +#define AppleDRISurfaceNotify 3 +#define AppleDRINumberEvents 4 + +/* Errors */ +#define AppleDRIClientNotLocal 0 +#define AppleDRIOperationNotSupported 1 +#define AppleDRINumberErrors (AppleDRIOperationNotSupported + 1) + +/* Kinds of SurfaceNotify events: */ +#define AppleDRISurfaceNotifyChanged 0 +#define AppleDRISurfaceNotifyDestroyed 1 + +#ifndef _APPLEDRI_SERVER_ + +typedef struct { + int type; /* of event */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came frome a SendEvent request */ + Display *display; /* Display the event was read from */ + Window window; /* window of event */ + Time time; /* server timestamp when event happened */ + int kind; /* subtype of event */ + int arg; +} XAppleDRINotifyEvent; + +_XFUNCPROTOBEGIN + +Bool XAppleDRIQueryExtension (Display *dpy, int *event_base, int *error_base); + +Bool XAppleDRIQueryVersion (Display *dpy, int *majorVersion, + int *minorVersion, int *patchVersion); + +Bool XAppleDRIQueryDirectRenderingCapable (Display *dpy, int screen, + Bool *isCapable); + +void *XAppleDRISetSurfaceNotifyHandler (void (*fun) (Display *dpy, + unsigned uid, int kind)); + +Bool XAppleDRIAuthConnection (Display *dpy, int screen, unsigned int magic); + +Bool XAppleDRICreateSurface (Display *dpy, int screen, Drawable drawable, + unsigned int client_id, unsigned int key[2], + unsigned int* uid); + +Bool XAppleDRIDestroySurface (Display *dpy, int screen, Drawable drawable); + +Bool XAppleDRISynchronizeSurfaces (Display *dpy); + +_XFUNCPROTOEND + +#endif /* _APPLEDRI_SERVER_ */ +#endif /* _APPLEDRI_H_ */ + diff --git a/hw/darwin/quartz/xpr/appledristr.h b/hw/darwin/quartz/xpr/appledristr.h new file mode 100644 index 000000000..36a2e891e --- /dev/null +++ b/hw/darwin/quartz/xpr/appledristr.h @@ -0,0 +1,176 @@ +/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.9 2001/03/21 16:01:08 dawes Exp $ */ +/************************************************************************** + +Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +Copyright 2000 VA Linux Systems, Inc. +Copyright (c) 2002 Apple Computer, Inc. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +/* + * Authors: + * Kevin E. Martin + * Jens Owen + * Rickard E. (Rik) Fiath + * + */ + +#ifndef _APPLEDRISTR_H_ +#define _APPLEDRISTR_H_ + +#include "appledri.h" + +#define APPLEDRINAME "Apple-DRI" + +#define APPLE_DRI_MAJOR_VERSION 1 /* current version numbers */ +#define APPLE_DRI_MINOR_VERSION 0 +#define APPLE_DRI_PATCH_VERSION 0 + +typedef struct _AppleDRIQueryVersion { + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRIQueryVersion */ + CARD16 length B16; +} xAppleDRIQueryVersionReq; +#define sz_xAppleDRIQueryVersionReq 4 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD16 majorVersion B16; /* major version of DRI protocol */ + CARD16 minorVersion B16; /* minor version of DRI protocol */ + CARD32 patchVersion B32; /* patch version of DRI protocol */ + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xAppleDRIQueryVersionReply; +#define sz_xAppleDRIQueryVersionReply 32 + +typedef struct _AppleDRIQueryDirectRenderingCapable { + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */ + CARD16 length B16; + CARD32 screen B32; +} xAppleDRIQueryDirectRenderingCapableReq; +#define sz_xAppleDRIQueryDirectRenderingCapableReq 8 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + BOOL isCapable; + BOOL pad2; + BOOL pad3; + BOOL pad4; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; + CARD32 pad8 B32; + CARD32 pad9 B32; +} xAppleDRIQueryDirectRenderingCapableReply; +#define sz_xAppleDRIQueryDirectRenderingCapableReply 32 + +typedef struct _AppleDRIAuthConnection { + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRICloseConnection */ + CARD16 length B16; + CARD32 screen B32; + CARD32 magic B32; +} xAppleDRIAuthConnectionReq; +#define sz_xAppleDRIAuthConnectionReq 12 + +typedef struct { + BYTE type; + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 authenticated B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xAppleDRIAuthConnectionReply; +#define zx_xAppleDRIAuthConnectionReply 32 + +typedef struct _AppleDRICreateSurface { + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRICreateSurface */ + CARD16 length B16; + CARD32 screen B32; + CARD32 drawable B32; + CARD32 client_id B32; +} xAppleDRICreateSurfaceReq; +#define sz_xAppleDRICreateSurfaceReq 16 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 key_0 B32; + CARD32 key_1 B32; + CARD32 uid B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xAppleDRICreateSurfaceReply; +#define sz_xAppleDRICreateSurfaceReply 32 + +typedef struct _AppleDRIDestroySurface { + CARD8 reqType; /* always DRIReqCode */ + CARD8 driReqType; /* always X_DRIDestroySurface */ + CARD16 length B16; + CARD32 screen B32; + CARD32 drawable B32; +} xAppleDRIDestroySurfaceReq; +#define sz_xAppleDRIDestroySurfaceReq 12 + +typedef struct _AppleDRINotify { + BYTE type; /* always eventBase + event type */ + BYTE kind; + CARD16 sequenceNumber B16; + Time time B32; /* time of change */ + CARD16 pad1 B16; + CARD32 arg B32; + CARD32 pad3 B32; +} xAppleDRINotifyEvent; +#define sz_xAppleDRINotifyEvent 20 + +#ifdef _APPLEDRI_SERVER_ + +void AppleDRISendEvent ( +#if NeedFunctionPrototypes + int /* type */, + unsigned int /* mask */, + int /* which */, + int /* arg */ +#endif +); + +#endif /* _APPLEDRI_SERVER_ */ +#endif /* _APPLEDRISTR_H_ */ diff --git a/hw/darwin/utils/Makefile.am b/hw/darwin/utils/Makefile.am new file mode 100644 index 000000000..92bf151cb --- /dev/null +++ b/hw/darwin/utils/Makefile.am @@ -0,0 +1,12 @@ +bin_PROGRAMS = dumpkeymap + +dumpkeymap_SOURCES = dumpkeymap.c + +dumpkeymap_LDFLAGS = -Wl,-framework,IOKit + +man1_MANS = dumpkeymap.man + +EXTRA_DIST = \ + README.txt \ + dumpkeymap.man + diff --git a/hw/darwin/utils/event_status_driver.h b/hw/darwin/utils/event_status_driver.h new file mode 100644 index 000000000..8948f3349 --- /dev/null +++ b/hw/darwin/utils/event_status_driver.h @@ -0,0 +1,133 @@ +/* + * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * The contents of this file constitute Original Code as defined in and + * are subject to the Apple Public Source License Version 1.1 (the + * "License"). You may not use this file except in compliance with the + * License. Please obtain a copy of the License at + * http://www.apple.com/publicsource and read it before using this file. + * + * This Original Code and all software distributed under the License are + * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/****************************************************************************** + event_status_driver.h + API for the events status driver. + This file contains public API. + mpaque 11Oct91 + + Copyright 1991 NeXT Computer, Inc. + + Modified: + +******************************************************************************/ + +#ifndef _DRIVERS_EVENT_STATUS_DRIVER_ +#define _DRIVERS_EVENT_STATUS_DRIVER_ + +__BEGIN_DECLS + +#include +#include +#include +#include + +/* + * Event System Handle: + * + * Information used by the system between calls to NXOpenEventSystem and + * NXCloseEventSystem. The application should not + * access any of the elements of this structure. + */ +typedef mach_port_t NXEventHandle; + +/* Open and Close */ +NXEventHandle NXOpenEventStatus(void); +void NXCloseEventStatus(NXEventHandle handle); + +/* Status */ +extern NXEventSystemInfoType NXEventSystemInfo(NXEventHandle handle, + char *flavor, + int *evs_info, + unsigned int *evs_info_cnt); +/* Keyboard */ +extern void NXSetKeyRepeatInterval(NXEventHandle handle, double seconds); +extern double NXKeyRepeatInterval(NXEventHandle handle); +extern void NXSetKeyRepeatThreshold(NXEventHandle handle, double threshold); +extern double NXKeyRepeatThreshold(NXEventHandle handle); +extern void NXResetKeyboard(NXEventHandle handle); + +/* Mouse */ +extern void NXSetClickTime(NXEventHandle handle, double seconds); +extern double NXClickTime(NXEventHandle handle); +extern void NXSetClickSpace(NXEventHandle handle, _NXSize_ *area); +extern void NXGetClickSpace(NXEventHandle handle, _NXSize_ *area); +extern void NXResetMouse(NXEventHandle handle); + +/* DEPRECATED API */ + +/* NXIdleTime has been deprecated as this API does not take into account + events posted through the CG API set. Instead, we strongly encourage + developers to make use of the CGSSecondsSinceLastInputEvent API. */ +extern double NXIdleTime(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +/* These methods are NOT supported. */ +extern NXKeyMapping *NXSetKeyMapping(NXEventHandle h, NXKeyMapping *keymap) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern int NXKeyMappingLength(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern NXKeyMapping *NXGetKeyMapping(NXEventHandle h, NXKeyMapping *keymap) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +/* These methods are NOT supported and will return NULL values. */ +extern void NXSetMouseScaling(NXEventHandle handle, NXMouseScaling *scaling) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern void NXGetMouseScaling(NXEventHandle handle, NXMouseScaling *scaling) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern void NXSetAutoDimThreshold(NXEventHandle handle, double seconds) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern double NXAutoDimThreshold(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern double NXAutoDimTime(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern void NXSetAutoDimState(NXEventHandle handle, boolean_t dimmed) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern boolean_t NXAutoDimState(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern void NXSetAutoDimBrightness(NXEventHandle handle, double level) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern double NXAutoDimBrightness(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern void NXSetScreenBrightness(NXEventHandle handle, double level) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +extern double NXScreenBrightness(NXEventHandle handle) +AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4; + +/* END DEPRECATED API */ + +__END_DECLS + +#endif /*_DRIVERS_EVENT_STATUS_DRIVER_ */ + From c6c23d7035325d591df3199db1b0488d41f21820 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 27 Oct 2007 01:38:31 -0700 Subject: [PATCH 03/74] merged the rest of Apple patches to xserver --- hw/darwin/Makefile.am | 418 +++++++++++++----- hw/darwin/darwin.c | 120 +---- hw/darwin/darwin.h | 1 + hw/darwin/darwinEvents.c | 25 +- hw/darwin/darwinKeyboard.c | 2 +- hw/darwin/darwinKeyboard.h | 2 +- hw/darwin/iokit/xfIOKit.c | 6 +- hw/darwin/iokit/xfIOKitCursor.c | 5 +- hw/darwin/iokit/xfIOKitStartup.c | 10 +- hw/darwin/quartz/Preferences.m | 6 +- .../quartz/XDarwin.pbproj/project.pbxproj | 2 +- hw/darwin/quartz/XDarwinStartup.c | 7 +- hw/darwin/quartz/XServer.m | 20 +- hw/darwin/quartz/applewm.c | 30 +- hw/darwin/quartz/cr/XView.m | 4 +- hw/darwin/quartz/cr/crAppleWM.m | 8 +- hw/darwin/quartz/cr/crFrame.m | 6 +- hw/darwin/quartz/cr/crScreen.m | 4 +- hw/darwin/quartz/fullscreen/fullscreen.c | 6 +- hw/darwin/quartz/fullscreen/quartzCursor.c | 5 +- hw/darwin/quartz/fullscreen/quartzCursor.h | 1 + hw/darwin/quartz/pseudoramiX.c | 8 +- hw/darwin/quartz/pseudoramiX.h | 1 + hw/darwin/quartz/quartz.c | 15 +- hw/darwin/quartz/quartz.h | 2 + hw/darwin/quartz/quartzAudio.c | 6 +- hw/darwin/quartz/quartzAudio.h | 1 + hw/darwin/quartz/quartzCocoa.m | 13 +- hw/darwin/quartz/quartzCommon.h | 2 + hw/darwin/quartz/quartzCursor.c | 4 + hw/darwin/quartz/quartzCursor.h | 2 + hw/darwin/quartz/quartzKeyboard.c | 56 ++- hw/darwin/quartz/quartzPasteboard.c | 4 + hw/darwin/quartz/quartzPasteboard.h | 3 +- hw/darwin/quartz/quartzStartup.c | 73 ++- hw/darwin/quartz/xpr/Xplugin.h | 1 + hw/darwin/quartz/xpr/appledri.c | 4 + hw/darwin/quartz/xpr/dri.c | 12 +- hw/darwin/quartz/xpr/dri.h | 1 + hw/darwin/quartz/xpr/dristruct.h | 1 + hw/darwin/quartz/xpr/x-hash.c | 7 +- hw/darwin/quartz/xpr/x-hash.h | 1 + hw/darwin/quartz/xpr/x-hook.c | 4 +- hw/darwin/quartz/xpr/x-list.c | 7 +- hw/darwin/quartz/xpr/x-list.h | 3 +- hw/darwin/quartz/xpr/xpr.h | 2 + hw/darwin/quartz/xpr/xprAppleWM.c | 7 +- hw/darwin/quartz/xpr/xprCursor.c | 7 +- hw/darwin/quartz/xpr/xprFrame.c | 8 +- hw/darwin/quartz/xpr/xprScreen.c | 26 +- hw/darwin/utils/dumpkeymap.c | 3 +- 51 files changed, 641 insertions(+), 331 deletions(-) diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 542bfdb24..560cc3a9f 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -1,52 +1,314 @@ +noinst_LIBRARIES = libdarwinShared.a +libdarwin_XINPUT_SRCS = darwinXinput.c + +AM_CFLAGS = @XORG_CFLAGS@ +INCLUDES = @XORG_INCS@ -I../../miext/rootless + +DEFS = @DEFS@ -DUSE_NEW_CLUT + +if XQUARTZ +XQUARTZ_SUBDIRS = bundle quartz +endif + +SUBDIRS = \ + iokit \ + $(XQUARTZ_SUBDIRS) \ + utils \ + . + +darwinappdir = /Applications/Utilities/XDarwin.app + +libdarwinShared_a_SOURCES = darwin.c \ + darwinEvents.c \ + darwinKeyboard.c \ + $(darwin_XINPUT_SRCS) + +bin_PROGRAMS = 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/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 \ + $(top_builddir)/os/libos.la \ + ./libdarwinShared.a \ + ./iokit/libiokit.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 \ + $(XGLX_LIBS) \ + $(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 + +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 + +Xquartz_LDFLAGS = \ + -XCClinker -Objc \ + -Wl,-u,_miDCInitialize \ + -Wl,-framework,Carbon \ + -L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL \ + -Wl,-framework,OpenGL \ + -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 +Xquartz_OBJCFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API -DHAVE_XORG_CONFIG_H + +if XQUARTZ +macosdir = $(darwinappdir)/Contents/MacOS + +DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server + +macos_PROGRAMS = +macos_SCRIPTS = x11app + +x11app: + cd apple && xcodebuild + +XDarwinApp_SOURCES = \ + $(top_srcdir)/fb/fbcmap.c \ + $(top_srcdir)/mi/miinitext.c \ + $(top_srcdir)/Xi/stubs.c + +XDarwinApp_LDADD = \ + $(top_builddir)/dix/dixfonts.lo \ + $(top_builddir)/dix/libdix.la \ + $(top_builddir)/os/libos.la \ + ./quartz/XApplication.o \ + ./libdarwinShared.a \ + ./quartz/libXQuartz.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 \ + $(XGLX_LIBS) \ + $(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 \ + $(top_builddir)/fb/libfb.la + +XDarwinApp_LDFLAGS = \ + -XCClinker -Objc \ + -Wl,-u,_miDCInitialize \ + -Wl,-framework,Carbon \ + -Wl,-framework,ApplicationServices \ + -Wl,-framework,Cocoa \ + -Wl,-framework,CoreAudio \ + -Wl,-framework,IOKit + +HOOK_TARGETS = xquartz-install-hook + + +crplugindir = $(darwinappdir)/Contents/Resources/cr.bundle/Contents/MacOS +crplugin_LTLIBRARIES = +cr_la_SOURCES = +cr_la_LIBADD = \ + quartz/cr/crAppleWM.o \ + quartz/cr/crFrame.o \ + quartz/cr/crScreen.o \ + quartz/fullscreen/quartzCursor.o \ + quartz/cr/XView.o \ + $(top_builddir)/miext/rootless/librootless.la \ + $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ + $(top_builddir)/miext/rootless/accel/librlAccel.la +cr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ + -Wl,-framework,Cocoa \ + -Wl,-framework,Carbon \ + -XCClinker -ObjC \ + -XCClinker -bundle_loader -XCClinker XDarwinApp \ + -module -avoid-version -no-undefined +cr_la_DEPENDENCIES = XDarwinApp + +fullscreenplugindir = $(darwinappdir)/Contents/Resources/fullscreen.bundle/Contents/MacOS +fullscreenplugin_LTLIBRARIES = +fullscreen_la_SOURCES = +fullscreen_la_LIBADD = \ + quartz/fullscreen/fullscreen.o \ + quartz/fullscreen/quartzCursor.o \ + $(top_builddir)/miext/shadow/libshadow.la + +fullscreen_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ + -XCClinker -bundle_loader -XCClinker XDarwinApp \ + -module -avoid-version -no-undefined +fullscreen_la_DEPENDENCIES = XDarwinApp + +if GLX +glxMesaplugindir = $(darwinappdir)/Contents/Resources/glxMesa.bundle/Contents/MacOS +glxMesaplugin_LTLIBRARIES = +glxMesa_la_SOURCES = +glxMesa_la_LIBADD = \ + $(top_builddir)/GL/glx/libglx.la \ + $(top_builddir)/GL/mesa/libGLcore.la +glxMesa_la_LDFLAGS = -shrext '' \ + -Wl,-framework,AGL \ + -Wl,-framework,OpenGL \ + -XCClinker -ObjC \ + -XCClinker -bundle_loader -XCClinker XDarwinApp \ + -module -avoid-version -no-undefined +glxMesa_la_DEPENDENCIES = XDarwinApp +endif + +endif +if HAVE_X_PLUGIN + +xprplugindir = $(darwinappdir)/Contents/Resources/xpr.bundle/Contents/MacOS +xprplugin_LTLIBRARIES = +xpr_la_SOURCES = +xpr_la_LIBADD = \ + quartz/xpr/appledri.o \ + quartz/xpr/dri.o \ + quartz/xpr/xprAppleWM.o \ + quartz/xpr/xprCursor.o \ + quartz/xpr/xprFrame.o \ + quartz/xpr/xprScreen.o \ + quartz/xpr/x-hash.o \ + quartz/xpr/x-hook.o \ + quartz/xpr/x-list.o \ + $(top_builddir)/miext/rootless/librootless.la \ + $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ + $(top_builddir)/miext/rootless/accel/librlAccel.la +xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ + -lXplugin \ + -XCClinker -bundle_loader -XCClinker XDarwinApp \ + -module -avoid-version -no-undefined +xpr_la_DEPENDENCIES = XDarwinApp + +endif + +if HAVE_AGL_FRAMEWORK +glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS +glxCGLplugin_LTLIBRARIES = +glxCGL_la_SOURCES = +glxCGL_la_LIBADD = \ + $(top_builddir)/GL/glx/glxext.o \ + $(top_builddir)/GL/glx/libglx.a \ + $(top_builddir)/GL/apple/libAGLcore.a +glxCGL_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ + -Wl,-framework,AGL \ + -Wl,-framework,OpenGL \ + -XCClinker -ObjC \ + -XCClinker -bundle_loader -XCClinker XDarwinApp \ + -module -avoid-version -no-undefined +glxCGL_la_DEPENDENCIES = XDarwinApp + + +glxAGLplugindir = $(darwinappdir)/Contents/Resources/glxAGL.bundle/Contents/MacOS +glxAGLplugin_LTLIBRARIES = +glxAGL_la_SOURCES = +glxAGL_la_LIBADD = \ + $(top_builddir)/GL/glx/glxext.o \ + $(top_builddir)/GL/glx/libglx.a \ + $(top_builddir)/GL/apple/libAGLcore.a +glxAGL_la_LDFLAGS = -shrext '' \ + -Wl,-framework,AGL \ + -Wl,-framework,OpenGL \ + -XCClinker -ObjC \ + -XCClinker -bundle_loader -XCClinker XDarwinApp \ + -module -avoid-version -no-undefined +glxAGL_la_DEPENDENCIES = XDarwinApp + + + +endif + +man1_MANS = XDarwin.man + +uninstall-hook: + rm -rf $(DESTDIR)$(macosdir)/XDarwin + +install-data-hook: $(HOOK_TARGETS) + +xquartz-install-hook: + cd apple && xcodebuild install + cd launcher && xcodebuild install + EXTRA_DIST = \ - bundle/Dutch.lproj/Credits.rtf \ - bundle/Dutch.lproj/Localizable.strings \ - bundle/Dutch.lproj/MainMenu.nib/classes.nib \ - bundle/Dutch.lproj/MainMenu.nib/objects.nib \ - bundle/Dutch.lproj/XDarwinHelp.html.cpp \ - bundle/English.lproj/Credits.rtf \ - bundle/English.lproj/InfoPlist.strings.cpp \ - bundle/English.lproj/Localizable.strings \ - bundle/English.lproj/MainMenu.nib/classes.nib \ - bundle/English.lproj/MainMenu.nib/objects.nib \ - bundle/English.lproj/XDarwinHelp.html.cpp \ - bundle/French.lproj/Credits.rtf \ - bundle/French.lproj/Localizable.strings \ - bundle/French.lproj/MainMenu.nib/classes.nib \ - bundle/French.lproj/MainMenu.nib/objects.nib \ - bundle/French.lproj/XDarwinHelp.html.cpp \ - bundle/German.lproj/Credits.rtf \ - bundle/German.lproj/Localizable.strings \ - bundle/German.lproj/MainMenu.nib/classes.nib \ - bundle/German.lproj/MainMenu.nib/objects.nib \ - bundle/German.lproj/XDarwinHelp.html.cpp \ - bundle/Japanese.lproj/Credits.rtf \ - bundle/Japanese.lproj/Localizable.strings \ - bundle/Japanese.lproj/MainMenu.nib/classes.nib \ - bundle/Japanese.lproj/MainMenu.nib/objects.nib \ - bundle/Japanese.lproj/XDarwinHelp.html.cpp \ - bundle/ko.lproj/Credits.rtf \ - bundle/ko.lproj/Localizable.strings \ - bundle/ko.lproj/MainMenu.nib/classes.nib \ - bundle/ko.lproj/MainMenu.nib/objects.nib \ - bundle/ko.lproj/XDarwinHelp.html.cpp \ - bundle/Portuguese.lproj/Credits.rtf \ - bundle/Portuguese.lproj/Localizable.strings \ - bundle/Portuguese.lproj/MainMenu.nib/classes.nib \ - bundle/Portuguese.lproj/MainMenu.nib/objects.nib \ - bundle/Portuguese.lproj/XDarwinHelp.html.cpp \ - bundle/Spanish.lproj/Credits.rtf \ - bundle/Spanish.lproj/Localizable.strings \ - bundle/Spanish.lproj/MainMenu.nib/classes.nib \ - bundle/Spanish.lproj/MainMenu.nib/objects.nib \ - bundle/Spanish.lproj/XDarwinHelp.html.cpp \ - bundle/startXClients.cpp \ - bundle/Swedish.lproj/Credits.rtf \ - bundle/Swedish.lproj/Localizable.strings \ - bundle/Swedish.lproj/MainMenu.nib/classes.nib \ - bundle/Swedish.lproj/MainMenu.nib/objects.nib \ - bundle/Swedish.lproj/XDarwinHelp.html.cpp \ - bundle/XDarwin.icns \ darwin.c \ darwinClut8.h \ darwinEvents.c \ @@ -54,64 +316,4 @@ EXTRA_DIST = \ darwinKeyboard.c \ darwinKeyboard.h \ darwinXinput.c \ - iokit/xfIOKit.c \ - iokit/xfIOKitCursor.c \ - iokit/xfIOKit.h \ - iokit/xfIOKitStartup.c \ - Makefile.am \ - quartz/applewm.c \ - quartz/applewmExt.h \ - quartz/cr/crAppleWM.m \ - quartz/cr/crFrame.m \ - quartz/cr/cr.h \ - quartz/cr/crScreen.m \ - quartz/cr/XView.h \ - quartz/cr/XView.m \ - quartz/fullscreen/fullscreen.c \ - quartz/fullscreen/quartzCursor.c \ - quartz/fullscreen/quartzCursor.h \ - quartz/keysym2ucs.c \ - quartz/keysym2ucs.h \ - quartz/Preferences.h \ - quartz/Preferences.m \ - quartz/pseudoramiX.c \ - quartz/pseudoramiX.h \ - quartz/quartzAudio.c \ - quartz/quartzAudio.h \ - quartz/quartz.c \ - quartz/quartzCocoa.m \ - quartz/quartzCommon.h \ - quartz/quartzCursor.c \ - quartz/quartzCursor.h \ - quartz/quartz.h \ - quartz/quartzKeyboard.c \ - quartz/quartzPasteboard.c \ - quartz/quartzPasteboard.h \ - quartz/quartzStartup.c \ - quartz/XApplication.h \ - quartz/XApplication.m \ - quartz/XDarwin.pbproj/project.pbxproj \ - quartz/XDarwinStartup.c \ - quartz/XDarwinStartup.man \ - quartz/xpr/appledri.c \ - quartz/xpr/dri.c \ - quartz/xpr/dri.h \ - quartz/xpr/dristruct.h \ - quartz/xpr/x-hash.c \ - quartz/xpr/x-hash.h \ - quartz/xpr/x-hook.c \ - quartz/xpr/x-hook.h \ - quartz/xpr/x-list.c \ - quartz/xpr/x-list.h \ - quartz/xpr/Xplugin.h \ - quartz/xpr/xprAppleWM.c \ - quartz/xpr/xprCursor.c \ - quartz/xpr/xprFrame.c \ - quartz/xpr/xpr.h \ - quartz/xpr/xprScreen.c \ - quartz/XServer.h \ - quartz/XServer.m \ - utils/dumpkeymap.c \ - utils/dumpkeymap.man \ - utils/README.txt \ XDarwin.man diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index bd9998976..c3b21c17e 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -30,6 +30,10 @@ * use or other dealings in this Software without prior written authorization. */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + #include #include #include "os.h" @@ -79,7 +83,6 @@ int darwinScreenIndex = 0; io_connect_t darwinParamConnect = 0; int darwinEventReadFD = -1; int darwinEventWriteFD = -1; -int darwinMouseAccelChange = 1; int darwinFakeButtons = 0; // location of X11's (0,0) point in global screen coordinates @@ -123,81 +126,16 @@ const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]); #ifndef PRE_RELEASE #define PRE_RELEASE XORG_VERSION_SNAP #endif +#ifndef BUILD_DATE +#define BUILD_DATE "" +#endif void DarwinPrintBanner() { -#if PRE_RELEASE - ErrorF("\n" - "This is a pre-release version of the " XVENDORNAME " X11.\n" - "Portions of this release are based on XFree86 4.4RC2 and selected\n" - "files from XFree86 4.4RC3. It is not supported in any way.\n" - "Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n" - "Select the \"xorg\" product for bugs you find in this release.\n" - "Before reporting bugs in pre-release versions please check the\n" - "latest version in the " XVENDORNAME " \"monolithic tree\" CVS\n" - "repository hosted at http://www.freedesktop.org/Software/xorg/"); -#endif -#if XORG_VERSION_SNAP > 0 - ErrorF(".%d", XORG_VERSION_SNAP); -#endif - -#if XORG_VERSION_SNAP >= 900 - ErrorF(" (%d.%d.0 RC %d)", XORG_VERSION_MAJOR, XORG_VERSION_MINOR + 1, - XORG_VERSION_SNAP - 900); -#endif - -#ifdef XORG_CUSTOM_VERSION - ErrorF(" (%s)", XF86_CUSTOM_VERSION); -#endif - ErrorF("\nRelease Date: %s\n", XF86_DATE); - ErrorF("X Protocol Version %d, Revision %d, %s\n", - X_PROTOCOL, X_PROTOCOL_REVISION, XORG_RELEASE ); - ErrorF("Build Operating System: %s %s\n", OSNAME, OSVENDOR); -#ifdef HAS_UTSNAME - { - struct utsname name; - - if (uname(&name) == 0) { - ErrorF("Current Operating System: %s %s %s %s %s\n", - name.sysname, name.nodename, name.release, name.version, name.machine); - } - } -#endif -#if defined(BUILD_DATE) && (BUILD_DATE > 19000000) - { - struct tm t; - char buf[100]; - - bzero(&t, sizeof(t)); - bzero(buf, sizeof(buf)); - t.tm_mday = BUILD_DATE % 100; - t.tm_mon = (BUILD_DATE / 100) % 100 - 1; - t.tm_year = BUILD_DATE / 10000 - 1900; - if (strftime(buf, sizeof(buf), "%d %B %Y", &t)) - ErrorF("Build Date: %s\n", buf); - } -#endif -#if defined(CLOG_DATE) && (CLOG_DATE > 19000000) - { - struct tm t; - char buf[100]; - - bzero(&t, sizeof(t)); - bzero(buf, sizeof(buf)); - t.tm_mday = CLOG_DATE % 100; - t.tm_mon = (CLOG_DATE / 100) % 100 - 1; - t.tm_year = CLOG_DATE / 10000 - 1900; - if (strftime(buf, sizeof(buf), "%d %B %Y", &t)) - ErrorF("Changelog Date: %s\n", buf); - } -#endif -#if defined(BUILDERSTRING) - ErrorF("%s \n",BUILDERSTRING); -#endif - ErrorF("\tBefore reporting problems, check "__VENDORDWEBSUPPORT__"\n" - "\tto make sure that you have the latest version.\n"); -} + ErrorF("X11.app starting:\n"); + ErrorF("Xquartz server based on X.org %s, built on %s\n", XORG_RELEASE, BUILD_DATE ); + } /* @@ -349,8 +287,8 @@ static Bool DarwinAddScreen( dixScreenOrigins[index].x = dfb->x; dixScreenOrigins[index].y = dfb->y; - ErrorF("Screen %d added: %dx%d @ (%d,%d)\n", - index, dfb->width, dfb->height, dfb->x, dfb->y); + /* ErrorF("Screen %d added: %dx%d @ (%d,%d)\n", + index, dfb->width, dfb->height, dfb->x, dfb->y); */ return TRUE; } @@ -363,28 +301,6 @@ static Bool DarwinAddScreen( ============================================================================= */ -/* - * DarwinChangePointerControl - * Set mouse acceleration and thresholding - * FIXME: We currently ignore the threshold in ctrl->threshold. - */ -static void DarwinChangePointerControl( - DeviceIntPtr device, - PtrCtrl *ctrl ) -{ - kern_return_t kr; - double acceleration; - - if (!darwinMouseAccelChange) - return; - - acceleration = ctrl->num / ctrl->den; - kr = IOHIDSetMouseAcceleration( darwinParamConnect, acceleration ); - if (kr != KERN_SUCCESS) - ErrorF( "Could not set mouse acceleration with kernel return = 0x%x.\n", kr ); -} - - /* * DarwinMouseProc * Handle the initialization, etc. of a mouse @@ -410,7 +326,7 @@ static int DarwinMouseProc( map, 5, // numbuttons (4 & 5 are scroll wheel) miPointerGetMotionEvents, - DarwinChangePointerControl, + (PtrCtrlProcPtr)NoopDDA, 0 ); #ifdef XINPUT InitValuatorAxisStruct( pPointer, @@ -633,8 +549,8 @@ DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo) for (i = 0; i < pScreenInfo->numScreens; i++) { dixScreenOrigins[i].x -= darwinMainScreenX; dixScreenOrigins[i].y -= darwinMainScreenY; - ErrorF("Screen %d placed at X11 coordinate (%d,%d).\n", - i, dixScreenOrigins[i].x, dixScreenOrigins[i].y); + /* ErrorF("Screen %d placed at X11 coordinate (%d,%d).\n", + i, dixScreenOrigins[i].x, dixScreenOrigins[i].y); */ } } } @@ -711,13 +627,13 @@ void OsVendorInit(void) if ( !tempStr ) { ErrorF("Could not find keymapping file %s.\n", darwinKeymapFile); } else { - ErrorF("Using keymapping provided in %s.\n", tempStr); + ErrorF("Using keymapping provided in %s.\n", tempStr); } darwinKeymapFile = tempStr; } if ( !darwinKeymapFile ) { - ErrorF("Reading keymap from the system.\n"); + // ErrorF("Reading keymap from the system.\n"); } } @@ -916,7 +832,7 @@ void ddxUseMsg( void ) */ void ddxGiveUp( void ) { - ErrorF( "Quitting XDarwin...\n" ); + ErrorF( "Quitting Xquartz...\n" ); DarwinModeGiveUp(); } diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h index cd572258c..48a2224f1 100644 --- a/hw/darwin/darwin.h +++ b/hw/darwin/darwin.h @@ -31,6 +31,7 @@ #include "inputstr.h" #include "scrnintstr.h" #include +#include typedef struct { void *framebuffer; diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index 6b902df05..6b4f72721 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -128,23 +128,18 @@ static void DarwinUpdateModifiers( int flags ) // modifier flags that have changed { xe->u.u.type = pressed; + if (flags & NX_COMMANDMASK) DarwinPressModifierMask(xe, COMMAND_MASK(flags)); + if (flags & NX_CONTROLMASK) DarwinPressModifierMask(xe, CONTROL_MASK(flags)); + if (flags & NX_ALTERNATEMASK) DarwinPressModifierMask(xe, ALTERNATE_MASK(flags)); + if (flags & NX_SHIFTMASK) DarwinPressModifierMask(xe, SHIFT_MASK(flags)); + if (flags & NX_SECONDARYFNMASK) DarwinPressModifierMask(xe, NX_SECONDARYFNMASK); if (flags & NX_ALPHASHIFTMASK) { + // Alpha shift only sees KeyDown when enabled and KeyUp when disabled, + // but X11 wants to see a up/down pair to enable, and again to disable + xe->u.u.type = KeyPress; + DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); + xe->u.u.type = KeyRelease; DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); - } - if (flags & NX_COMMANDMASK) { - DarwinPressModifierMask(xe, COMMAND_MASK(flags)); - } - if (flags & NX_CONTROLMASK) { - DarwinPressModifierMask(xe, CONTROL_MASK(flags)); - } - if (flags & NX_ALTERNATEMASK) { - DarwinPressModifierMask(xe, ALTERNATE_MASK(flags)); - } - if (flags & NX_SHIFTMASK) { - DarwinPressModifierMask(xe, SHIFT_MASK(flags)); - } - if (flags & NX_SECONDARYFNMASK) { - DarwinPressModifierMask(xe, NX_SECONDARYFNMASK); } } diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c index c148d96ce..2a10496fd 100644 --- a/hw/darwin/darwinKeyboard.c +++ b/hw/darwin/darwinKeyboard.c @@ -72,7 +72,7 @@ #include // For the NXSwap* #include "darwin.h" #include "darwinKeyboard.h" - +#include #define AltMask Mod1Mask #define MetaMask Mod2Mask #define FunctionMask Mod3Mask diff --git a/hw/darwin/darwinKeyboard.h b/hw/darwin/darwinKeyboard.h index f4a861186..368aee954 100644 --- a/hw/darwin/darwinKeyboard.h +++ b/hw/darwin/darwinKeyboard.h @@ -29,7 +29,7 @@ #define XK_TECHNICAL // needed to get XK_Escape #define XK_PUBLISHING -#include "keysym.h" +#include "X11/keysym.h" #include "inputstr.h" // Each key can generate 4 glyphs. They are, in order: diff --git a/hw/darwin/iokit/xfIOKit.c b/hw/darwin/iokit/xfIOKit.c index 95a7fb32c..7f126c7dc 100644 --- a/hw/darwin/iokit/xfIOKit.c +++ b/hw/darwin/iokit/xfIOKit.c @@ -34,6 +34,10 @@ * use or other dealings in this Software without prior written authorization. */ +#if HAVE_XORG_CONFIG_H +#include +#endif + #include #include #include "os.h" @@ -51,6 +55,7 @@ #include #include #include +#include #include @@ -58,7 +63,6 @@ #include #include #include -#include // Define this to work around bugs in the display drivers for // older PowerBook G3's. If the X server starts without this diff --git a/hw/darwin/iokit/xfIOKitCursor.c b/hw/darwin/iokit/xfIOKitCursor.c index ef3e254d7..8388513a3 100644 --- a/hw/darwin/iokit/xfIOKitCursor.c +++ b/hw/darwin/iokit/xfIOKitCursor.c @@ -58,6 +58,9 @@ * use or other dealings in this Software without prior written authorization. */ +#if HAVE_XORG_CONFIG_H +#include +#endif #include "scrnintstr.h" #include "cursorstr.h" #include "mipointrst.h" @@ -67,7 +70,7 @@ #include #include "darwin.h" #include "xfIOKit.h" - +#include #define DUMP_DARWIN_CURSOR FALSE #define CURSOR_PRIV(pScreen) \ diff --git a/hw/darwin/iokit/xfIOKitStartup.c b/hw/darwin/iokit/xfIOKitStartup.c index 512793aa5..413d0625d 100644 --- a/hw/darwin/iokit/xfIOKitStartup.c +++ b/hw/darwin/iokit/xfIOKitStartup.c @@ -29,6 +29,10 @@ * use or other dealings in this Software without prior written authorization. */ +#if HAVE_XORG_CONFIG_H +#include +#endif + #include "darwin.h" #include "darwinKeyboard.h" #include "micmap.h" @@ -57,7 +61,9 @@ void DarwinHandleGUI( */ void DarwinGlxExtensionInit(void) { - GlxExtensionInit(); +#ifdef GLXEXT + GlxExtensionInit(); +#endif } @@ -67,7 +73,9 @@ void DarwinGlxExtensionInit(void) void DarwinGlxWrapInitVisuals( miInitVisualsProcPtr *procPtr) { +#ifdef GLXEXT GlxWrapInitVisuals(procPtr); +#endif } diff --git a/hw/darwin/quartz/Preferences.m b/hw/darwin/quartz/Preferences.m index 6c14f4982..eb78fd32a 100644 --- a/hw/darwin/quartz/Preferences.m +++ b/hw/darwin/quartz/Preferences.m @@ -31,7 +31,9 @@ * authorization. */ /* $XFree86: xc/programs/Xserver/hw/darwin/quartz/Preferences.m,v 1.5 2004/06/08 22:58:10 torrey Exp $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #import "quartzCommon.h" #define BOOL xBOOL @@ -44,7 +46,7 @@ // Macros to build the path name #ifndef XBINDIR -#define XBINDIR /usr/X11R6/bin +#define XBINDIR /usr/X11/bin #endif #define STR(s) #s #define XSTRPATH(s) STR(s) diff --git a/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj b/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj index 90002db56..0ad831423 100644 --- a/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj +++ b/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj @@ -387,7 +387,7 @@ CFBundleIconFile XDarwin.icns CFBundleIdentifier - org.xfree86.XDarwin + org.x.x11 CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/hw/darwin/quartz/XDarwinStartup.c b/hw/darwin/quartz/XDarwinStartup.c index 8697776bf..3ad4898a6 100644 --- a/hw/darwin/quartz/XDarwinStartup.c +++ b/hw/darwin/quartz/XDarwinStartup.c @@ -38,6 +38,9 @@ * dealings in this Software without prior written authorization from * Torrey T. Lyons. */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include #include @@ -48,7 +51,7 @@ // Macros to build the path name #ifndef XBINDIR -#define XBINDIR /usr/X11R6/bin +#define XBINDIR /usr/X11/bin #endif #define STR(s) #s #define XSTRPATH(s) STR(s) "/" @@ -124,7 +127,7 @@ int main( // Otherwise query LaunchServices for the location of the XDarwin application theStatus = LSFindApplicationForInfo(kLSUnknownCreator, - CFSTR("org.xfree86.XDarwin"), + CFSTR("org.x.x11"), NULL, NULL, &appURL); if (theStatus) { fprintf(stderr, "Could not find the XDarwin application. (Error = 0x%lx)\n", theStatus); diff --git a/hw/darwin/quartz/XServer.m b/hw/darwin/quartz/XServer.m index a5a1011e9..058741522 100644 --- a/hw/darwin/quartz/XServer.m +++ b/hw/darwin/quartz/XServer.m @@ -34,20 +34,20 @@ * sale, use or other dealings in this Software without prior written * authorization. */ -/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/XServer.m,v 1.3 2004/07/30 19:12:17 torrey Exp $ */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/XServer.m,v 1.19 2003/11/24 05:39:01 torrey Exp $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #define BOOL xBOOL -#include "X.h" -#include "Xproto.h" +#include "X11/X.h" +#include "X11/Xproto.h" #include "os.h" #include "opaque.h" #include "darwin.h" #include "quartz.h" #define _APPLEWM_SERVER_ -#include "applewm.h" +#include "X11/extensions/applewm.h" #include "applewmExt.h" #undef BOOL @@ -830,13 +830,13 @@ static io_connect_t root_port; chdir(tem); /* Setup environment */ - snprintf(buf, sizeof(buf), ":%s", display); - setenv("DISPLAY", buf, TRUE); +// snprintf(buf, sizeof(buf), ":%s", display); +// setenv("DISPLAY", buf, TRUE); tem = getenv("PATH"); if (tem != NULL && tem[0] != NULL) - snprintf(buf, sizeof(buf), "%s:/usr/X11R6/bin", tem); + snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", tem); else - snprintf(buf, sizeof(buf), "/bin:/usr/bin:/usr/X11R6/bin"); + snprintf(buf, sizeof(buf), "/bin:/usr/bin:/usr/X11/bin"); setenv("PATH", buf, TRUE); execvp(argv[0], (char **const) argv); diff --git a/hw/darwin/quartz/applewm.c b/hw/darwin/quartz/applewm.c index 6db036f1b..78cf9df13 100644 --- a/hw/darwin/quartz/applewm.c +++ b/hw/darwin/quartz/applewm.c @@ -1,6 +1,6 @@ /************************************************************************** -Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved. +Copyright (c) 2002-2007 Apple Inc. All Rights Reserved. Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a @@ -24,7 +24,9 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #define NEED_REPLIES @@ -43,7 +45,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include "darwin.h" #define _APPLEWM_SERVER_ -#include "applewmstr.h" +#include "X11/extensions/applewmstr.h" #include "applewmExt.h" #define DEFINE_ATOM_HELPER(func,atom_name) \ @@ -443,9 +445,11 @@ ProcAppleWMSetWindowMenu( break; } } - +#ifdef INXQUARTZ + X11ApplicationSetWindowMenu (nitems, items, shortcuts); +#else QuartzSetWindowMenu (nitems, items, shortcuts); - +#endif free(items); free(shortcuts); @@ -460,10 +464,12 @@ ProcAppleWMSetWindowMenuCheck( REQUEST(xAppleWMSetWindowMenuCheckReq); REQUEST_SIZE_MATCH(xAppleWMSetWindowMenuCheckReq); - +#ifdef INXQUARTZ + X11ApplicationSetWindowMenuCheck (stuff->index); +#else QuartzMessageMainThread(kQuartzSetWindowMenuCheck, &stuff->index, sizeof(stuff->index)); - +#endif return (client->noClientException); } @@ -474,8 +480,11 @@ ProcAppleWMSetFrontProcess( { REQUEST_SIZE_MATCH(xAppleWMSetFrontProcessReq); +#ifdef INXQUARTZ + X11ApplicationSetFrontProcess(); +#else QuartzMessageMainThread(kQuartzSetFrontProcess, NULL, 0); - +#endif return (client->noClientException); } @@ -517,9 +526,12 @@ 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/cr/XView.m b/hw/darwin/quartz/cr/XView.m index 5feac6b42..8bcd1a76f 100644 --- a/hw/darwin/quartz/cr/XView.m +++ b/hw/darwin/quartz/cr/XView.m @@ -30,7 +30,9 @@ * use or other dealings in this Software without prior written authorization. */ /* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/XView.m,v 1.1 2003/06/07 05:49:07 torrey Exp $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #import "XView.h" diff --git a/hw/darwin/quartz/cr/crAppleWM.m b/hw/darwin/quartz/cr/crAppleWM.m index a2e97ff81..259c2d879 100644 --- a/hw/darwin/quartz/cr/crAppleWM.m +++ b/hw/darwin/quartz/cr/crAppleWM.m @@ -27,16 +27,18 @@ * use or other dealings in this Software without prior written authorization. */ /* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.2 2003/06/30 01:45:13 torrey Exp $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "cr.h" #undef BOOL #define BOOL xBOOL #include "rootless.h" -#include "X.h" +#include "X11/X.h" #define _APPLEWM_SERVER_ -#include "applewm.h" +#include "X11/extensions/applewm.h" #include "applewmExt.h" #undef BOOL diff --git a/hw/darwin/quartz/cr/crFrame.m b/hw/darwin/quartz/cr/crFrame.m index 79d55a4d1..326910b68 100644 --- a/hw/darwin/quartz/cr/crFrame.m +++ b/hw/darwin/quartz/cr/crFrame.m @@ -27,9 +27,11 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/cr/crFrame.m,v 1.2 2004/04/23 19:15:51 eich Exp $ */ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/cr/crFrame.m,v 1.3 2004/10/08 00:35:05 torrey Exp $ */ /* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/crFrame.m,v 1.9 2004/03/19 02:05:29 torrey Exp $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "cr.h" diff --git a/hw/darwin/quartz/cr/crScreen.m b/hw/darwin/quartz/cr/crScreen.m index 21a79e006..b78d1ea27 100644 --- a/hw/darwin/quartz/cr/crScreen.m +++ b/hw/darwin/quartz/cr/crScreen.m @@ -29,7 +29,9 @@ * use or other dealings in this Software without prior written authorization. */ /* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/crScreen.m,v 1.5 2003/11/12 20:21:52 torrey Exp $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "cr.h" diff --git a/hw/darwin/quartz/fullscreen/fullscreen.c b/hw/darwin/quartz/fullscreen/fullscreen.c index a4881f9d9..ed7f4c841 100644 --- a/hw/darwin/quartz/fullscreen/fullscreen.c +++ b/hw/darwin/quartz/fullscreen/fullscreen.c @@ -25,7 +25,11 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/fullscreen/fullscreen.c,v 1.4 2005/07/01 22:43:08 daniels Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c,v 1.3 2003/11/27 01:59:53 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "darwin.h" #include "quartz.h" diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.c b/hw/darwin/quartz/fullscreen/quartzCursor.c index e2333e2ea..60a4c4d8a 100644 --- a/hw/darwin/quartz/fullscreen/quartzCursor.c +++ b/hw/darwin/quartz/fullscreen/quartzCursor.c @@ -29,7 +29,10 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.c,v 1.5 2003/01/23 00:34:26 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "quartzCursor.h" #include "darwin.h" diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.h b/hw/darwin/quartz/fullscreen/quartzCursor.h index 57fac68a5..efcc4435e 100644 --- a/hw/darwin/quartz/fullscreen/quartzCursor.h +++ b/hw/darwin/quartz/fullscreen/quartzCursor.h @@ -29,6 +29,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.h,v 1.1 2002/03/28 02:21:19 torrey Exp $ */ #ifndef QUARTZCURSOR_H #define QUARTZCURSOR_H diff --git a/hw/darwin/quartz/pseudoramiX.c b/hw/darwin/quartz/pseudoramiX.c index ab57827d3..66b96624b 100644 --- a/hw/darwin/quartz/pseudoramiX.c +++ b/hw/darwin/quartz/pseudoramiX.c @@ -32,15 +32,21 @@ shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Digital Equipment Corporation. ******************************************************************/ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.c,v 1.4 2004/07/02 01:30:33 torrey Exp $ */ #include "pseudoramiX.h" - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "extnsionst.h" #include "dixstruct.h" #include "window.h" #include #include "globals.h" +extern int noPseudoramiXExtension; +extern int noPanoramiXExtension; + extern int ProcPanoramiXQueryVersion (ClientPtr client); static void PseudoramiXResetProc(ExtensionEntry *extEntry); diff --git a/hw/darwin/quartz/pseudoramiX.h b/hw/darwin/quartz/pseudoramiX.h index df5010d1d..c2943369d 100644 --- a/hw/darwin/quartz/pseudoramiX.h +++ b/hw/darwin/quartz/pseudoramiX.h @@ -1,6 +1,7 @@ /* * Minimal implementation of PanoramiX/Xinerama */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.h,v 1.3 2004/07/02 01:30:33 torrey Exp $ */ extern int noPseudoramiXExtension; diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 36a8bea08..baeba8f90 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -1,3 +1,4 @@ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartz.c,v 1.4 2005/07/01 22:43:07 daniels Exp $ */ /************************************************************** * * Quartz-specific support for the Darwin X Server @@ -29,14 +30,17 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartz.c,v 1.16 2004/07/02 01:30:33 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "quartz.h" #include "darwin.h" #include "quartzAudio.h" #include "pseudoramiX.h" #define _APPLEWM_SERVER_ -#include "applewm.h" +#include "X11/extensions/applewm.h" #include "applewmExt.h" // X headers @@ -158,8 +162,11 @@ void DarwinModeInitInput( int argc, char **argv ) { +#ifdef INXQUARTZ + X11ApplicationServerReady(); +#else QuartzMessageMainThread(kQuartzServerStarted, NULL, 0); - +#endif // Do final display mode specific initialization before handling events if (quartzProcs->InitInput) quartzProcs->InitInput(argc, argv); @@ -272,7 +279,9 @@ static void QuartzHide(void) } } quartzServerVisible = FALSE; +#ifndef INXQUARTZ QuartzMessageMainThread(kQuartzServerHidden, NULL, 0); +#endif } diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h index f1b36b6b1..c83579cae 100644 --- a/hw/darwin/quartz/quartz.h +++ b/hw/darwin/quartz/quartz.h @@ -30,6 +30,8 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartz.h,v 1.4 2005/07/01 22:43:07 daniels Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartz.h,v 1.7 2003/11/12 20:21:51 torrey Exp $ */ #ifndef _QUARTZ_H #define _QUARTZ_H diff --git a/hw/darwin/quartz/quartzAudio.c b/hw/darwin/quartz/quartzAudio.c index b477b037b..03f9cca9f 100644 --- a/hw/darwin/quartz/quartzAudio.c +++ b/hw/darwin/quartz/quartzAudio.c @@ -35,7 +35,10 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzAudio.c,v 1.1 2002/03/28 02:21:18 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "quartzAudio.h" @@ -44,6 +47,7 @@ #include "inputstr.h" #include +#include void NSBeep(); diff --git a/hw/darwin/quartz/quartzAudio.h b/hw/darwin/quartz/quartzAudio.h index c406bbc2a..e20c21ad2 100644 --- a/hw/darwin/quartz/quartzAudio.h +++ b/hw/darwin/quartz/quartzAudio.h @@ -28,6 +28,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzAudio.h,v 1.2 2001/04/01 20:45:43 tsi Exp $ */ #ifndef _QUARTZAUDIO_H #define _QUARTZAUDIO_H diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m index 3cb191f22..a9c89c04c 100644 --- a/hw/darwin/quartz/quartzCocoa.m +++ b/hw/darwin/quartz/quartzCocoa.m @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartzCocoa.m,v 1.2 2004/04/23 19:15:17 eich Exp $ */ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartzCocoa.m,v 1.3 2004/07/30 19:12:17 torrey Exp $ */ /************************************************************** * * Quartz-specific support for the Darwin X Server @@ -35,6 +35,9 @@ * use or other dealings in this Software without prior written authorization. */ /* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCocoa.m,v 1.5 2004/06/08 22:58:10 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" @@ -44,14 +47,16 @@ #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. @@ -97,7 +102,7 @@ void QuartzReadPreferences(void) darwinDesiredDepth = [Preferences depth] - 1; } - +#endif /* * QuartzWriteCocoaPasteboard @@ -162,6 +167,7 @@ char *QuartzReadCocoaPasteboard(void) int QuartzFSUseQDCursor( int depth) // screen depth { +#ifndef INXQUARTZ switch ([Preferences useQDCursor]) { case qdCursor_Always: return TRUE; @@ -173,6 +179,7 @@ int QuartzFSUseQDCursor( else return FALSE; } +#endif return TRUE; } diff --git a/hw/darwin/quartz/quartzCommon.h b/hw/darwin/quartz/quartzCommon.h index f5dff662c..2fd79ebaf 100644 --- a/hw/darwin/quartz/quartzCommon.h +++ b/hw/darwin/quartz/quartzCommon.h @@ -1,3 +1,4 @@ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartzCommon.h,v 1.4 2005/07/01 22:43:07 daniels Exp $ */ /* * quartzCommon.h * @@ -31,6 +32,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCommon.h,v 1.15 2004/06/08 22:58:10 torrey Exp $ */ #ifndef _QUARTZCOMMON_H #define _QUARTZCOMMON_H diff --git a/hw/darwin/quartz/quartzCursor.c b/hw/darwin/quartz/quartzCursor.c index e2333e2ea..2f39887da 100644 --- a/hw/darwin/quartz/quartzCursor.c +++ b/hw/darwin/quartz/quartzCursor.c @@ -29,7 +29,11 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.c,v 1.4 2002/11/19 23:01:30 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include "quartzCursor.h" #include "darwin.h" diff --git a/hw/darwin/quartz/quartzCursor.h b/hw/darwin/quartz/quartzCursor.h index 56cc94d49..e847f8c60 100644 --- a/hw/darwin/quartz/quartzCursor.h +++ b/hw/darwin/quartz/quartzCursor.h @@ -29,6 +29,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzCursor.h,v 1.2 2001/09/23 04:04:49 torrey Exp $ */ #ifndef QUARTZCURSOR_H #define QUARTZCURSOR_H @@ -36,6 +37,7 @@ #include "screenint.h" Bool QuartzInitCursor(ScreenPtr pScreen); +void QuartzReallySetCursor(void); void QuartzSuspendXCursor(ScreenPtr pScreen); void QuartzResumeXCursor(ScreenPtr pScreen, int x, int y); diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index fc12522be..d23b68e39 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -32,14 +32,18 @@ promote the sale, use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c,v 1.1 2003/11/01 08:13:08 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzCommon.h" #include #include #include "darwinKeyboard.h" -#include "keysym.h" +#include "X11/keysym.h" #include "keysym2ucs.h" #ifdef HAS_KL_API @@ -214,35 +218,44 @@ Bool DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) { KeyboardLayoutRef key_layout; - const void *chr_data; + const void *chr_data = NULL; int num_keycodes = NUM_KEYCODES; UInt32 keyboard_type = 0; int is_uchr, i, j; OSStatus err; KeySym *k; - KLGetCurrentKeyboardLayout (&key_layout); - KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data); + TISInputSourceRef currentKeyLayoutRef = TISCopyCurrentKeyboardLayoutInputSource(); + if (currentKeyLayoutRef) + { + CFDataRef currentKeyLayoutDataRef = (CFDataRef )TISGetInputSourceProperty(currentKeyLayoutRef, kTISPropertyUnicodeKeyLayoutData); + if (currentKeyLayoutDataRef) + chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef); + } + + if(chr_data == NULL) { + KLGetCurrentKeyboardLayout (&key_layout); + KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data); - if (chr_data != NULL) - { - is_uchr = 1; - keyboard_type = LMGetKbdType (); - } - else - { - KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data); + if (chr_data != NULL) + { + is_uchr = 1; + keyboard_type = LMGetKbdType (); + } + else + { + KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data); - if (chr_data == NULL) - { - ErrorF ( "Couldn't get uchr or kchr resource\n"); - return FALSE; - } - - is_uchr = 0; - num_keycodes = 128; - } + if (chr_data == NULL) + { + ErrorF ( "Couldn't get uchr or kchr resource\n"); + return FALSE; + } + is_uchr = 0; + num_keycodes = 128; + } + } /* Scan the keycode range for the Unicode character that each key produces in the four shift states. Then convert that to @@ -366,6 +379,7 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) } } } + if(currentKeyLayoutRef) CFRelease(currentKeyLayoutRef); return TRUE; } diff --git a/hw/darwin/quartz/quartzPasteboard.c b/hw/darwin/quartz/quartzPasteboard.c index e92fe5c79..7ae2e33a7 100644 --- a/hw/darwin/quartz/quartzPasteboard.c +++ b/hw/darwin/quartz/quartzPasteboard.c @@ -29,7 +29,11 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzPasteboard.c,v 1.3 2001/09/23 04:04:49 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "quartzPasteboard.h" #include diff --git a/hw/darwin/quartz/quartzPasteboard.h b/hw/darwin/quartz/quartzPasteboard.h index afcb6e587..296c52c17 100644 --- a/hw/darwin/quartz/quartzPasteboard.h +++ b/hw/darwin/quartz/quartzPasteboard.h @@ -29,6 +29,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzPasteboard.h,v 1.1 2001/03/15 22:24:27 torrey Exp $ */ #ifndef _QUARTZPASTEBOARD_H #define _QUARTZPASTEBOARD_H @@ -41,4 +42,4 @@ char * QuartzReadCocoaPasteboard(void); // caller must free string void QuartzWritePasteboard(); void QuartzWriteCocoaPasteboard(char *text); -#endif /* _QUARTZPASTEBOARD_H */ +#endif /* _QUARTZPASTEBOARD_H */ \ No newline at end of file diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c index 277e5935f..4df8f9443 100644 --- a/hw/darwin/quartz/quartzStartup.c +++ b/hw/darwin/quartz/quartzStartup.c @@ -28,6 +28,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzStartup.c,v 1.8 2003/11/05 00:15:00 torrey Exp $ */ #include #include @@ -37,21 +38,35 @@ #include "quartz.h" #include "opaque.h" #include "micmap.h" - -int NSApplicationMain(int argc, char *argv[]); - +#include 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); -static GlxExtensionInitPtr GlxExtensionInit = NULL; - typedef void (*GlxWrapInitVisualsPtr)(miInitVisualsProcPtr *); -static GlxWrapInitVisualsPtr GlxWrapInitVisuals = NULL; - 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); +void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr); +static void server_thread (void *arg) { + extern int main(int argc, char **argv, char **envp); + + exit (main (argcGlobal, argvGlobal, envpGlobal)); +} +#endif /* * DarwinHandleGUI @@ -71,7 +86,9 @@ void DarwinHandleGUI( int fd[2]; if (been_here) { +#ifndef INXQUARTZ QuartzReadPreferences(); +#endif return; } been_here = TRUE; @@ -106,11 +123,17 @@ 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); } - /* * QuartzLoadDisplayBundle * Try to load the appropriate bundle containing the back end display code. @@ -118,6 +141,7 @@ void DarwinHandleGUI( Bool QuartzLoadDisplayBundle( const char *dpyBundleName) { +#ifndef INXQUARTZ CFBundleRef mainBundle; CFStringRef bundleName; CFURLRef bundleURL; @@ -164,7 +188,7 @@ Bool QuartzLoadDisplayBundle( // Release the CF objects CFRelease(bundleName); CFRelease(bundleURL); - +#endif return TRUE; } @@ -186,7 +210,7 @@ static void LoadGlxBundle(void) // Choose the bundle to load ErrorF("Loading GLX bundle "); - if (quartzUseAGL) { + if (/*quartzUseAGL*/0) { bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, quartzOpenGLBundle, kCFStringEncodingASCII, @@ -213,12 +237,20 @@ 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."); } @@ -233,11 +265,25 @@ static void LoadGlxBundle(void) * DarwinGlxExtensionInit * Initialize the GLX extension. */ -void DarwinGlxExtensionInit(void) +void DarwinGlxPushProvider(void *impl) { +#ifndef INXQUARTZ if (!GlxExtensionInit) LoadGlxBundle(); +#endif + GlxPushProvider(impl); +} +/* + * DarwinGlxExtensionInit + * Initialize the GLX extension. + */ +void DarwinGlxExtensionInit(void) +{ +#ifndef INXQUARTZ + if (!GlxExtensionInit) + LoadGlxBundle(); +#endif GlxExtensionInit(); } @@ -248,9 +294,10 @@ void DarwinGlxExtensionInit(void) void DarwinGlxWrapInitVisuals( miInitVisualsProcPtr *procPtr) { +#ifdef INXQUARTZ if (!GlxWrapInitVisuals) LoadGlxBundle(); - +#endif GlxWrapInitVisuals(procPtr); } diff --git a/hw/darwin/quartz/xpr/Xplugin.h b/hw/darwin/quartz/xpr/Xplugin.h index fb6842c87..e2e97b4c8 100644 --- a/hw/darwin/quartz/xpr/Xplugin.h +++ b/hw/darwin/quartz/xpr/Xplugin.h @@ -30,6 +30,7 @@ Note that these interfaces are provided solely for the use of the X11 server. Any other uses are unsupported and strongly discouraged. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h,v 1.2 2003/05/02 00:08:49 torrey Exp $ */ #ifndef XPLUGIN_H #define XPLUGIN_H 1 diff --git a/hw/darwin/quartz/xpr/appledri.c b/hw/darwin/quartz/xpr/appledri.c index 6d9bae10f..329c0d845 100644 --- a/hw/darwin/quartz/xpr/appledri.c +++ b/hw/darwin/quartz/xpr/appledri.c @@ -1,3 +1,4 @@ +/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.10 2000/12/07 20:26:14 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -35,6 +36,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #define NEED_REPLIES #define NEED_EVENTS #include diff --git a/hw/darwin/quartz/xpr/dri.c b/hw/darwin/quartz/xpr/dri.c index 9aeaaa588..c788c202b 100644 --- a/hw/darwin/quartz/xpr/dri.c +++ b/hw/darwin/quartz/xpr/dri.c @@ -1,3 +1,4 @@ +/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.34 2001/12/10 19:07:19 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -34,8 +35,17 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif +#ifdef XFree86LOADER +#include "xf86.h" +#include "xf86_ansic.h" +#else #include #include +#endif +#include #define NEED_REPLIES #define NEED_EVENTS @@ -234,7 +244,7 @@ DRIFinishScreenInit(ScreenPtr pScreen) pDRIPriv->wrap.ClipNotify = pScreen->ClipNotify; pScreen->ClipNotify = DRIClipNotify; - ErrorF("[DRI] screen %d installation complete\n", pScreen->myNum); + // ErrorF("[DRI] screen %d installation complete\n", pScreen->myNum); return TRUE; } diff --git a/hw/darwin/quartz/xpr/dri.h b/hw/darwin/quartz/xpr/dri.h index cf2638a9f..f826167f6 100644 --- a/hw/darwin/quartz/xpr/dri.h +++ b/hw/darwin/quartz/xpr/dri.h @@ -1,3 +1,4 @@ +/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.18 2001/03/21 16:21:40 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/dristruct.h b/hw/darwin/quartz/xpr/dristruct.h index 9a3d01c9b..0df8f1890 100644 --- a/hw/darwin/quartz/xpr/dristruct.h +++ b/hw/darwin/quartz/xpr/dristruct.h @@ -1,3 +1,4 @@ +/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.10 2001/03/21 16:21:40 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/x-hash.c b/hw/darwin/quartz/xpr/x-hash.c index a7024b2da..0491a5a4f 100644 --- a/hw/darwin/quartz/xpr/x-hash.c +++ b/hw/darwin/quartz/xpr/x-hash.c @@ -1,5 +1,5 @@ /* x-hash.c - basic hash tables - $Id$ + $Id: x-hash.c,v 1.7 2003/07/17 05:25:44 jharper Exp $ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,7 +27,10 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ - +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "x-hash.h" #include "x-list.h" #include diff --git a/hw/darwin/quartz/xpr/x-hash.h b/hw/darwin/quartz/xpr/x-hash.h index 5d4f7f93a..97d4cc40c 100644 --- a/hw/darwin/quartz/xpr/x-hash.h +++ b/hw/darwin/quartz/xpr/x-hash.h @@ -27,6 +27,7 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ #ifndef X_HASH_H #define X_HASH_H 1 diff --git a/hw/darwin/quartz/xpr/x-hook.c b/hw/darwin/quartz/xpr/x-hook.c index dcd34fdc5..7a0496763 100644 --- a/hw/darwin/quartz/xpr/x-hook.c +++ b/hw/darwin/quartz/xpr/x-hook.c @@ -28,7 +28,9 @@ promote the sale, use or other dealings in this Software without prior written authorization. */ /* $XFree86: $ */ - +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "x-hook.h" #include #include diff --git a/hw/darwin/quartz/xpr/x-list.c b/hw/darwin/quartz/xpr/x-list.c index b9f23928b..c87045ee3 100644 --- a/hw/darwin/quartz/xpr/x-list.c +++ b/hw/darwin/quartz/xpr/x-list.c @@ -1,5 +1,5 @@ /* x-list.c - $Id$ + $Id: x-list.c,v 1.16 2003/07/18 00:52:19 jharper Exp $ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,7 +27,10 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ - +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-list.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "x-list.h" #include #include diff --git a/hw/darwin/quartz/xpr/x-list.h b/hw/darwin/quartz/xpr/x-list.h index bd55a53d0..2b710703a 100644 --- a/hw/darwin/quartz/xpr/x-list.h +++ b/hw/darwin/quartz/xpr/x-list.h @@ -1,5 +1,5 @@ /* x-list.h -- simple list type - $Id$ + $Id: x-list.h,v 1.10 2003/07/18 00:52:19 jharper Exp $ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,6 +27,7 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-list.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ #ifndef X_LIST_H #define X_LIST_H 1 diff --git a/hw/darwin/quartz/xpr/xpr.h b/hw/darwin/quartz/xpr/xpr.h index 73a88c03d..5b02c6d39 100644 --- a/hw/darwin/quartz/xpr/xpr.h +++ b/hw/darwin/quartz/xpr/xpr.h @@ -26,6 +26,8 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/xpr/xpr.h,v 1.3 2005/07/01 22:43:08 daniels Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xpr.h,v 1.4 2003/11/12 20:21:52 torrey Exp $ */ #ifndef XPR_H #define XPR_H diff --git a/hw/darwin/quartz/xpr/xprAppleWM.c b/hw/darwin/quartz/xpr/xprAppleWM.c index 21746f6e9..3f5af2c22 100644 --- a/hw/darwin/quartz/xpr/xprAppleWM.c +++ b/hw/darwin/quartz/xpr/xprAppleWM.c @@ -27,9 +27,12 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.2 2003/06/30 01:45:13 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "xpr.h" -#include "applewmExt.h" +#include "quartz/applewmExt.h" #include "rootless.h" #include "Xplugin.h" #include diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c index cb949dadc..9f9abc2a9 100644 --- a/hw/darwin/quartz/xpr/xprCursor.c +++ b/hw/darwin/quartz/xpr/xprCursor.c @@ -30,8 +30,11 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - -#include "quartzCommon.h" +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif +#include "quartz/quartzCommon.h" #include "xpr.h" #include "darwin.h" #include "Xplugin.h" diff --git a/hw/darwin/quartz/xpr/xprFrame.c b/hw/darwin/quartz/xpr/xprFrame.c index ed02d4b62..b141e6285 100644 --- a/hw/darwin/quartz/xpr/xprFrame.c +++ b/hw/darwin/quartz/xpr/xprFrame.c @@ -27,13 +27,17 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/xpr/xprFrame.c,v 1.5 2005/07/01 22:43:08 daniels Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.4 2003/11/12 20:21:52 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif #include "xpr.h" #include "rootlessCommon.h" #include "Xplugin.h" #include "x-hash.h" #include "x-list.h" -#include "applewmExt.h" +#include "quartz/applewmExt.h" #include "propertyst.h" #include "dix.h" diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 1755ca6f7..1aebefed3 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -1,3 +1,4 @@ +/* $XdotOrg: xserver/xorg/hw/darwin/quartz/xpr/xprScreen.c,v 1.6 2005/07/01 22:43:08 daniels Exp $ */ /* * Xplugin rootless implementation screen functions */ @@ -27,18 +28,21 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ - -#include "quartzCommon.h" -#include "quartz.h" +/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c,v 1.11 2004/07/15 18:53:25 torrey Exp $ */ +#ifdef HAVE_XORG_CONFIG_H +#include +#endif +#include "quartz/quartzCommon.h" +#include "quartz/quartz.h" #include "xpr.h" -#include "pseudoramiX.h" +#include "quartz/pseudoramiX.h" #include "darwin.h" #include "rootless.h" -#include "safeAlpha.h" +#include "safeAlpha/safeAlpha.h" #include "dri.h" #include "globals.h" #include "Xplugin.h" -#include "applewmExt.h" +#include "quartz/applewmExt.h" #ifdef DAMAGE # include "damage.h" @@ -179,15 +183,15 @@ xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height) frame = displayScreenBounds(dpy); - ErrorF("PseudoramiX screen %d added: %dx%d @ (%d,%d).\n", i, + /* ErrorF("PseudoramiX screen %d added: %dx%d @ (%d,%d).\n", i, (int)frame.size.width, (int)frame.size.height, - (int)frame.origin.x, (int)frame.origin.y); + (int)frame.origin.x, (int)frame.origin.y); */ frame.origin.x -= unionRect.origin.x; frame.origin.y -= unionRect.origin.y; - ErrorF("PseudoramiX screen %d placed at X11 coordinate (%d,%d).\n", - i, (int)frame.origin.x, (int)frame.origin.y); + /* ErrorF("PseudoramiX screen %d placed at X11 coordinate (%d,%d).\n", + i, (int)frame.origin.x, (int)frame.origin.y); */ PseudoramiXAddScreen(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); @@ -206,7 +210,7 @@ xprDisplayInit(void) { CGDisplayCount displayCount; - ErrorF("Display mode: Rootless Quartz -- Xplugin implementation\n"); + // ErrorF("Display mode: Rootless Quartz -- Xplugin implementation\n"); CGGetActiveDisplayList(0, NULL, &displayCount); diff --git a/hw/darwin/utils/dumpkeymap.c b/hw/darwin/utils/dumpkeymap.c index d2eeca5c2..c3e66e39f 100644 --- a/hw/darwin/utils/dumpkeymap.c +++ b/hw/darwin/utils/dumpkeymap.c @@ -1,3 +1,4 @@ +// $XFree86: dumpkeymap.c,v 1.3 2000/12/05 21:18:34 dawes Exp $ //============================================================================= // // Copyright (C) 1999,2000 by Eric Sunshine @@ -143,7 +144,7 @@ #include #include #if !defined(DUMPKEYMAP_FILE_ONLY) -#include +#include "event_status_driver.h" #endif #define PROG_NAME "dumpkeymap" From de4fe33c713a1295542116108deebce6d73c747d Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 27 Oct 2007 02:22:56 -0700 Subject: [PATCH 04/74] removed CVS Id tags --- hw/darwin/XDarwin.man | 1 - hw/darwin/apple/Xquartz.man | 2 -- hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp | 1 - hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp | 2 -- hw/darwin/bundle/startXClients.cpp | 2 -- hw/darwin/quartz/Preferences.m | 2 +- hw/darwin/quartz/XApplication.h | 1 - hw/darwin/quartz/XApplication.m | 1 - hw/darwin/quartz/XDarwinStartup.man | 1 - hw/darwin/quartz/cr/XView.m | 2 +- hw/darwin/quartz/cr/cr.h | 4 +--- hw/darwin/quartz/cr/crAppleWM.m | 5 ++--- hw/darwin/quartz/cr/crFrame.m | 6 ++---- hw/darwin/quartz/cr/crScreen.m | 6 ++---- hw/darwin/quartz/fullscreen/fullscreen.c | 3 +-- hw/darwin/quartz/fullscreen/quartzCursor.c | 4 +--- hw/darwin/quartz/fullscreen/quartzCursor.h | 4 +--- hw/darwin/quartz/keysym2ucs.c | 2 +- hw/darwin/quartz/keysym2ucs.h | 3 +-- hw/darwin/quartz/pseudoramiX.c | 1 - hw/darwin/quartz/pseudoramiX.h | 1 - hw/darwin/quartz/quartz.c | 7 ++----- hw/darwin/quartz/quartz.h | 5 +---- hw/darwin/quartz/quartzAudio.c | 2 +- hw/darwin/quartz/quartzAudio.h | 1 - hw/darwin/quartz/quartzCocoa.m | 6 ++---- hw/darwin/quartz/quartzCommon.h | 2 -- hw/darwin/quartz/quartzCursor.c | 3 --- hw/darwin/quartz/quartzCursor.h | 4 +--- hw/darwin/quartz/quartzKeyboard.c | 2 -- hw/darwin/quartz/quartzPasteboard.c | 1 - hw/darwin/quartz/quartzPasteboard.h | 3 +-- hw/darwin/quartz/quartzStartup.c | 3 --- hw/darwin/quartz/xpr/Xplugin.h | 2 -- hw/darwin/quartz/xpr/appledri.c | 1 - hw/darwin/quartz/xpr/appledri.h | 1 - hw/darwin/quartz/xpr/appledristr.h | 1 - hw/darwin/quartz/xpr/dri.c | 1 - hw/darwin/quartz/xpr/dri.h | 1 - hw/darwin/quartz/xpr/dristruct.h | 1 - hw/darwin/quartz/xpr/x-hash.c | 3 +-- hw/darwin/quartz/xpr/x-hash.h | 2 -- hw/darwin/quartz/xpr/x-hook.c | 3 +-- hw/darwin/quartz/xpr/x-hook.h | 2 -- hw/darwin/quartz/xpr/x-list.c | 3 +-- hw/darwin/quartz/xpr/x-list.h | 2 -- hw/darwin/quartz/xpr/xpr.h | 5 +---- hw/darwin/quartz/xpr/xprAppleWM.c | 5 ++--- hw/darwin/quartz/xpr/xprCursor.c | 4 +--- hw/darwin/quartz/xpr/xprFrame.c | 6 ++---- hw/darwin/quartz/xpr/xprScreen.c | 6 ++---- hw/darwin/utils/README.txt | 4 ---- hw/darwin/utils/dumpkeymap.c | 1 - hw/darwin/utils/dumpkeymap.man | 2 -- 61 files changed, 33 insertions(+), 130 deletions(-) diff --git a/hw/darwin/XDarwin.man b/hw/darwin/XDarwin.man index eb1b9dcb8..143fb7c6d 100644 --- a/hw/darwin/XDarwin.man +++ b/hw/darwin/XDarwin.man @@ -1,4 +1,3 @@ -.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.3 2001/09/23 23:02:37 torrey Exp $ .\" .TH XDARWIN 1 __vendorversion__ .SH NAME diff --git a/hw/darwin/apple/Xquartz.man b/hw/darwin/apple/Xquartz.man index edac30ee9..37a7f1a26 100644 --- a/hw/darwin/apple/Xquartz.man +++ b/hw/darwin/apple/Xquartz.man @@ -1,5 +1,3 @@ -.\" $XFree86: xc/programs/Xserver/hw/darwin/XDarwin.man,v 1.4 2002/01/09 18:01:58 torrey Exp $ -.\" .TH XQUARTZ 1 __vendorversion__ .SH NAME Xquartz \- X window system server for Quartz operating system diff --git a/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp index 1113b8ae6..4b8e6f5cb 100644 --- a/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp b/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp index aeb210342..268b80091 100644 --- a/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp +++ b/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp @@ -1,5 +1,4 @@ /* English versions of the Info.plist keys; used by most localizations. */ /* Most of these are set in the target application settings. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp,v 1.3 2002/07/17 01:24:55 torrey Exp $ */ NSHumanReadableCopyright = __quote__ X_VENDOR_NAME X_VERSION __quote__; diff --git a/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp index 5996285ae..db33670d9 100644 --- a/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp index 2a14793db..512416b1b 100644 --- a/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp index 5996285ae..db33670d9 100644 --- a/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp index 7ef1ba5d8..6800171d9 100644 --- a/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp index 5cd27862d..a79e6f95f 100644 --- a/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Ayuda diff --git a/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp index 4210878c0..ab940ec3d 100644 --- a/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp index 5996285ae..db33670d9 100644 --- a/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp +++ b/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp @@ -1,5 +1,3 @@ - - XDarwin Help diff --git a/hw/darwin/bundle/startXClients.cpp b/hw/darwin/bundle/startXClients.cpp index 51cdb5c9e..f812dbfd8 100644 --- a/hw/darwin/bundle/startXClients.cpp +++ b/hw/darwin/bundle/startXClients.cpp @@ -2,8 +2,6 @@ XCOMM!/bin/sh XCOMM This script is used by XDarwin to start X clients when XDarwin is XCOMM launched from the Finder. -XCOMM -XCOMM $XFree86: $ userclientrc=$HOME/.xinitrc sysclientrc=XINITDIR/xinitrc diff --git a/hw/darwin/quartz/Preferences.m b/hw/darwin/quartz/Preferences.m index eb78fd32a..b5eeedd24 100644 --- a/hw/darwin/quartz/Preferences.m +++ b/hw/darwin/quartz/Preferences.m @@ -30,7 +30,7 @@ * sale, use or other dealings in this Software without prior written * authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/Preferences.m,v 1.5 2004/06/08 22:58:10 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/XApplication.h b/hw/darwin/quartz/XApplication.h index a2622e060..2f2b22389 100644 --- a/hw/darwin/quartz/XApplication.h +++ b/hw/darwin/quartz/XApplication.h @@ -30,7 +30,6 @@ * sale, use or other dealings in this Software without prior written * authorization. */ -/* $XFree86: $ */ #import diff --git a/hw/darwin/quartz/XApplication.m b/hw/darwin/quartz/XApplication.m index e0ee8d9c6..de32d38fe 100644 --- a/hw/darwin/quartz/XApplication.m +++ b/hw/darwin/quartz/XApplication.m @@ -30,7 +30,6 @@ * sale, use or other dealings in this Software without prior written * authorization. */ -/* $XFree86: $ */ #import "XApplication.h" diff --git a/hw/darwin/quartz/XDarwinStartup.man b/hw/darwin/quartz/XDarwinStartup.man index 9bf7dfabd..1ad3bbced 100644 --- a/hw/darwin/quartz/XDarwinStartup.man +++ b/hw/darwin/quartz/XDarwinStartup.man @@ -1,4 +1,3 @@ -.\" $XFree86: xc/programs/Xserver/hw/darwin/bundle/XDarwinStartup.man,v 1.1 2002/02/05 19:16:14 torrey Exp $ .TH XDarwinStartup 1 .SH NAME XDarwinStartup - Startup program for the XDarwin X window server diff --git a/hw/darwin/quartz/cr/XView.m b/hw/darwin/quartz/cr/XView.m index 8bcd1a76f..488f88a2f 100644 --- a/hw/darwin/quartz/cr/XView.m +++ b/hw/darwin/quartz/cr/XView.m @@ -29,7 +29,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/XView.m,v 1.1 2003/06/07 05:49:07 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/cr/cr.h b/hw/darwin/quartz/cr/cr.h index 94133e4af..0ebad5da0 100644 --- a/hw/darwin/quartz/cr/cr.h +++ b/hw/darwin/quartz/cr/cr.h @@ -1,7 +1,6 @@ /* * Internal definitions of the Cocoa rootless implementation - */ -/* + * * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,7 +25,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86$ */ #ifndef _CR_H #define _CR_H diff --git a/hw/darwin/quartz/cr/crAppleWM.m b/hw/darwin/quartz/cr/crAppleWM.m index 259c2d879..da05fed60 100644 --- a/hw/darwin/quartz/cr/crAppleWM.m +++ b/hw/darwin/quartz/cr/crAppleWM.m @@ -1,7 +1,6 @@ /* * Cocoa rootless implementation functions for AppleWM extension - */ -/* + * * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,7 +25,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.2 2003/06/30 01:45:13 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/cr/crFrame.m b/hw/darwin/quartz/cr/crFrame.m index 326910b68..ca1ef3d2e 100644 --- a/hw/darwin/quartz/cr/crFrame.m +++ b/hw/darwin/quartz/cr/crFrame.m @@ -1,7 +1,6 @@ /* * Cocoa rootless implementation frame functions - */ -/* + * * Copyright (c) 2001 Greg Parker. All Rights Reserved. * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved. * @@ -27,8 +26,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/cr/crFrame.m,v 1.3 2004/10/08 00:35:05 torrey Exp $ */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/crFrame.m,v 1.9 2004/03/19 02:05:29 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/cr/crScreen.m b/hw/darwin/quartz/cr/crScreen.m index b78d1ea27..9c26a7667 100644 --- a/hw/darwin/quartz/cr/crScreen.m +++ b/hw/darwin/quartz/cr/crScreen.m @@ -1,8 +1,6 @@ -/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/cr/crScreen.m,v 1.4 2004/08/12 20:24:36 torrey Exp $ */ /* * Cocoa rootless implementation initialization - */ -/* + * * Copyright (c) 2001 Greg Parker. All Rights Reserved. * Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved. * @@ -28,7 +26,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/cr/crScreen.m,v 1.5 2003/11/12 20:21:52 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/fullscreen/fullscreen.c b/hw/darwin/quartz/fullscreen/fullscreen.c index ed7f4c841..2116ebdf2 100644 --- a/hw/darwin/quartz/fullscreen/fullscreen.c +++ b/hw/darwin/quartz/fullscreen/fullscreen.c @@ -25,8 +25,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/fullscreen/fullscreen.c,v 1.4 2005/07/01 22:43:08 daniels Exp $ */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/fullscreen/fullscreen.c,v 1.3 2003/11/27 01:59:53 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.c b/hw/darwin/quartz/fullscreen/quartzCursor.c index 60a4c4d8a..a5483ee00 100644 --- a/hw/darwin/quartz/fullscreen/quartzCursor.c +++ b/hw/darwin/quartz/fullscreen/quartzCursor.c @@ -2,8 +2,6 @@ * * Support for using the Quartz Window Manager cursor * - **************************************************************/ -/* * Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker. * All Rights Reserved. * @@ -29,7 +27,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.c,v 1.5 2003/01/23 00:34:26 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.h b/hw/darwin/quartz/fullscreen/quartzCursor.h index efcc4435e..56a02098d 100644 --- a/hw/darwin/quartz/fullscreen/quartzCursor.h +++ b/hw/darwin/quartz/fullscreen/quartzCursor.h @@ -2,8 +2,7 @@ * quartzCursor.h * * External interface for Quartz hardware cursor - */ -/* + * * Copyright (c) 2001 Torrey T. Lyons and Greg Parker. * All Rights Reserved. * @@ -29,7 +28,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.h,v 1.1 2002/03/28 02:21:19 torrey Exp $ */ #ifndef QUARTZCURSOR_H #define QUARTZCURSOR_H diff --git a/hw/darwin/quartz/keysym2ucs.c b/hw/darwin/quartz/keysym2ucs.c index 98b8b6fee..8626ebc4e 100644 --- a/hw/darwin/quartz/keysym2ucs.c +++ b/hw/darwin/quartz/keysym2ucs.c @@ -1,4 +1,4 @@ -/* $XFree86: $ +/* * * This module converts keysym values into the corresponding ISO 10646 * (UCS, Unicode) values. diff --git a/hw/darwin/quartz/keysym2ucs.h b/hw/darwin/quartz/keysym2ucs.h index c7ff6f3b3..e167d6a03 100644 --- a/hw/darwin/quartz/keysym2ucs.h +++ b/hw/darwin/quartz/keysym2ucs.h @@ -1,5 +1,4 @@ -/* $XFree86: $ - * +/* * This module converts keysym values into the corresponding ISO 10646 * (UCS, Unicode) values. * diff --git a/hw/darwin/quartz/pseudoramiX.c b/hw/darwin/quartz/pseudoramiX.c index 66b96624b..5c5d342ea 100644 --- a/hw/darwin/quartz/pseudoramiX.c +++ b/hw/darwin/quartz/pseudoramiX.c @@ -32,7 +32,6 @@ shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Digital Equipment Corporation. ******************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.c,v 1.4 2004/07/02 01:30:33 torrey Exp $ */ #include "pseudoramiX.h" #ifdef HAVE_XORG_CONFIG_H diff --git a/hw/darwin/quartz/pseudoramiX.h b/hw/darwin/quartz/pseudoramiX.h index c2943369d..df5010d1d 100644 --- a/hw/darwin/quartz/pseudoramiX.h +++ b/hw/darwin/quartz/pseudoramiX.h @@ -1,7 +1,6 @@ /* * Minimal implementation of PanoramiX/Xinerama */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.h,v 1.3 2004/07/02 01:30:33 torrey Exp $ */ extern int noPseudoramiXExtension; diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index baeba8f90..ac555ecd7 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -1,10 +1,7 @@ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartz.c,v 1.4 2005/07/01 22:43:07 daniels Exp $ */ -/************************************************************** +/* * * Quartz-specific support for the Darwin X Server * - **************************************************************/ -/* * Copyright (c) 2001-2004 Greg Parker and Torrey T. Lyons. * All Rights Reserved. * @@ -30,7 +27,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartz.c,v 1.16 2004/07/02 01:30:33 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h index c83579cae..fa7499df1 100644 --- a/hw/darwin/quartz/quartz.h +++ b/hw/darwin/quartz/quartz.h @@ -3,8 +3,7 @@ * * External interface of the Quartz display modes seen by the generic, mode * independent parts of the Darwin X server. - */ -/* + * * Copyright (c) 2001-2003 Greg Parker and Torrey T. Lyons. * All Rights Reserved. * @@ -30,8 +29,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartz.h,v 1.4 2005/07/01 22:43:07 daniels Exp $ */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartz.h,v 1.7 2003/11/12 20:21:51 torrey Exp $ */ #ifndef _QUARTZ_H #define _QUARTZ_H diff --git a/hw/darwin/quartz/quartzAudio.c b/hw/darwin/quartz/quartzAudio.c index 03f9cca9f..1980cd25f 100644 --- a/hw/darwin/quartz/quartzAudio.c +++ b/hw/darwin/quartz/quartzAudio.c @@ -35,7 +35,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzAudio.c,v 1.1 2002/03/28 02:21:18 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/quartzAudio.h b/hw/darwin/quartz/quartzAudio.h index e20c21ad2..c406bbc2a 100644 --- a/hw/darwin/quartz/quartzAudio.h +++ b/hw/darwin/quartz/quartzAudio.h @@ -28,7 +28,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzAudio.h,v 1.2 2001/04/01 20:45:43 tsi Exp $ */ #ifndef _QUARTZAUDIO_H #define _QUARTZAUDIO_H diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m index a9c89c04c..2e7b86b25 100644 --- a/hw/darwin/quartz/quartzCocoa.m +++ b/hw/darwin/quartz/quartzCocoa.m @@ -1,4 +1,3 @@ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartzCocoa.m,v 1.3 2004/07/30 19:12:17 torrey Exp $ */ /************************************************************** * * Quartz-specific support for the Darwin X Server @@ -7,8 +6,7 @@ * This file is separate from the parts of Quartz support * that use X include files to avoid symbol collisions. * - **************************************************************/ -/* + * * Copyright (c) 2001-2004 Torrey T. Lyons and Greg Parker. * All Rights Reserved. * @@ -34,7 +32,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCocoa.m,v 1.5 2004/06/08 22:58:10 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/quartzCommon.h b/hw/darwin/quartz/quartzCommon.h index 2fd79ebaf..f5dff662c 100644 --- a/hw/darwin/quartz/quartzCommon.h +++ b/hw/darwin/quartz/quartzCommon.h @@ -1,4 +1,3 @@ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/quartzCommon.h,v 1.4 2005/07/01 22:43:07 daniels Exp $ */ /* * quartzCommon.h * @@ -32,7 +31,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCommon.h,v 1.15 2004/06/08 22:58:10 torrey Exp $ */ #ifndef _QUARTZCOMMON_H #define _QUARTZCOMMON_H diff --git a/hw/darwin/quartz/quartzCursor.c b/hw/darwin/quartz/quartzCursor.c index 2f39887da..a5483ee00 100644 --- a/hw/darwin/quartz/quartzCursor.c +++ b/hw/darwin/quartz/quartzCursor.c @@ -2,8 +2,6 @@ * * Support for using the Quartz Window Manager cursor * - **************************************************************/ -/* * Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker. * All Rights Reserved. * @@ -29,7 +27,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzCursor.c,v 1.4 2002/11/19 23:01:30 torrey Exp $ */ #ifdef HAVE_XORG_CONFIG_H #include diff --git a/hw/darwin/quartz/quartzCursor.h b/hw/darwin/quartz/quartzCursor.h index e847f8c60..56a02098d 100644 --- a/hw/darwin/quartz/quartzCursor.h +++ b/hw/darwin/quartz/quartzCursor.h @@ -2,8 +2,7 @@ * quartzCursor.h * * External interface for Quartz hardware cursor - */ -/* + * * Copyright (c) 2001 Torrey T. Lyons and Greg Parker. * All Rights Reserved. * @@ -29,7 +28,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzCursor.h,v 1.2 2001/09/23 04:04:49 torrey Exp $ */ #ifndef QUARTZCURSOR_H #define QUARTZCURSOR_H diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index d23b68e39..b330793b8 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -1,6 +1,5 @@ /* quartzKeyboard.c - $Id$ Code to build a keymap using the Carbon Keyboard Layout API, which is supported on Mac OS X 10.2 and newer. @@ -32,7 +31,6 @@ promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzKeyboard.c,v 1.1 2003/11/01 08:13:08 torrey Exp $ */ #ifdef HAVE_XORG_CONFIG_H #include diff --git a/hw/darwin/quartz/quartzPasteboard.c b/hw/darwin/quartz/quartzPasteboard.c index 7ae2e33a7..a3536fc56 100644 --- a/hw/darwin/quartz/quartzPasteboard.c +++ b/hw/darwin/quartz/quartzPasteboard.c @@ -29,7 +29,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzPasteboard.c,v 1.3 2001/09/23 04:04:49 torrey Exp $ */ #ifdef HAVE_XORG_CONFIG_H #include diff --git a/hw/darwin/quartz/quartzPasteboard.h b/hw/darwin/quartz/quartzPasteboard.h index 296c52c17..afcb6e587 100644 --- a/hw/darwin/quartz/quartzPasteboard.h +++ b/hw/darwin/quartz/quartzPasteboard.h @@ -29,7 +29,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/bundle/quartzPasteboard.h,v 1.1 2001/03/15 22:24:27 torrey Exp $ */ #ifndef _QUARTZPASTEBOARD_H #define _QUARTZPASTEBOARD_H @@ -42,4 +41,4 @@ char * QuartzReadCocoaPasteboard(void); // caller must free string void QuartzWritePasteboard(); void QuartzWriteCocoaPasteboard(char *text); -#endif /* _QUARTZPASTEBOARD_H */ \ No newline at end of file +#endif /* _QUARTZPASTEBOARD_H */ diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c index 4df8f9443..f62779048 100644 --- a/hw/darwin/quartz/quartzStartup.c +++ b/hw/darwin/quartz/quartzStartup.c @@ -2,8 +2,6 @@ * * Startup code for the Quartz Darwin X Server * - **************************************************************/ -/* * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -28,7 +26,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/quartzStartup.c,v 1.8 2003/11/05 00:15:00 torrey Exp $ */ #include #include diff --git a/hw/darwin/quartz/xpr/Xplugin.h b/hw/darwin/quartz/xpr/Xplugin.h index e2e97b4c8..a10b1b8e1 100644 --- a/hw/darwin/quartz/xpr/Xplugin.h +++ b/hw/darwin/quartz/xpr/Xplugin.h @@ -1,5 +1,4 @@ /* Xplugin.h -- windowing API for rootless X11 server - $Id$ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -30,7 +29,6 @@ Note that these interfaces are provided solely for the use of the X11 server. Any other uses are unsupported and strongly discouraged. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/Xplugin.h,v 1.2 2003/05/02 00:08:49 torrey Exp $ */ #ifndef XPLUGIN_H #define XPLUGIN_H 1 diff --git a/hw/darwin/quartz/xpr/appledri.c b/hw/darwin/quartz/xpr/appledri.c index 329c0d845..c38157dde 100644 --- a/hw/darwin/quartz/xpr/appledri.c +++ b/hw/darwin/quartz/xpr/appledri.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/xf86dri.c,v 1.10 2000/12/07 20:26:14 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/appledri.h b/hw/darwin/quartz/xpr/appledri.h index 9c630373d..c4e43be12 100644 --- a/hw/darwin/quartz/xpr/appledri.h +++ b/hw/darwin/quartz/xpr/appledri.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/appledristr.h b/hw/darwin/quartz/xpr/appledristr.h index 36a2e891e..8649fd329 100644 --- a/hw/darwin/quartz/xpr/appledristr.h +++ b/hw/darwin/quartz/xpr/appledristr.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.9 2001/03/21 16:01:08 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/dri.c b/hw/darwin/quartz/xpr/dri.c index c788c202b..70efca740 100644 --- a/hw/darwin/quartz/xpr/dri.c +++ b/hw/darwin/quartz/xpr/dri.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.34 2001/12/10 19:07:19 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/dri.h b/hw/darwin/quartz/xpr/dri.h index f826167f6..cf2638a9f 100644 --- a/hw/darwin/quartz/xpr/dri.h +++ b/hw/darwin/quartz/xpr/dri.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dri.h,v 1.18 2001/03/21 16:21:40 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/dristruct.h b/hw/darwin/quartz/xpr/dristruct.h index 0df8f1890..9a3d01c9b 100644 --- a/hw/darwin/quartz/xpr/dristruct.h +++ b/hw/darwin/quartz/xpr/dristruct.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.10 2001/03/21 16:21:40 dawes Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/hw/darwin/quartz/xpr/x-hash.c b/hw/darwin/quartz/xpr/x-hash.c index 0491a5a4f..62d1a990a 100644 --- a/hw/darwin/quartz/xpr/x-hash.c +++ b/hw/darwin/quartz/xpr/x-hash.c @@ -1,5 +1,4 @@ /* x-hash.c - basic hash tables - $Id: x-hash.c,v 1.7 2003/07/17 05:25:44 jharper Exp $ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,7 +26,7 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/xpr/x-hash.h b/hw/darwin/quartz/xpr/x-hash.h index 97d4cc40c..3456dbedf 100644 --- a/hw/darwin/quartz/xpr/x-hash.h +++ b/hw/darwin/quartz/xpr/x-hash.h @@ -1,5 +1,4 @@ /* x-hash.h -- basic hash table class - $Id$ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,7 +26,6 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-hash.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ #ifndef X_HASH_H #define X_HASH_H 1 diff --git a/hw/darwin/quartz/xpr/x-hook.c b/hw/darwin/quartz/xpr/x-hook.c index 7a0496763..323e3739d 100644 --- a/hw/darwin/quartz/xpr/x-hook.c +++ b/hw/darwin/quartz/xpr/x-hook.c @@ -1,5 +1,4 @@ /* x-hook.c - $Id$ Copyright (c) 2003 Apple Computer, Inc. All rights reserved. @@ -27,7 +26,7 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/xpr/x-hook.h b/hw/darwin/quartz/xpr/x-hook.h index 0b5e038fe..392352d50 100644 --- a/hw/darwin/quartz/xpr/x-hook.h +++ b/hw/darwin/quartz/xpr/x-hook.h @@ -1,5 +1,4 @@ /* x-hook.h -- lists of function,data pairs to call. - $Id$ Copyright (c) 2003 Apple Computer, Inc. All rights reserved. @@ -27,7 +26,6 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: $ */ #ifndef X_HOOK_H #define X_HOOK_H 1 diff --git a/hw/darwin/quartz/xpr/x-list.c b/hw/darwin/quartz/xpr/x-list.c index c87045ee3..2e74ae883 100644 --- a/hw/darwin/quartz/xpr/x-list.c +++ b/hw/darwin/quartz/xpr/x-list.c @@ -1,5 +1,4 @@ /* x-list.c - $Id: x-list.c,v 1.16 2003/07/18 00:52:19 jharper Exp $ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,7 +26,7 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-list.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/xpr/x-list.h b/hw/darwin/quartz/xpr/x-list.h index 2b710703a..04af024a2 100644 --- a/hw/darwin/quartz/xpr/x-list.h +++ b/hw/darwin/quartz/xpr/x-list.h @@ -1,5 +1,4 @@ /* x-list.h -- simple list type - $Id: x-list.h,v 1.10 2003/07/18 00:52:19 jharper Exp $ Copyright (c) 2002 Apple Computer, Inc. All rights reserved. @@ -27,7 +26,6 @@ copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/x-list.h,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ #ifndef X_LIST_H #define X_LIST_H 1 diff --git a/hw/darwin/quartz/xpr/xpr.h b/hw/darwin/quartz/xpr/xpr.h index 5b02c6d39..81bb912e1 100644 --- a/hw/darwin/quartz/xpr/xpr.h +++ b/hw/darwin/quartz/xpr/xpr.h @@ -1,7 +1,6 @@ /* * Xplugin rootless implementation - */ -/* + * * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,8 +25,6 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/xpr/xpr.h,v 1.3 2005/07/01 22:43:08 daniels Exp $ */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xpr.h,v 1.4 2003/11/12 20:21:52 torrey Exp $ */ #ifndef XPR_H #define XPR_H diff --git a/hw/darwin/quartz/xpr/xprAppleWM.c b/hw/darwin/quartz/xpr/xprAppleWM.c index 3f5af2c22..e67abb6d5 100644 --- a/hw/darwin/quartz/xpr/xprAppleWM.c +++ b/hw/darwin/quartz/xpr/xprAppleWM.c @@ -1,7 +1,6 @@ /* * Xplugin rootless implementation functions for AppleWM extension - */ -/* + * * Copyright (c) 2002 Apple Computer, Inc. All rights reserved. * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * @@ -27,7 +26,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.2 2003/06/30 01:45:13 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c index 9f9abc2a9..570ef0bb2 100644 --- a/hw/darwin/quartz/xpr/xprCursor.c +++ b/hw/darwin/quartz/xpr/xprCursor.c @@ -2,8 +2,6 @@ * * Xplugin cursor support * - **************************************************************/ -/* * Copyright (c) 2001 Torrey T. Lyons and Greg Parker. * Copyright (c) 2002 Apple Computer, Inc. * All Rights Reserved. @@ -30,7 +28,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprCursor.c,v 1.1 2003/04/30 23:15:42 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/xpr/xprFrame.c b/hw/darwin/quartz/xpr/xprFrame.c index b141e6285..0e3b200e7 100644 --- a/hw/darwin/quartz/xpr/xprFrame.c +++ b/hw/darwin/quartz/xpr/xprFrame.c @@ -1,7 +1,6 @@ /* * Xplugin rootless implementation frame functions - */ -/* + * * Copyright (c) 2002 Apple Computer, Inc. All rights reserved. * Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved. * @@ -27,8 +26,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/xpr/xprFrame.c,v 1.5 2005/07/01 22:43:08 daniels Exp $ */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprFrame.c,v 1.4 2003/11/12 20:21:52 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 1aebefed3..92886fcd8 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -1,8 +1,6 @@ -/* $XdotOrg: xserver/xorg/hw/darwin/quartz/xpr/xprScreen.c,v 1.6 2005/07/01 22:43:08 daniels Exp $ */ /* * Xplugin rootless implementation screen functions - */ -/* + * * Copyright (c) 2002 Apple Computer, Inc. All Rights Reserved. * Copyright (c) 2004 Torrey T. Lyons. All Rights Reserved. * @@ -28,7 +26,7 @@ * holders shall not be used in advertising or otherwise to promote the sale, * use or other dealings in this Software without prior written authorization. */ -/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c,v 1.11 2004/07/15 18:53:25 torrey Exp $ */ + #ifdef HAVE_XORG_CONFIG_H #include #endif diff --git a/hw/darwin/utils/README.txt b/hw/darwin/utils/README.txt index fb6d4399e..1dd64794e 100644 --- a/hw/darwin/utils/README.txt +++ b/hw/darwin/utils/README.txt @@ -105,7 +105,3 @@ The implementation of dumpkeymap is based upon information gathered on September 3, 1997 by Eric Sunshine and Paul S. McCarthy during an effort to reverse engineer the format of the NeXT .keymapping file. - - - -$XFree86: xc/programs/Xserver/hw/darwin/utils/README.txt,v 1.1 2000/12/01 19:47:39 dawes Exp $ diff --git a/hw/darwin/utils/dumpkeymap.c b/hw/darwin/utils/dumpkeymap.c index c3e66e39f..6a8b8b1fc 100644 --- a/hw/darwin/utils/dumpkeymap.c +++ b/hw/darwin/utils/dumpkeymap.c @@ -1,4 +1,3 @@ -// $XFree86: dumpkeymap.c,v 1.3 2000/12/05 21:18:34 dawes Exp $ //============================================================================= // // Copyright (C) 1999,2000 by Eric Sunshine diff --git a/hw/darwin/utils/dumpkeymap.man b/hw/darwin/utils/dumpkeymap.man index 90a2cd051..02b09e6ca 100644 --- a/hw/darwin/utils/dumpkeymap.man +++ b/hw/darwin/utils/dumpkeymap.man @@ -30,8 +30,6 @@ // //============================================================================= // -// $XFree86$ -// .. .ig //----------------------------------------------------------------------------- From 67fe8339fa2f7a9e543721290c4c5894d4412183 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 27 Oct 2007 04:17:29 -0700 Subject: [PATCH 05/74] added missing "f" flag to jump target in asm blocks (This sometimes prevents builds on Darwin, but is apparently universally incorrect. I just work here.) --- fb/fbpict.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fb/fbpict.c b/fb/fbpict.c index 38afbea5c..613e652e9 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -1443,7 +1443,7 @@ static unsigned int detectCPUFeatures(void) { "pop %%eax\n" "mov $0x0, %%edx\n" "xor %%ecx, %%eax\n" - "jz 1\n" + "jz 1f\n" "mov $0x00000000, %%eax\n" "push %%ebx\n" @@ -1486,7 +1486,7 @@ static unsigned int detectCPUFeatures(void) { "cpuid\n" "xor %%edx, %%edx\n" "cmp $0x1, %%eax\n" - "jge 2\n" + "jge 2f\n" "mov $0x80000001, %%eax\n" "cpuid\n" "2:\n" From c1e08cef60726b62a964fa8679bdec7f604f6831 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 27 Oct 2007 23:33:51 -0700 Subject: [PATCH 06/74] More patches from downstream --- GL/apple/Makefile.am | 10 + GL/apple/aglGlx.c | 103 +- GL/apple/indirect.c | 1669 +++++++++++++------ configure.ac | 172 +- hw/darwin/Makefile.am | 8 - hw/darwin/quartz/Makefile.am | 3 +- mi/miinitext.c | 24 +- miext/Makefile.am | 3 + miext/rootless/Makefile.am | 29 +- miext/rootless/accel/Makefile.am | 18 + miext/rootless/rootlessWindow.c | 6 +- miext/rootless/safeAlpha/Makefile.am | 12 + miext/rootless/safeAlpha/safeAlphaPicture.c | 6 +- miext/rootless/safeAlpha/safeAlphaWindow.c | 4 + os/connection.c | 10 +- 15 files changed, 1404 insertions(+), 673 deletions(-) create mode 100644 GL/apple/Makefile.am create mode 100644 miext/rootless/accel/Makefile.am create mode 100644 miext/rootless/safeAlpha/Makefile.am diff --git a/GL/apple/Makefile.am b/GL/apple/Makefile.am new file mode 100644 index 000000000..4220f7f9c --- /dev/null +++ b/GL/apple/Makefile.am @@ -0,0 +1,10 @@ +AM_CFLAGS = -I$(top_srcdir) \ + -I$(top_srcdir)/GL/glx \ + -I$(top_srcdir)/GL/include \ + -I$(top_srcdir)/GL/mesa/glapi \ + -I$(top_srcdir)/hw/darwin/quartz \ + -I$(top_srcdir)/hw/darwin/quartz/xpr + +noinst_LIBRARIES = libCGLcore.a +libCGLcore_a_SOURCES = indirect.c \ + $(top_srcdir)/hw/dmx/glxProxy/compsize.c diff --git a/GL/apple/aglGlx.c b/GL/apple/aglGlx.c index 900a9a96e..0bc9f6127 100644 --- a/GL/apple/aglGlx.c +++ b/GL/apple/aglGlx.c @@ -1008,6 +1008,7 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, return TRUE; } +Bool enable_stereo = false; /* based on code in i830_dri.c This ends calling glAquaSetVisualConfigs to set the static numconfigs, etc. */ @@ -1022,16 +1023,18 @@ glAquaInitVisualConfigs(void) int i = 0; GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs "); - + /* count num configs: + 2 stereo (on, off) (optional) 2 Z buffer (0, 24 bit) 2 AUX buffer (0, 2) 2 buffers (single, double) 2 stencil (0, 8 bit) 2 accum (0, 64 bit) - = 32 configs */ + = 64 configs with stereo, or 32 without */ - lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */ + if (enable_stereo) lclNumConfigs = 2 * 2 * 2 * 2 * 2 * 2; /* 64 */ + else lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */ /* alloc */ lclVisualConfigs = xcalloc(sizeof(__GLXvisualConfig), lclNumConfigs); @@ -1040,54 +1043,55 @@ glAquaInitVisualConfigs(void) /* fill in configs */ if (NULL != lclVisualConfigs) { i = 0; /* current buffer */ - for (depth = 0; depth < 2; depth++) { + for (stereo = 0; stereo < (enable_stereo ? 2 : 1); stereo++) { + for (depth = 0; depth < 2; depth++) { for (aux = 0; aux < 2; aux++) { - for (buffers = 0; buffers < 2; buffers++) { - for (stencil = 0; stencil < 2; stencil++) { - for (accum = 0; accum < 2; accum++) { - lclVisualConfigs[i].vid = -1; - lclVisualConfigs[i].class = -1; - lclVisualConfigs[i].rgba = TRUE; - lclVisualConfigs[i].redSize = -1; - lclVisualConfigs[i].greenSize = -1; - lclVisualConfigs[i].blueSize = -1; - lclVisualConfigs[i].redMask = -1; - lclVisualConfigs[i].greenMask = -1; - lclVisualConfigs[i].blueMask = -1; - lclVisualConfigs[i].alphaMask = 0; - if (accum) { - lclVisualConfigs[i].accumRedSize = 16; - lclVisualConfigs[i].accumGreenSize = 16; - lclVisualConfigs[i].accumBlueSize = 16; - lclVisualConfigs[i].accumAlphaSize = 16; - } - else { - lclVisualConfigs[i].accumRedSize = 0; - lclVisualConfigs[i].accumGreenSize = 0; - lclVisualConfigs[i].accumBlueSize = 0; - lclVisualConfigs[i].accumAlphaSize = 0; - } - lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE; - lclVisualConfigs[i].stereo = FALSE; - lclVisualConfigs[i].bufferSize = -1; - - lclVisualConfigs[i].depthSize = depth? 24 : 0; - lclVisualConfigs[i].stencilSize = stencil ? 8 : 0; - lclVisualConfigs[i].auxBuffers = aux ? 2 : 0; - lclVisualConfigs[i].level = 0; - lclVisualConfigs[i].visualRating = GLX_NONE_EXT; - lclVisualConfigs[i].transparentPixel = 0; - lclVisualConfigs[i].transparentRed = 0; - lclVisualConfigs[i].transparentGreen = 0; - lclVisualConfigs[i].transparentBlue = 0; - lclVisualConfigs[i].transparentAlpha = 0; - lclVisualConfigs[i].transparentIndex = 0; - i++; - } - } - } + for (buffers = 0; buffers < 2; buffers++) { + for (stencil = 0; stencil < 2; stencil++) { + for (accum = 0; accum < 2; accum++) { + lclVisualConfigs[i].vid = -1; + lclVisualConfigs[i].class = -1; + lclVisualConfigs[i].rgba = TRUE; + lclVisualConfigs[i].redSize = -1; + lclVisualConfigs[i].greenSize = -1; + lclVisualConfigs[i].blueSize = -1; + lclVisualConfigs[i].redMask = -1; + lclVisualConfigs[i].greenMask = -1; + lclVisualConfigs[i].blueMask = -1; + lclVisualConfigs[i].alphaMask = 0; + if (accum) { + lclVisualConfigs[i].accumRedSize = 16; + lclVisualConfigs[i].accumGreenSize = 16; + lclVisualConfigs[i].accumBlueSize = 16; + lclVisualConfigs[i].accumAlphaSize = 16; + } else { + lclVisualConfigs[i].accumRedSize = 0; + lclVisualConfigs[i].accumGreenSize = 0; + lclVisualConfigs[i].accumBlueSize = 0; + lclVisualConfigs[i].accumAlphaSize = 0; + } + lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE; + lclVisualConfigs[i].stereo = stereo ? TRUE : FALSE; + lclVisualConfigs[i].bufferSize = -1; + + lclVisualConfigs[i].depthSize = depth? 24 : 0; + lclVisualConfigs[i].stencilSize = stencil ? 8 : 0; + lclVisualConfigs[i].auxBuffers = aux ? 2 : 0; + lclVisualConfigs[i].level = 0; + lclVisualConfigs[i].visualRating = GLX_NONE_EXT; + lclVisualConfigs[i].transparentPixel = 0; + lclVisualConfigs[i].transparentRed = 0; + lclVisualConfigs[i].transparentGreen = 0; + lclVisualConfigs[i].transparentBlue = 0; + lclVisualConfigs[i].transparentAlpha = 0; + lclVisualConfigs[i].transparentIndex = 0; + i++; + } + } + } } - } + } + } } if (i != lclNumConfigs) GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs failed to alloc visual configs"); @@ -1095,7 +1099,6 @@ glAquaInitVisualConfigs(void) GlxSetVisualConfigs(lclNumConfigs, lclVisualConfigs, lclVisualPrivates); } - static void glAquaSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void **privates) { diff --git a/GL/apple/indirect.c b/GL/apple/indirect.c index 8cba1c63d..2729ab0ba 100644 --- a/GL/apple/indirect.c +++ b/GL/apple/indirect.c @@ -1,11 +1,10 @@ /* * GLX implementation that uses Apple's OpenGL.framework * (Indirect rendering path) - */ -/* - * Copyright (c) 2002 Greg Parker. All Rights Reserved. - * Copyright (c) 2002 Apple Computer, Inc. + * + * Copyright (c) 2007 Apple Inc. * Copyright (c) 2004 Torrey T. Lyons. All Rights Reserved. + * Copyright (c) 2002 Greg Parker. All Rights Reserved. * * Portions of this file are copied from Mesa's xf86glx.c, * which contains the following copyright: @@ -37,14 +36,30 @@ #endif #include "dri.h" -#include "quartz.h" -#include +#define GL_EXT_histogram 1 +#define GL_EXT_polygon_offset 1 +#define GL_SGIS_pixel_texture 1 +#define GL_SGIX_pixel_texture 1 +#define GL_EXT_multisample 1 +#define GL_SGIS_multisample 1 +#define GL_EXT_vertex_array 1 +#define GL_ARB_point_parameters 1 +#define GL_NV_vertex_array_range 1 +#define GL_MESA_resize_buffers 1 +#define GL_ARB_window_pos 1 +#define GL_EXT_cull_vertex 1 +#define GL_NV_vertex_program 1 +#define GL_APPLE_fence 1 +#define GL_IBM_multimode_draw_arrays 1 +#define GL_EXT_fragment_shader 1 + #include #include // X11 and X11's glx -#include +#include +#include #include #include #include @@ -61,11 +76,18 @@ #include "x-hash.h" #include "x-list.h" +#include +#define GLAPIENTRYP * +typedef unsigned long long GLuint64EXT; +typedef long long GLint64EXT; +#include #include "glcontextmodes.h" +#include +#include // ggs: needed to call back to glx with visual configs extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void **configprivs); - +__GLXprovider * GlxGetMesaProvider (void); // Write debugging output, or not #ifdef GLAQUA_DEBUG @@ -74,60 +96,116 @@ extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void * #define GLAQUA_DEBUG_MSG(a, ...) #endif - -// The following GL functions don't have an EXT suffix in OpenGL.framework. -GLboolean glAreTexturesResidentEXT(GLsizei a, const GLuint *b, GLboolean *c) { - return glAreTexturesResident(a, b, c); -} -void glDeleteTexturesEXT(GLsizei d, const GLuint *e) { - glDeleteTextures(d, e); -} -void glGenTexturesEXT(GLsizei f, GLuint *g) { - glGenTextures(f, g); -} -GLboolean glIsTextureEXT(GLuint h) { - return glIsTexture(h); -} +static void setup_dispatch_table(void); +GLuint __glFloorLog2(GLuint val); +void warn_func(void * p1, char *format, ...); // some prototypes -static Bool glAquaScreenProbe(int screen); +static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen); +static __GLXdrawable * __glXAquaScreenCreateDrawable(__GLXscreen *screen, DrawablePtr pDraw, XID drawId, __GLcontextModes *modes); + static Bool glAquaInitVisuals(VisualPtr *visualp, DepthPtr *depthp, int *nvisualp, int *ndepthp, int *rootDepthp, VisualID *defaultVisp, unsigned long sizes, int bitsPerRGB); static void glAquaSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, void **privates); -static __GLinterface *glAquaCreateContext(__GLimports *imports, - __GLcontextModes *mode, - __GLinterface *shareGC); -static void glAquaCreateBuffer(__GLXdrawablePrivate *glxPriv); -static void glAquaResetExtension(void); -/* - * This structure is statically allocated in the __glXScreens[] - * structure. This struct is not used anywhere other than in - * __glXScreenInit to initialize each of the active screens - * (__glXActiveScreens[]). Several of the fields must be initialized by - * the screenProbe routine before they are copied to the active screens - * struct. In particular, the contextCreate, modes, numVisuals, - * and numUsableVisuals fields must be initialized. - */ -static __GLXscreenInfo __glDDXScreenInfo = { - glAquaScreenProbe, /* Must be generic and handle all screens */ - glAquaCreateContext, /* Substitute screen's createContext routine */ - glAquaCreateBuffer, /* Substitute screen's createBuffer routine */ - NULL, /* Set up modes in probe */ - NULL, /* Set up pVisualPriv in probe */ - 0, /* Set up numVisuals in probe */ - 0, /* Set up numUsableVisuals in probe */ - "Vendor String", /* GLXvendor is overwritten by __glXScreenInit */ - "Version String", /* GLXversion is overwritten by __glXScreenInit */ - "Extensions String", /* GLXextensions is overwritten by __glXScreenInit */ - NULL /* WrappedPositionWindow is overwritten */ +static void glAquaResetExtension(void); +static void __glXAquaContextDestroy(__GLXcontext *baseContext); +static int __glXAquaContextMakeCurrent(__GLXcontext *baseContext); +static int __glXAquaContextLoseCurrent(__GLXcontext *baseContext); +static int __glXAquaContextForceCurrent(__GLXcontext *baseContext); +static int __glXAquaContextCopy(__GLXcontext *baseDst, __GLXcontext *baseSrc, unsigned long mask); + +static CGLPixelFormatObj makeFormat(__GLcontextModes *mode); + +__GLXprovider __glXMesaProvider = { + __glXAquaScreenProbe, + "Core OpenGL", + NULL }; -void *__glXglDDXScreenInfo(void) { - return &__glDDXScreenInfo; +__GLXprovider * +GlxGetMesaProvider (void) +{ + GLAQUA_DEBUG_MSG("GlxGetMesaProvider\n"); + return &__glXMesaProvider; +} + +typedef struct __GLXAquaScreen __GLXAquaScreen; +typedef struct __GLXAquaContext __GLXAquaContext; +typedef struct __GLXAquaDrawable __GLXAquaDrawable; + +struct __GLXAquaScreen { + __GLXscreen base; + int index; + int num_vis; + __GLcontextModes *modes; +}; + +static __GLXAquaScreen glAquaScreens[MAXSCREENS]; + +struct __GLXAquaContext { + __GLXcontext base; + CGLContextObj ctx; + CGLPixelFormatObj pixelFormat; + xp_surface_id sid; + unsigned isAttached :1; +}; + +struct __GLXAquaDrawable { + __GLXdrawable base; + DrawablePtr pDraw; + xp_surface_id sid; +}; + +static __GLXcontext * +__glXAquaScreenCreateContext(__GLXscreen *screen, + __GLcontextModes *modes, + __GLXcontext *baseShareContext) +{ + __GLXAquaContext *context; + __GLXAquaContext *shareContext = (__GLXAquaContext *) baseShareContext; + CGLError gl_err; + + GLAQUA_DEBUG_MSG("glXAquaScreenCreateContext\n"); + + context = malloc (sizeof (__GLXAquaContext)); + if (context == NULL) return NULL; + + memset(context, 0, sizeof *context); + + context->base.pGlxScreen = screen; + context->base.modes = modes; + + context->base.destroy = __glXAquaContextDestroy; + context->base.makeCurrent = __glXAquaContextMakeCurrent; + context->base.loseCurrent = __glXAquaContextLoseCurrent; + context->base.copy = __glXAquaContextCopy; + context->base.forceCurrent = __glXAquaContextForceCurrent; + // context->base.createDrawable = __glXAquaContextCreateDrawable; + + context->pixelFormat = makeFormat(modes); + if (!context->pixelFormat) { + free(context); + return NULL; + } + + context->ctx = NULL; + gl_err = CGLCreateContext(context->pixelFormat, + shareContext ? shareContext->ctx : NULL, + &context->ctx); + + if (gl_err != 0) { + ErrorF("CGLCreateContext error: %s\n", CGLErrorString(gl_err)); + CGLDestroyPixelFormat(context->pixelFormat); + free(context); + return NULL; + } + setup_dispatch_table(); + GLAQUA_DEBUG_MSG("glAquaCreateContext done\n"); + return &context->base; } static __GLXextensionInfo __glDDXExtensionInfo = { @@ -138,118 +216,43 @@ static __GLXextensionInfo __glDDXExtensionInfo = { }; void *__glXglDDXExtensionInfo(void) { + GLAQUA_DEBUG_MSG("glXAglDDXExtensionInfo\n"); return &__glDDXExtensionInfo; } -// prototypes - -static GLboolean glAquaDestroyContext(__GLcontext *gc); -static GLboolean glAquaLoseCurrent(__GLcontext *gc); -static GLboolean glAquaMakeCurrent(__GLcontext *gc); -static GLboolean glAquaShareContext(__GLcontext *gc, __GLcontext *gcShare); -static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src, - GLuint mask); -static GLboolean glAquaForceCurrent(__GLcontext *gc); - -/* Drawing surface notification callbacks */ -static GLboolean glAquaNotifyResize(__GLcontext *gc); -static void glAquaNotifyDestroy(__GLcontext *gc); -static void glAquaNotifySwapBuffers(__GLcontext *gc); - -/* Dispatch table override control for external agents like libGLS */ -static struct __GLdispatchStateRec* glAquaDispatchExec(__GLcontext *gc); -static void glAquaBeginDispatchOverride(__GLcontext *gc); -static void glAquaEndDispatchOverride(__GLcontext *gc); - -static __GLexports glAquaExports = { - glAquaDestroyContext, - glAquaLoseCurrent, - glAquaMakeCurrent, - glAquaShareContext, - glAquaCopyContext, - glAquaForceCurrent, - - glAquaNotifyResize, - glAquaNotifyDestroy, - glAquaNotifySwapBuffers, - - glAquaDispatchExec, - glAquaBeginDispatchOverride, - glAquaEndDispatchOverride -}; - -typedef struct { - int num_vis; - __GLcontextModes *modes; - void **priv; - - // wrapped screen functions - RealizeWindowProcPtr RealizeWindow; - UnrealizeWindowProcPtr UnrealizeWindow; -} glAquaScreenRec; - -static glAquaScreenRec glAquaScreens[MAXSCREENS]; - -// __GLdrawablePrivate->private -typedef struct { - DrawablePtr pDraw; - xp_surface_id sid; -} GLAquaDrawableRec; - -struct __GLcontextRec { - struct __GLinterfaceRec interface; // required to be first - - CGLContextObj ctx; - CGLPixelFormatObj pixelFormat; - - /* set when attached */ - xp_surface_id sid; - - unsigned isAttached :1; -}; - /* maps from surface id -> list of __GLcontext */ static x_hash_table *surface_hash; - -// Context manipulation; return GL_FALSE on failure -static GLboolean glAquaDestroyContext(__GLcontext *gc) -{ +static void __glXAquaContextDestroy(__GLXcontext *baseContext) { x_list *lst; - GLAQUA_DEBUG_MSG("glAquaDestroyContext (ctx 0x%x)\n", - (unsigned int) gc->ctx); + __GLXAquaContext *context = (__GLXAquaContext *) baseContext; - if (gc != NULL) - { - if (gc->sid != 0 && surface_hash != NULL) - { - lst = x_hash_table_lookup(surface_hash, (void *) gc->sid, NULL); - lst = x_list_remove(lst, gc); - x_hash_table_insert(surface_hash, (void *) gc->sid, lst); - } + GLAQUA_DEBUG_MSG("glAquaContextDestroy (ctx 0x%x)\n", + (unsigned int) baseContext); + if (context != NULL) { + if (context->sid != 0 && surface_hash != NULL) { + lst = x_hash_table_lookup(surface_hash, (void *) context->sid, NULL); + lst = x_list_remove(lst, context); + x_hash_table_insert(surface_hash, (void *) context->sid, lst); + } - if (gc->ctx != NULL) - CGLDestroyContext(gc->ctx); + if (context->ctx != NULL) CGLDestroyContext(context->ctx); - if (gc->pixelFormat != NULL) - CGLDestroyPixelFormat(gc->pixelFormat); - - free(gc); + if (context->pixelFormat != NULL) CGLDestroyPixelFormat(context->pixelFormat); + + free(context); } - - return GL_TRUE; } -static GLboolean glAquaLoseCurrent(__GLcontext *gc) -{ +static int __glXAquaContextLoseCurrent(__GLXcontext *baseContext) { CGLError gl_err; - GLAQUA_DEBUG_MSG("glAquaLoseCurrent (ctx 0x%x)\n", (unsigned int) gc->ctx); + GLAQUA_DEBUG_MSG("glAquaLoseCurrent (ctx 0x%p)\n", baseContext); gl_err = CGLSetCurrentContext(NULL); if (gl_err != 0) - ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err)); + ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err)); __glXLastContext = NULL; // Mesa does this; why? @@ -258,141 +261,134 @@ static GLboolean glAquaLoseCurrent(__GLcontext *gc) /* Called when a surface is destroyed as a side effect of destroying the window it's attached to. */ -static void surface_notify(void *_arg, void *data) -{ - DRISurfaceNotifyArg *arg = _arg; - GLAquaDrawableRec *aquaPriv = data; - __GLcontext *gc; +static void surface_notify(void *_arg, void *data) { + DRISurfaceNotifyArg *arg = (DRISurfaceNotifyArg *)_arg; + __GLXAquaDrawable *draw = (__GLXAquaDrawable *)data; + __GLXAquaContext *context; x_list *lst; - - switch (arg->kind) - { + if(_arg == NULL || data == NULL) { + ErrorF("surface_notify called with bad params"); + return; + } + + GLAQUA_DEBUG_MSG("surface_notify(%p, %p)\n", _arg, data); + switch (arg->kind) { case AppleDRISurfaceNotifyDestroyed: if (surface_hash != NULL) x_hash_table_remove(surface_hash, (void *) arg->id); - - aquaPriv->pDraw = NULL; - aquaPriv->sid = 0; + draw->base.pDraw = NULL; + draw->sid = 0; break; case AppleDRISurfaceNotifyChanged: - if (surface_hash != NULL) - { + if (surface_hash != NULL) { lst = x_hash_table_lookup(surface_hash, (void *) arg->id, NULL); for (; lst != NULL; lst = lst->next) { - gc = lst->data; - xp_update_gl_context(gc->ctx); + context = lst->data; + xp_update_gl_context(context->ctx); } } break; + default: + ErrorF("surface_notify: unknown kind %d\n", arg->kind); + break; } } -static void unattach(__GLcontext *gc) -{ - x_list *lst; - - if (gc->isAttached) - { - GLAQUA_DEBUG_MSG("unattaching\n"); - - if (surface_hash != NULL) - { - lst = x_hash_table_lookup(surface_hash, (void *) gc->sid, NULL); - lst = x_list_remove(lst, gc); - x_hash_table_insert(surface_hash, (void *) gc->sid, lst); - } - - CGLClearDrawable(gc->ctx); - gc->isAttached = FALSE; - gc->sid = 0; - } -} - -static void attach(__GLcontext *gc, __GLdrawablePrivate *glPriv) -{ - __GLXdrawablePrivate *glxPriv; - GLAquaDrawableRec *aquaPriv; +static void attach(__GLXAquaContext *context, __GLXAquaDrawable *draw) { DrawablePtr pDraw; + GLAQUA_DEBUG_MSG("attach(%p, %p)\n", context, draw); + pDraw = draw->base.pDraw; - glxPriv = (__GLXdrawablePrivate *)glPriv->other; - aquaPriv = (GLAquaDrawableRec *)glPriv->private; - pDraw = glxPriv->pDraw; - - if (aquaPriv->sid == 0) - { - if (!quartzProcs->CreateSurface(pDraw->pScreen, pDraw->id, pDraw, - 0, &aquaPriv->sid, NULL, - surface_notify, aquaPriv)) - { + if (draw->sid == 0) { +// if (!quartzProcs->CreateSurface(pDraw->pScreen, pDraw->id, pDraw, + if (!DRICreateSurface(pDraw->pScreen, pDraw->id, pDraw, + 0, &draw->sid, NULL, + surface_notify, draw)) return; - } - aquaPriv->pDraw = pDraw; - } + draw->pDraw = pDraw; + } - if (!gc->isAttached || gc->sid != aquaPriv->sid) - { + if (!context->isAttached || context->sid != draw->sid) { x_list *lst; - if (xp_attach_gl_context(gc->ctx, aquaPriv->sid) != Success) - { - quartzProcs->DestroySurface(pDraw->pScreen, pDraw->id, pDraw, - surface_notify, aquaPriv); + if (xp_attach_gl_context(context->ctx, draw->sid) != Success) { +// quartzProcs->DestroySurface(pDraw->pScreen, pDraw->id, pDraw, + DRIDestroySurface(pDraw->pScreen, pDraw->id, pDraw, + surface_notify, draw); if (surface_hash != NULL) - x_hash_table_remove(surface_hash, (void *) aquaPriv->sid); + x_hash_table_remove(surface_hash, (void *) draw->sid); - aquaPriv->sid = 0; + draw->sid = 0; return; } - gc->isAttached = TRUE; - gc->sid = aquaPriv->sid; + context->isAttached = TRUE; + context->sid = draw->sid; if (surface_hash == NULL) surface_hash = x_hash_table_new(NULL, NULL, NULL, NULL); - lst = x_hash_table_lookup(surface_hash, (void *) gc->sid, NULL); - if (x_list_find(lst, gc) == NULL) - { - lst = x_list_prepend(lst, gc); - x_hash_table_insert(surface_hash, (void *) gc->sid, lst); + lst = x_hash_table_lookup(surface_hash, (void *) context->sid, NULL); + if (x_list_find(lst, context) == NULL) { + lst = x_list_prepend(lst, context); + x_hash_table_insert(surface_hash, (void *) context->sid, lst); } GLAQUA_DEBUG_MSG("attached 0x%x to 0x%x\n", (unsigned int) pDraw->id, - (unsigned int) aquaPriv->sid); - } + (unsigned int) draw->sid); + } } -static GLboolean glAquaMakeCurrent(__GLcontext *gc) -{ - __GLdrawablePrivate *glPriv = gc->interface.imports.getDrawablePrivate(gc); +#if 0 // unused +static void unattach(__GLXAquaContext *context) { + x_list *lst; + GLAQUA_DEBUG_MSG("unattach\n"); + if (context == NULL) { + ErrorF("Tried to unattach a null context\n"); + return; + } + if (context->isAttached) { + GLAQUA_DEBUG_MSG("unattaching\n"); + + if (surface_hash != NULL) { + lst = x_hash_table_lookup(surface_hash, (void *) context->sid, NULL); + lst = x_list_remove(lst, context); + x_hash_table_insert(surface_hash, (void *) context->sid, lst); + } + + CGLClearDrawable(context->ctx); + context->isAttached = FALSE; + context->sid = 0; + } +} +#endif + +static int __glXAquaContextMakeCurrent(__GLXcontext *baseContext) { CGLError gl_err; + __GLXAquaContext *context = (__GLXAquaContext *) baseContext; + __GLXAquaDrawable *drawPriv = (__GLXAquaDrawable *) context->base.drawPriv; - GLAQUA_DEBUG_MSG("glAquaMakeCurrent (ctx 0x%x)\n", (unsigned int) gc->ctx); + GLAQUA_DEBUG_MSG("glAquaMakeCurrent (ctx 0x%p)\n", baseContext); + + attach(context, drawPriv); - attach(gc, glPriv); - - gl_err = CGLSetCurrentContext(gc->ctx); + gl_err = CGLSetCurrentContext(context->ctx); if (gl_err != 0) ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err)); - + return gl_err == 0; } -static GLboolean glAquaShareContext(__GLcontext *gc, __GLcontext *gcShare) -{ - GLAQUA_DEBUG_MSG("glAquaShareContext unimplemented\n"); - - return GL_TRUE; -} - -static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src, - GLuint mask) +static int __glXAquaContextCopy(__GLXcontext *baseDst, __GLXcontext *baseSrc, unsigned long mask) { CGLError gl_err; - GLAQUA_DEBUG_MSG("glAquaCopyContext\n"); + __GLXAquaContext *dst = (__GLXAquaContext *) baseDst; + __GLXAquaContext *src = (__GLXAquaContext *) baseSrc; + + GLAQUA_DEBUG_MSG("GLXAquaContextCopy\n"); gl_err = CGLCopyContext(src->ctx, dst->ctx, mask); if (gl_err != 0) @@ -401,14 +397,13 @@ static GLboolean glAquaCopyContext(__GLcontext *dst, const __GLcontext *src, return gl_err == 0; } -static GLboolean glAquaForceCurrent(__GLcontext *gc) +static int __glXAquaContextForceCurrent(__GLXcontext *baseContext) { CGLError gl_err; + __GLXAquaContext *context = (__GLXAquaContext *) baseContext; + GLAQUA_DEBUG_MSG("glAquaForceCurrent (ctx %p)\n", context->ctx); - GLAQUA_DEBUG_MSG("glAquaForceCurrent (ctx 0x%x)\n", - (unsigned int) gc->ctx); - - gl_err = CGLSetCurrentContext(gc->ctx); + gl_err = CGLSetCurrentContext(context->ctx); if (gl_err != 0) ErrorF("CGLSetCurrentContext error: %s\n", CGLErrorString(gl_err)); @@ -417,45 +412,36 @@ static GLboolean glAquaForceCurrent(__GLcontext *gc) /* Drawing surface notification callbacks */ -static GLboolean glAquaNotifyResize(__GLcontext *gc) -{ - GLAQUA_DEBUG_MSG("unimplemented glAquaNotifyResize"); +static GLboolean __glXAquaDrawableResize(__GLXdrawable *base) { + GLAQUA_DEBUG_MSG("unimplemented glAquaDrawableResize\n"); return GL_TRUE; } -static void glAquaNotifyDestroy(__GLcontext *gc) -{ - GLAQUA_DEBUG_MSG("unimplemented glAquaNotifyDestroy"); +static GLboolean __glXAquaDrawableSwapBuffers(__GLXdrawable *base) { + CGLError gl_err; + __GLXAquaContext * drawableCtx; +// GLAQUA_DEBUG_MSG("glAquaDrawableSwapBuffers(%p)\n",base); + + if(!base) { + ErrorF("glXAquaDrawbleSwapBuffers passed NULL\n"); + return GL_FALSE; + } + + drawableCtx = (__GLXAquaContext *)base->drawGlxc; + + if (drawableCtx != NULL && drawableCtx->ctx != NULL) { + gl_err = CGLFlushDrawable(drawableCtx->ctx); + if (gl_err != 0) + ErrorF("CGLFlushDrawable error: %s\n", CGLErrorString(gl_err)); + } + return GL_TRUE; } -static void glAquaNotifySwapBuffers(__GLcontext *gc) -{ - GLAQUA_DEBUG_MSG("unimplemented glAquaNotifySwapBuffers"); -} - -/* Dispatch table override control for external agents like libGLS */ -static struct __GLdispatchStateRec* glAquaDispatchExec(__GLcontext *gc) -{ - GLAQUA_DEBUG_MSG("unimplemented glAquaDispatchExec"); - return NULL; -} - -static void glAquaBeginDispatchOverride(__GLcontext *gc) -{ - GLAQUA_DEBUG_MSG("unimplemented glAquaBeginDispatchOverride"); -} - -static void glAquaEndDispatchOverride(__GLcontext *gc) -{ - GLAQUA_DEBUG_MSG("unimplemented glAquaEndDispatchOverride"); -} - -static CGLPixelFormatObj makeFormat(__GLcontextModes *mode) -{ +static CGLPixelFormatObj makeFormat(__GLcontextModes *mode) { int i; CGLPixelFormatAttribute attr[64]; // currently uses max of 30 CGLPixelFormatObj result; - long n_formats; + GLint n_formats; CGLError gl_err; GLAQUA_DEBUG_MSG("makeFormat\n"); @@ -491,10 +477,12 @@ static CGLPixelFormatObj makeFormat(__GLcontextModes *mode) attr[i++] = mode->accumRedBits + mode->accumGreenBits + mode->accumBlueBits + mode->accumAlphaBits; } + if (mode->haveDepthBuffer) { attr[i++] = kCGLPFADepthSize; attr[i++] = mode->depthBits; } + if (mode->haveStencilBuffer) { attr[i++] = kCGLPFAStencilSize; attr[i++] = mode->stencilBits; @@ -521,129 +509,6 @@ static CGLPixelFormatObj makeFormat(__GLcontextModes *mode) return result; } -static __GLinterface *glAquaCreateContext(__GLimports *imports, - __GLcontextModes *mode, - __GLinterface *shareGC) -{ - __GLcontext *result; - __GLcontext *sharectx = (__GLcontext *)shareGC; - CGLError gl_err; - - GLAQUA_DEBUG_MSG("glAquaCreateContext\n"); - - result = (__GLcontext *)calloc(1, sizeof(__GLcontext)); - if (!result) return NULL; - - result->interface.imports = *imports; - result->interface.exports = glAquaExports; - - result->pixelFormat = makeFormat(mode); - if (!result->pixelFormat) { - free(result); - return NULL; - } - - result->ctx = NULL; - gl_err = CGLCreateContext(result->pixelFormat, - sharectx ? sharectx->ctx : NULL, - &result->ctx); - - if (gl_err != 0) { - ErrorF("CGLCreateContext error: %s\n", CGLErrorString(gl_err)); - CGLDestroyPixelFormat(result->pixelFormat); - free(result); - return NULL; - } - - GLAQUA_DEBUG_MSG("glAquaCreateContext done\n"); - return (__GLinterface *)result; -} - -Bool -glAquaRealizeWindow(WindowPtr pWin) -{ - // If this window has GL contexts, tell them to reattach - Bool result; - ScreenPtr pScreen = pWin->drawable.pScreen; - glAquaScreenRec *screenPriv = &glAquaScreens[pScreen->myNum]; - __GLXdrawablePrivate *glxPriv; - - GLAQUA_DEBUG_MSG("glAquaRealizeWindow\n"); - - // Allow the window to be created (RootlessRealizeWindow is inside our wrap) - pScreen->RealizeWindow = screenPriv->RealizeWindow; - result = pScreen->RealizeWindow(pWin); - pScreen->RealizeWindow = glAquaRealizeWindow; - - // The Aqua window will already have been created (windows are - // realized from top down) - - // Re-attach this window's GL contexts, if any. - glxPriv = __glXFindDrawablePrivate(pWin->drawable.id); - if (glxPriv) { - __GLXcontext *gx; - __GLcontext *gc; - __GLdrawablePrivate *glPriv = &glxPriv->glPriv; - GLAQUA_DEBUG_MSG("glAquaRealizeWindow is GL drawable!\n"); - - // GL contexts bound to this window for drawing - for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) { - gc = (__GLcontext *)gx->gc; - attach(gc, glPriv); - } - - // GL contexts bound to this window for reading - for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) { - gc = (__GLcontext *)gx->gc; - attach(gc, glPriv); - } - } - - return result; -} - -Bool -glAquaUnrealizeWindow(WindowPtr pWin) -{ - // If this window has GL contexts, tell them to unattach - Bool result; - ScreenPtr pScreen = pWin->drawable.pScreen; - glAquaScreenRec *screenPriv = &glAquaScreens[pScreen->myNum]; - __GLXdrawablePrivate *glxPriv; - - GLAQUA_DEBUG_MSG("glAquaUnrealizeWindow\n"); - - // The Aqua window may have already been destroyed (windows - // are unrealized from top down) - - // Unattach this window's GL contexts, if any. - glxPriv = __glXFindDrawablePrivate(pWin->drawable.id); - if (glxPriv) { - __GLXcontext *gx; - __GLcontext *gc; - GLAQUA_DEBUG_MSG("glAquaUnealizeWindow is GL drawable!\n"); - - // GL contexts bound to this window for drawing - for (gx = glxPriv->drawGlxc; gx != NULL; gx = gx->next) { - gc = (__GLcontext *)gx->gc; - unattach(gc); - } - - // GL contexts bound to this window for reading - for (gx = glxPriv->readGlxc; gx != NULL; gx = gx->next) { - gc = (__GLcontext *)gx->gc; - unattach(gc); - } - } - - pScreen->UnrealizeWindow = screenPriv->UnrealizeWindow; - result = pScreen->UnrealizeWindow(pWin); - pScreen->UnrealizeWindow = glAquaUnrealizeWindow; - - return result; -} - - // Originally copied from Mesa static int numConfigs = 0; @@ -821,15 +686,15 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, /* Alloc space for the list of new GLX visuals */ pNewVisualConfigs = (__GLXvisualConfig *) - __glXMalloc(numNewConfigs * sizeof(__GLXvisualConfig)); + malloc(numNewConfigs * sizeof(__GLXvisualConfig)); if (!pNewVisualConfigs) { return FALSE; } /* Alloc space for the list of new GLX visual privates */ - pNewVisualPriv = (void **) __glXMalloc(numNewConfigs * sizeof(void *)); + pNewVisualPriv = (void **) malloc(numNewConfigs * sizeof(void *)); if (!pNewVisualPriv) { - __glXFree(pNewVisualConfigs); + free(pNewVisualConfigs); return FALSE; } @@ -879,40 +744,40 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, numConfigs = 0; /* Alloc temp space for the list of orig VisualIDs for each new visual */ - orig_vid = (VisualID *)__glXMalloc(numNewVisuals * sizeof(VisualID)); + orig_vid = (VisualID *)malloc(numNewVisuals * sizeof(VisualID)); if (!orig_vid) { - __glXFree(pNewVisualPriv); - __glXFree(pNewVisualConfigs); + free(pNewVisualPriv); + free(pNewVisualConfigs); return FALSE; } /* Alloc space for the list of glXVisuals */ modes = _gl_context_modes_create(numNewVisuals, sizeof(__GLcontextModes)); if (modes == NULL) { - __glXFree(orig_vid); - __glXFree(pNewVisualPriv); - __glXFree(pNewVisualConfigs); + free(orig_vid); + free(pNewVisualPriv); + free(pNewVisualConfigs); return FALSE; } /* Alloc space for the list of glXVisualPrivates */ - glXVisualPriv = (void **)__glXMalloc(numNewVisuals * sizeof(void *)); + glXVisualPriv = (void **)malloc(numNewVisuals * sizeof(void *)); if (!glXVisualPriv) { _gl_context_modes_destroy( modes ); - __glXFree(orig_vid); - __glXFree(pNewVisualPriv); - __glXFree(pNewVisualConfigs); + free(orig_vid); + free(pNewVisualPriv); + free(pNewVisualConfigs); return FALSE; } /* Alloc space for the new list of the X server's visuals */ - pVisualNew = (VisualPtr)__glXMalloc(numNewVisuals * sizeof(VisualRec)); + pVisualNew = (VisualPtr)malloc(numNewVisuals * sizeof(VisualRec)); if (!pVisualNew) { - __glXFree(glXVisualPriv); + free(glXVisualPriv); _gl_context_modes_destroy( modes ); - __glXFree(orig_vid); - __glXFree(pNewVisualPriv); - __glXFree(pNewVisualConfigs); + free(orig_vid); + free(pNewVisualPriv); + free(pNewVisualConfigs); return FALSE; } @@ -1007,9 +872,9 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, /* Save the GLX visuals in the screen structure */ glAquaScreens[screenInfo.numScreens-1].num_vis = numNewVisuals; - glAquaScreens[screenInfo.numScreens-1].priv = glXVisualPriv; + // glAquaScreens[screenInfo.numScreens-1].priv = glXVisualPriv; - /* Set up depth's VisualIDs */ + /* set up depth's VisualIDs */ for (i = 0; i < ndepth; i++) { int numVids = 0; VisualID *pVids = NULL; @@ -1022,7 +887,7 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, numVids++; /* Allocate a new list of VisualIDs for this depth */ - pVids = (VisualID *)__glXMalloc(numVids * sizeof(VisualID)); + pVids = (VisualID *)malloc(numVids * sizeof(VisualID)); /* Initialize the new list of VisualIDs for this depth */ for (j = 0; j < pdepth[i].numVids; j++) @@ -1031,7 +896,7 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, pVids[n++] = pVisualNew[k].vid; /* Update this depth's list of VisualIDs */ - __glXFree(pdepth[i].vids); + free(pdepth[i].vids); pdepth[i].vids = pVids; pdepth[i].numVids = numVids; } @@ -1041,21 +906,22 @@ static Bool init_visuals(int *nvisualp, VisualPtr *visualp, *visualp = pVisualNew; /* Free the old list of the X server's visuals */ - __glXFree(pVisual); + free(pVisual); /* Clean up temporary allocations */ - __glXFree(orig_vid); - __glXFree(pNewVisualPriv); - __glXFree(pNewVisualConfigs); + free(orig_vid); + free(pNewVisualPriv); + free(pNewVisualConfigs); /* Free the private list created by DDX HW driver */ if (visualPrivates) - xfree(visualPrivates); + free(visualPrivates); visualPrivates = NULL; return TRUE; } +Bool enable_stereo = FALSE; /* based on code in i830_dri.c This ends calling glAquaSetVisualConfigs to set the static numconfigs, etc. */ @@ -1066,20 +932,22 @@ glAquaInitVisualConfigs(void) __GLXvisualConfig *lclVisualConfigs = NULL; void **lclVisualPrivates = NULL; - int depth, aux, buffers, stencil, accum; + int stereo, depth, aux, buffers, stencil, accum; int i = 0; GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs "); /* count num configs: + 2 stereo (on, off) (optional) 2 Z buffer (0, 24 bit) 2 AUX buffer (0, 2) 2 buffers (single, double) 2 stencil (0, 8 bit) 2 accum (0, 64 bit) - = 32 configs */ + = 64 configs with stereo, or 32 without */ - lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */ + if (enable_stereo) lclNumConfigs = 2 * 2 * 2 * 2 * 2 * 2; /* 64 */ + else lclNumConfigs = 2 * 2 * 2 * 2 * 2; /* 32 */ /* alloc */ lclVisualConfigs = xcalloc(sizeof(__GLXvisualConfig), lclNumConfigs); @@ -1088,54 +956,55 @@ glAquaInitVisualConfigs(void) /* fill in configs */ if (NULL != lclVisualConfigs) { i = 0; /* current buffer */ - for (depth = 0; depth < 2; depth++) { + for (stereo = 0; stereo < (enable_stereo ? 2 : 1); stereo++) { + for (depth = 0; depth < 2; depth++) { for (aux = 0; aux < 2; aux++) { - for (buffers = 0; buffers < 2; buffers++) { - for (stencil = 0; stencil < 2; stencil++) { - for (accum = 0; accum < 2; accum++) { - lclVisualConfigs[i].vid = -1; - lclVisualConfigs[i].class = -1; - lclVisualConfigs[i].rgba = TRUE; - lclVisualConfigs[i].redSize = -1; - lclVisualConfigs[i].greenSize = -1; - lclVisualConfigs[i].blueSize = -1; - lclVisualConfigs[i].redMask = -1; - lclVisualConfigs[i].greenMask = -1; - lclVisualConfigs[i].blueMask = -1; - lclVisualConfigs[i].alphaMask = 0; - if (accum) { - lclVisualConfigs[i].accumRedSize = 16; - lclVisualConfigs[i].accumGreenSize = 16; - lclVisualConfigs[i].accumBlueSize = 16; - lclVisualConfigs[i].accumAlphaSize = 16; - } - else { - lclVisualConfigs[i].accumRedSize = 0; - lclVisualConfigs[i].accumGreenSize = 0; - lclVisualConfigs[i].accumBlueSize = 0; - lclVisualConfigs[i].accumAlphaSize = 0; - } - lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE; - lclVisualConfigs[i].stereo = FALSE; - lclVisualConfigs[i].bufferSize = -1; - - lclVisualConfigs[i].depthSize = depth? 24 : 0; - lclVisualConfigs[i].stencilSize = stencil ? 8 : 0; - lclVisualConfigs[i].auxBuffers = aux ? 2 : 0; - lclVisualConfigs[i].level = 0; - lclVisualConfigs[i].visualRating = GLX_NONE_EXT; - lclVisualConfigs[i].transparentPixel = 0; - lclVisualConfigs[i].transparentRed = 0; - lclVisualConfigs[i].transparentGreen = 0; - lclVisualConfigs[i].transparentBlue = 0; - lclVisualConfigs[i].transparentAlpha = 0; - lclVisualConfigs[i].transparentIndex = 0; - i++; - } - } - } + for (buffers = 0; buffers < 2; buffers++) { + for (stencil = 0; stencil < 2; stencil++) { + for (accum = 0; accum < 2; accum++) { + lclVisualConfigs[i].vid = -1; + lclVisualConfigs[i].class = -1; + lclVisualConfigs[i].rgba = TRUE; + lclVisualConfigs[i].redSize = -1; + lclVisualConfigs[i].greenSize = -1; + lclVisualConfigs[i].blueSize = -1; + lclVisualConfigs[i].redMask = -1; + lclVisualConfigs[i].greenMask = -1; + lclVisualConfigs[i].blueMask = -1; + lclVisualConfigs[i].alphaMask = 0; + if (accum) { + lclVisualConfigs[i].accumRedSize = 16; + lclVisualConfigs[i].accumGreenSize = 16; + lclVisualConfigs[i].accumBlueSize = 16; + lclVisualConfigs[i].accumAlphaSize = 16; + } else { + lclVisualConfigs[i].accumRedSize = 0; + lclVisualConfigs[i].accumGreenSize = 0; + lclVisualConfigs[i].accumBlueSize = 0; + lclVisualConfigs[i].accumAlphaSize = 0; + } + lclVisualConfigs[i].doubleBuffer = buffers ? TRUE : FALSE; + lclVisualConfigs[i].stereo = stereo ? TRUE : FALSE; + lclVisualConfigs[i].bufferSize = -1; + + lclVisualConfigs[i].depthSize = depth? 24 : 0; + lclVisualConfigs[i].stencilSize = stencil ? 8 : 0; + lclVisualConfigs[i].auxBuffers = aux ? 2 : 0; + lclVisualConfigs[i].level = 0; + lclVisualConfigs[i].visualRating = GLX_NONE_EXT; + lclVisualConfigs[i].transparentPixel = 0; + lclVisualConfigs[i].transparentRed = 0; + lclVisualConfigs[i].transparentGreen = 0; + lclVisualConfigs[i].transparentBlue = 0; + lclVisualConfigs[i].transparentAlpha = 0; + lclVisualConfigs[i].transparentIndex = 0; + i++; + } + } + } } - } + } + } } if (i != lclNumConfigs) GLAQUA_DEBUG_MSG("glAquaInitVisualConfigs failed to alloc visual configs"); @@ -1165,13 +1034,13 @@ static Bool glAquaInitVisuals(VisualPtr *visualp, DepthPtr *depthp, glAquaInitVisualConfigs(); /* ensure the visual configs are setup */ /* - * Setup the visuals supported by this particular screen. + * setup the visuals supported by this particular screen. */ return init_visuals(nvisualp, visualp, defaultVisp, *ndepthp, *depthp, *rootDepthp); } - +#if 0 static void fixup_visuals(int screen) { ScreenPtr pScreen = screenInfo.screens[screen]; @@ -1204,27 +1073,35 @@ static void fixup_visuals(int screen) } } } +#endif +static void __glXAquaScreenDestroy(__GLXscreen *screen) { -static void init_screen_visuals(int screen) -{ - ScreenPtr pScreen = screenInfo.screens[screen]; - __GLcontextModes *modes; - int *used; - int i, j; + GLAQUA_DEBUG_MSG("glXAquaScreenDestroy(%p)\n", screen); + __glXScreenDestroy(screen); + free(screen); +} + +static void init_screen_visuals(__GLXAquaScreen *screen) { + ScreenPtr pScreen = screen->base.pScreen; + + __GLcontextModes *modes; + int *used; + int i, j; + GLAQUA_DEBUG_MSG("init_screen_visuals\n"); /* FIXME: Change 'used' to be a array of bits (rather than of ints), * FIXME: create a stack array of 8 or 16 bytes. If 'numVisuals' is less * FIXME: than 64 or 128 the stack array can be used instead of calling - * FIXME: __glXMalloc / __glXFree. If nothing else, convert 'used' to + * FIXME: malloc / free. If nothing else, convert 'used' to * FIXME: array of bytes instead of ints! */ - used = (int *)__glXMalloc(pScreen->numVisuals * sizeof(int)); - __glXMemset(used, 0, pScreen->numVisuals * sizeof(int)); + used = (int *)malloc(pScreen->numVisuals * sizeof(int)); + memset(used, 0, pScreen->numVisuals * sizeof(int)); i = 0; - for ( modes = glAquaScreens[screen].modes + for ( modes = screen -> base.modes ; modes != NULL ; modes = modes->next ) { const int vis_class = _gl_convert_to_x_visual_type( modes->visualType ); @@ -1239,7 +1116,7 @@ static void init_screen_visuals(int screen) pVis[j].blueMask == modes->blueMask && !used[j]) { - /* Set the VisualID */ + /* set the VisualID */ modes->visualID = pVis[j].vid; /* Mark this visual used */ @@ -1261,102 +1138,63 @@ static void init_screen_visuals(int screen) i++; } - __glXFree(used); + free(used); } -static Bool glAquaScreenProbe(int screen) -{ - ScreenPtr pScreen; - glAquaScreenRec *screenPriv; +static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen) { + __GLXAquaScreen *screen; + GLAQUA_DEBUG_MSG("glXAquaScreenProbe\n"); + if (screen == NULL) return NULL; - GLAQUA_DEBUG_MSG("glAquaScreenProbe\n"); + screen = malloc(sizeof *screen); - /* - * Set up the current screen's visuals. - */ - __glDDXScreenInfo.modes = glAquaScreens[screen].modes; - __glDDXScreenInfo.pVisualPriv = glAquaScreens[screen].priv; - __glDDXScreenInfo.numVisuals = - __glDDXScreenInfo.numUsableVisuals = glAquaScreens[screen].num_vis; + __glXScreenInit(&screen->base, pScreen); - /* - * Set the current screen's createContext routine. This could be - * wrapped by a DDX GLX context creation routine. - */ - __glDDXScreenInfo.createContext = glAquaCreateContext; + screen->base.destroy = __glXAquaScreenDestroy; + screen->base.createContext = __glXAquaScreenCreateContext; + screen->base.createDrawable = __glXAquaScreenCreateDrawable; + screen->base.pScreen = pScreen; - /* - * The ordering of the rgb compenents might have been changed by the - * driver after mi initialized them. - */ - fixup_visuals(screen); + init_screen_visuals(screen); - /* - * Find the GLX visuals that are supported by this screen and create - * XMesa's visuals. - */ - init_screen_visuals(screen); - - /* - * Wrap RealizeWindow and UnrealizeWindow on this screen - */ - pScreen = screenInfo.screens[screen]; - screenPriv = &glAquaScreens[screen]; - screenPriv->RealizeWindow = pScreen->RealizeWindow; - pScreen->RealizeWindow = glAquaRealizeWindow; - screenPriv->UnrealizeWindow = pScreen->UnrealizeWindow; - pScreen->UnrealizeWindow = glAquaUnrealizeWindow; - - return TRUE; + return &screen->base; } -static GLboolean glAquaSwapBuffers(__GLXdrawablePrivate *glxPriv) -{ - // swap buffers on only *one* of the contexts - // (e.g. the last one for drawing) - __GLcontext *gc = (__GLcontext *)glxPriv->drawGlxc->gc; - CGLError gl_err; - - GLAQUA_DEBUG_MSG("glAquaSwapBuffers\n"); - - if (gc != NULL && gc->ctx != NULL) - { - gl_err = CGLFlushDrawable(gc->ctx); - if (gl_err != 0) - ErrorF("CGLFlushDrawable error: %s\n", CGLErrorString(gl_err)); - } - - return GL_TRUE; -} - -static void glAquaDestroyDrawablePrivate(__GLdrawablePrivate *glPriv) -{ +static void __glXAquaDrawableDestroy(__GLXdrawable *base) { GLAQUA_DEBUG_MSG("glAquaDestroyDrawablePrivate\n"); /* It doesn't work to call DRIDestroySurface here, the drawable's already gone.. But dri.c notices the window destruction and frees the surface itself. */ - free(glPriv->private); - glPriv->private = NULL; + free(base); } -static void glAquaCreateBuffer(__GLXdrawablePrivate *glxPriv) -{ - GLAquaDrawableRec *aquaPriv = malloc(sizeof(GLAquaDrawableRec)); - __GLdrawablePrivate *glPriv = &glxPriv->glPriv; +static __GLXdrawable * +__glXAquaScreenCreateDrawable(__GLXscreen *screen, + DrawablePtr pDraw, + XID drawId, + __GLcontextModes *modes) { + __GLXAquaDrawable *glxPriv; - aquaPriv->sid = 0; - aquaPriv->pDraw = NULL; + GLAQUA_DEBUG_MSG("glAquaScreenCreateDrawable(%p,%p,%d,%p)\n", context, pDraw, drawId, modes); - GLAQUA_DEBUG_MSG("glAquaCreateBuffer\n"); + glxPriv = xalloc(sizeof *glxPriv); + if (glxPriv == NULL) return NULL; - // replace swapBuffers (original is never called) - glxPriv->swapBuffers = glAquaSwapBuffers; + memset(glxPriv, 0, sizeof *glxPriv); - // stash private data - glPriv->private = aquaPriv; - glPriv->freePrivate = glAquaDestroyDrawablePrivate; + if (!__glXDrawableInit(&glxPriv->base, screen, pDraw, drawId, modes)) { + xfree(glxPriv); + return NULL; + } + + glxPriv->base.destroy = __glXAquaDrawableDestroy; + glxPriv->base.resize = __glXAquaDrawableResize; + glxPriv->base.swapBuffers = __glXAquaDrawableSwapBuffers; + // glxPriv->base.copySubBuffer = __glXAquaDrawableCopySubBuffer; + + return &glxPriv->base; } static void glAquaResetExtension(void) @@ -1377,3 +1215,724 @@ GLuint __glFloorLog2(GLuint val) } return c; } + +void warn_func(void * p1, char *format, ...) { + va_list v; + va_start(v, format); + vfprintf(stderr, format, v); + va_end(v); +} + +static void setup_dispatch_table(void) { + struct _glapi_table *disp=_glapi_get_dispatch(); + _glapi_set_warning_func((_glapi_warning_func)warn_func); + _glapi_noop_enable_warnings(TRUE); + + SET_Accum(disp, glAccum); + SET_ActiveStencilFaceEXT(disp, glActiveStencilFaceEXT); + SET_ActiveTextureARB(disp, glActiveTextureARB); +//SET_AlphaFragmentOp1ATI(disp, glAlphaFragmentOp1EXT); // <-- EXT -> ATI +//SET_AlphaFragmentOp2ATI(disp, glAlphaFragmentOp2EXT); +//SET_AlphaFragmentOp3ATI(disp, glAlphaFragmentOp3EXT); + SET_AlphaFunc(disp, glAlphaFunc); +//SET_AreProgramsResidentNV(disp, glAreProgramsResidentNV); + SET_AreTexturesResident(disp, glAreTexturesResident); + SET_ArrayElement(disp, glArrayElement); + SET_AttachObjectARB(disp, glAttachObjectARB); + SET_Begin(disp, glBegin); +//SET_BeginFragmentShaderATI(disp, glBeginFragmentShaderEXT); // <-- EXT -> ATI + SET_BeginQueryARB(disp, glBeginQueryARB); + SET_BindAttribLocationARB(disp, glBindAttribLocationARB); + SET_BindBufferARB(disp, glBindBufferARB); +//SET_BindFragmentShaderATI(disp, glBindFragmentShaderEXT); // <-- EXT -> ATI + SET_BindFramebufferEXT(disp, glBindFramebufferEXT); +//SET_BindProgramNV(disp, glBindProgramNV); + SET_BindRenderbufferEXT(disp, glBindRenderbufferEXT); + SET_BindTexture(disp, glBindTexture); + SET_Bitmap(disp, glBitmap); + SET_BlendColor(disp, glBlendColor); + SET_BlendEquation(disp, glBlendEquation); + SET_BlendEquationSeparateEXT(disp, glBlendEquationSeparateEXT); + SET_BlendFunc(disp, glBlendFunc); + SET_BlendFuncSeparateEXT(disp, glBlendFuncSeparateEXT); + SET_BlitFramebufferEXT(disp, glBlitFramebufferEXT); + SET_BufferDataARB(disp, glBufferDataARB); + SET_BufferSubDataARB(disp, glBufferSubDataARB); + SET_CallList(disp, glCallList); + SET_CallLists(disp, glCallLists); + SET_CheckFramebufferStatusEXT(disp, glCheckFramebufferStatusEXT); + SET_Clear(disp, glClear); + SET_ClearAccum(disp, glClearAccum); + SET_ClearColor(disp, glClearColor); + SET_ClearDepth(disp, glClearDepth); + SET_ClearIndex(disp, glClearIndex); + SET_ClearStencil(disp, glClearStencil); + SET_ClientActiveTextureARB(disp, glClientActiveTextureARB); + SET_ClipPlane(disp, glClipPlane); + SET_Color3b(disp, glColor3b); + SET_Color3bv(disp, glColor3bv); + SET_Color3d(disp, glColor3d); + SET_Color3dv(disp, glColor3dv); + SET_Color3f(disp, glColor3f); + SET_Color3fv(disp, glColor3fv); + SET_Color3i(disp, glColor3i); + SET_Color3iv(disp, glColor3iv); + SET_Color3s(disp, glColor3s); + SET_Color3sv(disp, glColor3sv); + SET_Color3ub(disp, glColor3ub); + SET_Color3ubv(disp, glColor3ubv); + SET_Color3ui(disp, glColor3ui); + SET_Color3uiv(disp, glColor3uiv); + SET_Color3us(disp, glColor3us); + SET_Color3usv(disp, glColor3usv); + SET_Color4b(disp, glColor4b); + SET_Color4bv(disp, glColor4bv); + SET_Color4d(disp, glColor4d); + SET_Color4dv(disp, glColor4dv); + SET_Color4f(disp, glColor4f); + SET_Color4fv(disp, glColor4fv); + SET_Color4i(disp, glColor4i); + SET_Color4iv(disp, glColor4iv); + SET_Color4s(disp, glColor4s); + SET_Color4sv(disp, glColor4sv); + SET_Color4ub(disp, glColor4ub); + SET_Color4ubv(disp, glColor4ubv); + SET_Color4ui(disp, glColor4ui); + SET_Color4uiv(disp, glColor4uiv); + SET_Color4us(disp, glColor4us); + SET_Color4usv(disp, glColor4usv); +//SET_ColorFragmentOp1ATI(disp, glColorFragmentOp1EXT); // <-- EXT -> ATI +//SET_ColorFragmentOp2ATI(disp, glColorFragmentOp2EXT); +//SET_ColorFragmentOp3ATI(disp, glColorFragmentOp3EXT); + SET_ColorMask(disp, glColorMask); + SET_ColorMaterial(disp, glColorMaterial); + SET_ColorPointer(disp, glColorPointer); +//SET_ColorPointerEXT(disp, glColorPointerEXT); + SET_ColorSubTable(disp, glColorSubTable); + SET_ColorTable(disp, glColorTable); + SET_ColorTableParameterfv(disp, glColorTableParameterfv); + SET_ColorTableParameteriv(disp, glColorTableParameteriv); + SET_CombinerInputNV(disp, glCombinerInputNV); + SET_CombinerOutputNV(disp, glCombinerOutputNV); + SET_CombinerParameterfNV(disp, glCombinerParameterfNV); + SET_CombinerParameterfvNV(disp, glCombinerParameterfvNV); + SET_CombinerParameteriNV(disp, glCombinerParameteriNV); + SET_CombinerParameterivNV(disp, glCombinerParameterivNV); + SET_CompileShaderARB(disp, glCompileShaderARB); + SET_CompressedTexImage1DARB(disp, glCompressedTexImage1DARB); + SET_CompressedTexImage2DARB(disp, glCompressedTexImage2DARB); + SET_CompressedTexImage3DARB(disp, glCompressedTexImage3DARB); + SET_CompressedTexSubImage1DARB(disp, glCompressedTexSubImage1DARB); + SET_CompressedTexSubImage2DARB(disp, glCompressedTexSubImage2DARB); + SET_CompressedTexSubImage3DARB(disp, glCompressedTexSubImage3DARB); + SET_ConvolutionFilter1D(disp, glConvolutionFilter1D); + SET_ConvolutionFilter2D(disp, glConvolutionFilter2D); + SET_ConvolutionParameterf(disp, glConvolutionParameterf); + SET_ConvolutionParameterfv(disp, glConvolutionParameterfv); + SET_ConvolutionParameteri(disp, glConvolutionParameteri); + SET_ConvolutionParameteriv(disp, glConvolutionParameteriv); + SET_CopyColorSubTable(disp, glCopyColorSubTable); + SET_CopyColorTable(disp, glCopyColorTable); + SET_CopyConvolutionFilter1D(disp, glCopyConvolutionFilter1D); + SET_CopyConvolutionFilter2D(disp, glCopyConvolutionFilter2D); + SET_CopyPixels(disp, glCopyPixels); + SET_CopyTexImage1D(disp, glCopyTexImage1D); + SET_CopyTexImage2D(disp, glCopyTexImage2D); + SET_CopyTexSubImage1D(disp, glCopyTexSubImage1D); + SET_CopyTexSubImage2D(disp, glCopyTexSubImage2D); + SET_CopyTexSubImage3D(disp, glCopyTexSubImage3D); + SET_CreateProgramObjectARB(disp, glCreateProgramObjectARB); + SET_CreateShaderObjectARB(disp, glCreateShaderObjectARB); + SET_CullFace(disp, glCullFace); +//SET_CullParameterdvEXT(disp, glCullParameterdvEXT); +//SET_CullParameterfvEXT(disp, glCullParameterfvEXT); + SET_DeleteBuffersARB(disp, glDeleteBuffersARB); + SET_DeleteFencesNV(disp, glDeleteFencesAPPLE); +//SET_DeleteFragmentShaderATI(disp, glDeleteFragmentShaderEXT); // <-- EXT -> ATI + SET_DeleteFramebuffersEXT(disp, glDeleteFramebuffersEXT); + SET_DeleteLists(disp, glDeleteLists); + SET_DeleteObjectARB(disp, glDeleteObjectARB); +//SET_DeleteProgramsNV(disp, glDeleteProgramsNV); + SET_DeleteQueriesARB(disp, glDeleteQueriesARB); + SET_DeleteRenderbuffersEXT(disp, glDeleteRenderbuffersEXT); + SET_DeleteTextures(disp, glDeleteTextures); + SET_DepthBoundsEXT(disp, glDepthBoundsEXT); + SET_DepthFunc(disp, glDepthFunc); + SET_DepthMask(disp, glDepthMask); + SET_DepthRange(disp, glDepthRange); + SET_DetachObjectARB(disp, glDetachObjectARB); + SET_Disable(disp, glDisable); + SET_DisableClientState(disp, glDisableClientState); + SET_DisableVertexAttribArrayARB(disp, glDisableVertexAttribArrayARB); + SET_DrawArrays(disp, glDrawArrays); + SET_DrawBuffer(disp, glDrawBuffer); + SET_DrawBuffersARB(disp, glDrawBuffersARB); + SET_DrawElements(disp, glDrawElements); + SET_DrawPixels(disp, glDrawPixels); + SET_DrawRangeElements(disp, glDrawRangeElements); + SET_EdgeFlag(disp, glEdgeFlag); + SET_EdgeFlagPointer(disp, glEdgeFlagPointer); +//SET_EdgeFlagPointerEXT(disp, glEdgeFlagPointerEXT); + SET_EdgeFlagv(disp, glEdgeFlagv); + SET_Enable(disp, glEnable); + SET_EnableClientState(disp, glEnableClientState); + SET_EnableVertexAttribArrayARB(disp, glEnableVertexAttribArrayARB); + SET_End(disp, glEnd); +//SET_EndFragmentShaderATI(disp, glEndFragmentShaderEXT); // <-- EXT -> ATI + SET_EndList(disp, glEndList); + SET_EndQueryARB(disp, glEndQueryARB); + SET_EvalCoord1d(disp, glEvalCoord1d); + SET_EvalCoord1dv(disp, glEvalCoord1dv); + SET_EvalCoord1f(disp, glEvalCoord1f); + SET_EvalCoord1fv(disp, glEvalCoord1fv); + SET_EvalCoord2d(disp, glEvalCoord2d); + SET_EvalCoord2dv(disp, glEvalCoord2dv); + SET_EvalCoord2f(disp, glEvalCoord2f); + SET_EvalCoord2fv(disp, glEvalCoord2fv); + SET_EvalMesh1(disp, glEvalMesh1); + SET_EvalMesh2(disp, glEvalMesh2); + SET_EvalPoint1(disp, glEvalPoint1); + SET_EvalPoint2(disp, glEvalPoint2); +//SET_ExecuteProgramNV(disp, glExecuteProgramNV); + SET_FeedbackBuffer(disp, glFeedbackBuffer); + SET_FinalCombinerInputNV(disp, glFinalCombinerInputNV); + SET_Finish(disp, glFinish); + SET_FinishFenceNV(disp, glFinishFenceAPPLE); // <-- APPLE -> NV + SET_Flush(disp, glFlush); +//SET_FlushVertexArrayRangeNV(disp, glFlushVertexArrayRangeNV); + SET_FogCoordPointerEXT(disp, glFogCoordPointerEXT); + SET_FogCoorddEXT(disp, glFogCoorddEXT); + SET_FogCoorddvEXT(disp, glFogCoorddvEXT); + SET_FogCoordfEXT(disp, glFogCoordfEXT); + SET_FogCoordfvEXT(disp, glFogCoordfvEXT); + SET_Fogf(disp, glFogf); + SET_Fogfv(disp, glFogfv); + SET_Fogi(disp, glFogi); + SET_Fogiv(disp, glFogiv); + SET_FramebufferRenderbufferEXT(disp, glFramebufferRenderbufferEXT); + SET_FramebufferTexture1DEXT(disp, glFramebufferTexture1DEXT); + SET_FramebufferTexture2DEXT(disp, glFramebufferTexture2DEXT); + SET_FramebufferTexture3DEXT(disp, glFramebufferTexture3DEXT); + SET_FrontFace(disp, glFrontFace); + SET_Frustum(disp, glFrustum); + SET_GenBuffersARB(disp, glGenBuffersARB); + SET_GenFencesNV(disp, glGenFencesAPPLE); // <-- APPLE -> NV +//SET_GenFragmentShadersATI(disp, glGenFragmentShadersEXT); // <-- EXT -> ATI + SET_GenFramebuffersEXT(disp, glGenFramebuffersEXT); + SET_GenLists(disp, glGenLists); +//SET_GenProgramsNV(disp, glGenProgramsNV); + SET_GenQueriesARB(disp, glGenQueriesARB); + SET_GenRenderbuffersEXT(disp, glGenRenderbuffersEXT); + SET_GenTextures(disp, glGenTextures); + SET_GenerateMipmapEXT(disp, glGenerateMipmapEXT); + SET_GetActiveAttribARB(disp, glGetActiveAttribARB); + SET_GetActiveUniformARB(disp, glGetActiveUniformARB); + SET_GetAttachedObjectsARB(disp, glGetAttachedObjectsARB); + SET_GetAttribLocationARB(disp, glGetAttribLocationARB); + SET_GetBooleanv(disp, glGetBooleanv); + SET_GetBufferParameterivARB(disp, glGetBufferParameterivARB); + SET_GetBufferPointervARB(disp, glGetBufferPointervARB); + SET_GetBufferSubDataARB(disp, glGetBufferSubDataARB); + SET_GetClipPlane(disp, glGetClipPlane); + SET_GetColorTable(disp, glGetColorTable); + SET_GetColorTableParameterfv(disp, glGetColorTableParameterfv); + SET_GetColorTableParameteriv(disp, glGetColorTableParameteriv); + SET_GetCombinerInputParameterfvNV(disp, glGetCombinerInputParameterfvNV); + SET_GetCombinerInputParameterivNV(disp, glGetCombinerInputParameterivNV); + SET_GetCombinerOutputParameterfvNV(disp, glGetCombinerOutputParameterfvNV); + SET_GetCombinerOutputParameterivNV(disp, glGetCombinerOutputParameterivNV); + SET_GetCompressedTexImageARB(disp, glGetCompressedTexImageARB); + SET_GetConvolutionFilter(disp, glGetConvolutionFilter); + SET_GetConvolutionParameterfv(disp, glGetConvolutionParameterfv); + SET_GetConvolutionParameteriv(disp, glGetConvolutionParameteriv); + SET_GetDoublev(disp, glGetDoublev); + SET_GetError(disp, glGetError); +//SET_GetFenceivNV(disp, glGetFenceivNV); + SET_GetFinalCombinerInputParameterfvNV(disp, glGetFinalCombinerInputParameterfvNV); + SET_GetFinalCombinerInputParameterivNV(disp, glGetFinalCombinerInputParameterivNV); + SET_GetFloatv(disp, glGetFloatv); + SET_GetFramebufferAttachmentParameterivEXT(disp, glGetFramebufferAttachmentParameterivEXT); + SET_GetHandleARB(disp, glGetHandleARB); + SET_GetHistogram(disp, glGetHistogram); + SET_GetHistogramParameterfv(disp, glGetHistogramParameterfv); + SET_GetHistogramParameteriv(disp, glGetHistogramParameteriv); + SET_GetInfoLogARB(disp, glGetInfoLogARB); + SET_GetIntegerv(disp, glGetIntegerv); + SET_GetLightfv(disp, glGetLightfv); + SET_GetLightiv(disp, glGetLightiv); + SET_GetMapdv(disp, glGetMapdv); + SET_GetMapfv(disp, glGetMapfv); + SET_GetMapiv(disp, glGetMapiv); + SET_GetMaterialfv(disp, glGetMaterialfv); + SET_GetMaterialiv(disp, glGetMaterialiv); + SET_GetMinmax(disp, glGetMinmax); + SET_GetMinmaxParameterfv(disp, glGetMinmaxParameterfv); + SET_GetMinmaxParameteriv(disp, glGetMinmaxParameteriv); + SET_GetObjectParameterfvARB(disp, glGetObjectParameterfvARB); + SET_GetObjectParameterivARB(disp, glGetObjectParameterivARB); + SET_GetPixelMapfv(disp, glGetPixelMapfv); + SET_GetPixelMapuiv(disp, glGetPixelMapuiv); + SET_GetPixelMapusv(disp, glGetPixelMapusv); +//SET_GetPixelTexGenParameterfvSGIS(disp, glGetPixelTexGenParameterfvSGIS); +//SET_GetPixelTexGenParameterivSGIS(disp, glGetPixelTexGenParameterivSGIS); + SET_GetPointerv(disp, glGetPointerv); + SET_GetPolygonStipple(disp, glGetPolygonStipple); + SET_GetProgramEnvParameterdvARB(disp, glGetProgramEnvParameterdvARB); + SET_GetProgramEnvParameterfvARB(disp, glGetProgramEnvParameterfvARB); + SET_GetProgramLocalParameterdvARB(disp, glGetProgramLocalParameterdvARB); + SET_GetProgramLocalParameterfvARB(disp, glGetProgramLocalParameterfvARB); +//SET_GetProgramNamedParameterdvNV(disp, glGetProgramNamedParameterdvNV); +//SET_GetProgramNamedParameterfvNV(disp, glGetProgramNamedParameterfvNV); +//SET_GetProgramParameterdvNV(disp, glGetProgramParameterdvNV); +//SET_GetProgramParameterfvNV(disp, glGetProgramParameterfvNV); + SET_GetProgramStringARB(disp, glGetProgramStringARB); +//SET_GetProgramStringNV(disp, glGetProgramStringNV); + SET_GetProgramivARB(disp, glGetProgramivARB); +//SET_GetProgramivNV(disp, glGetProgramivNV); +//SET_GetQueryObjecti64vEXT(disp, glGetQueryObjecti64vEXT); + SET_GetQueryObjectivARB(disp, glGetQueryObjectivARB); +//SET_GetQueryObjectui64vEXT(disp, glGetQueryObjectui64vEXT); + SET_GetQueryObjectuivARB(disp, glGetQueryObjectuivARB); + SET_GetQueryivARB(disp, glGetQueryivARB); + SET_GetRenderbufferParameterivEXT(disp, glGetRenderbufferParameterivEXT); + SET_GetSeparableFilter(disp, glGetSeparableFilter); + SET_GetShaderSourceARB(disp, glGetShaderSourceARB); + SET_GetString(disp, glGetString); + SET_GetTexEnvfv(disp, glGetTexEnvfv); + SET_GetTexEnviv(disp, glGetTexEnviv); + SET_GetTexGendv(disp, glGetTexGendv); + SET_GetTexGenfv(disp, glGetTexGenfv); + SET_GetTexGeniv(disp, glGetTexGeniv); + SET_GetTexImage(disp, glGetTexImage); + SET_GetTexLevelParameterfv(disp, glGetTexLevelParameterfv); + SET_GetTexLevelParameteriv(disp, glGetTexLevelParameteriv); + SET_GetTexParameterfv(disp, glGetTexParameterfv); + SET_GetTexParameteriv(disp, glGetTexParameteriv); +//SET_GetTrackMatrixivNV(disp, glGetTrackMatrixivNV); + SET_GetUniformLocationARB(disp, glGetUniformLocationARB); + SET_GetUniformfvARB(disp, glGetUniformfvARB); + SET_GetUniformivARB(disp, glGetUniformivARB); +//SET_GetVertexAttribPointervNV(disp, glGetVertexAttribPointervNV); + SET_GetVertexAttribdvARB(disp, glGetVertexAttribdvARB); +//SET_GetVertexAttribdvNV(disp, glGetVertexAttribdvNV); + SET_GetVertexAttribfvARB(disp, glGetVertexAttribfvARB); +//SET_GetVertexAttribfvNV(disp, glGetVertexAttribfvNV); + SET_GetVertexAttribivARB(disp, glGetVertexAttribivARB); +//SET_GetVertexAttribivNV(disp, glGetVertexAttribivNV); + SET_Hint(disp, glHint); + SET_Histogram(disp, glHistogram); + SET_IndexMask(disp, glIndexMask); + SET_IndexPointer(disp, glIndexPointer); +//SET_IndexPointerEXT(disp, glIndexPointerEXT); + SET_Indexd(disp, glIndexd); + SET_Indexdv(disp, glIndexdv); + SET_Indexf(disp, glIndexf); + SET_Indexfv(disp, glIndexfv); + SET_Indexi(disp, glIndexi); + SET_Indexiv(disp, glIndexiv); + SET_Indexs(disp, glIndexs); + SET_Indexsv(disp, glIndexsv); + SET_Indexub(disp, glIndexub); + SET_Indexubv(disp, glIndexubv); + SET_InitNames(disp, glInitNames); + SET_InterleavedArrays(disp, glInterleavedArrays); + SET_IsBufferARB(disp, glIsBufferARB); + SET_IsEnabled(disp, glIsEnabled); + SET_IsFenceNV(disp, glIsFenceAPPLE); // <-- APPLE -> NV + SET_IsFramebufferEXT(disp, glIsFramebufferEXT); + SET_IsList(disp, glIsList); +//SET_IsProgramNV(disp, glIsProgramNV); + SET_IsQueryARB(disp, glIsQueryARB); + SET_IsRenderbufferEXT(disp, glIsRenderbufferEXT); + SET_IsTexture(disp, glIsTexture); + SET_LightModelf(disp, glLightModelf); + SET_LightModelfv(disp, glLightModelfv); + SET_LightModeli(disp, glLightModeli); + SET_LightModeliv(disp, glLightModeliv); + SET_Lightf(disp, glLightf); + SET_Lightfv(disp, glLightfv); + SET_Lighti(disp, glLighti); + SET_Lightiv(disp, glLightiv); + SET_LineStipple(disp, glLineStipple); + SET_LineWidth(disp, glLineWidth); + SET_LinkProgramARB(disp, glLinkProgramARB); + SET_ListBase(disp, glListBase); + SET_LoadIdentity(disp, glLoadIdentity); + SET_LoadMatrixd(disp, glLoadMatrixd); + SET_LoadMatrixf(disp, glLoadMatrixf); + SET_LoadName(disp, glLoadName); +//SET_LoadProgramNV(disp, glLoadProgramNV); + SET_LoadTransposeMatrixdARB(disp, glLoadTransposeMatrixdARB); + SET_LoadTransposeMatrixfARB(disp, glLoadTransposeMatrixfARB); + SET_LockArraysEXT(disp, glLockArraysEXT); + SET_LogicOp(disp, glLogicOp); + SET_Map1d(disp, glMap1d); + SET_Map1f(disp, glMap1f); + SET_Map2d(disp, glMap2d); + SET_Map2f(disp, glMap2f); + SET_MapBufferARB(disp, glMapBufferARB); + SET_MapGrid1d(disp, glMapGrid1d); + SET_MapGrid1f(disp, glMapGrid1f); + SET_MapGrid2d(disp, glMapGrid2d); + SET_MapGrid2f(disp, glMapGrid2f); + SET_Materialf(disp, glMaterialf); + SET_Materialfv(disp, glMaterialfv); + SET_Materiali(disp, glMateriali); + SET_Materialiv(disp, glMaterialiv); + SET_MatrixMode(disp, glMatrixMode); + SET_Minmax(disp, glMinmax); + SET_MultMatrixd(disp, glMultMatrixd); + SET_MultMatrixf(disp, glMultMatrixf); + SET_MultTransposeMatrixdARB(disp, glMultTransposeMatrixdARB); + SET_MultTransposeMatrixfARB(disp, glMultTransposeMatrixfARB); + SET_MultiDrawArraysEXT(disp, glMultiDrawArraysEXT); + SET_MultiDrawElementsEXT(disp, glMultiDrawElementsEXT); +//SET_MultiModeDrawArraysIBM(disp, glMultiModeDrawArraysIBM); +//SET_MultiModeDrawElementsIBM(disp, glMultiModeDrawElementsIBM); + SET_MultiTexCoord1dARB(disp, glMultiTexCoord1dARB); + SET_MultiTexCoord1dvARB(disp, glMultiTexCoord1dvARB); + SET_MultiTexCoord1fARB(disp, glMultiTexCoord1fARB); + SET_MultiTexCoord1fvARB(disp, glMultiTexCoord1fvARB); + SET_MultiTexCoord1iARB(disp, glMultiTexCoord1iARB); + SET_MultiTexCoord1ivARB(disp, glMultiTexCoord1ivARB); + SET_MultiTexCoord1sARB(disp, glMultiTexCoord1sARB); + SET_MultiTexCoord1svARB(disp, glMultiTexCoord1svARB); + SET_MultiTexCoord2dARB(disp, glMultiTexCoord2dARB); + SET_MultiTexCoord2dvARB(disp, glMultiTexCoord2dvARB); + SET_MultiTexCoord2fARB(disp, glMultiTexCoord2fARB); + SET_MultiTexCoord2fvARB(disp, glMultiTexCoord2fvARB); + SET_MultiTexCoord2iARB(disp, glMultiTexCoord2iARB); + SET_MultiTexCoord2ivARB(disp, glMultiTexCoord2ivARB); + SET_MultiTexCoord2sARB(disp, glMultiTexCoord2sARB); + SET_MultiTexCoord2svARB(disp, glMultiTexCoord2svARB); + SET_MultiTexCoord3dARB(disp, glMultiTexCoord3dARB); + SET_MultiTexCoord3dvARB(disp, glMultiTexCoord3dvARB); + SET_MultiTexCoord3fARB(disp, glMultiTexCoord3fARB); + SET_MultiTexCoord3fvARB(disp, glMultiTexCoord3fvARB); + SET_MultiTexCoord3iARB(disp, glMultiTexCoord3iARB); + SET_MultiTexCoord3ivARB(disp, glMultiTexCoord3ivARB); + SET_MultiTexCoord3sARB(disp, glMultiTexCoord3sARB); + SET_MultiTexCoord3svARB(disp, glMultiTexCoord3svARB); + SET_MultiTexCoord4dARB(disp, glMultiTexCoord4dARB); + SET_MultiTexCoord4dvARB(disp, glMultiTexCoord4dvARB); + SET_MultiTexCoord4fARB(disp, glMultiTexCoord4fARB); + SET_MultiTexCoord4fvARB(disp, glMultiTexCoord4fvARB); + SET_MultiTexCoord4iARB(disp, glMultiTexCoord4iARB); + SET_MultiTexCoord4ivARB(disp, glMultiTexCoord4ivARB); + SET_MultiTexCoord4sARB(disp, glMultiTexCoord4sARB); + SET_MultiTexCoord4svARB(disp, glMultiTexCoord4svARB); + SET_NewList(disp, glNewList); + SET_Normal3b(disp, glNormal3b); + SET_Normal3bv(disp, glNormal3bv); + SET_Normal3d(disp, glNormal3d); + SET_Normal3dv(disp, glNormal3dv); + SET_Normal3f(disp, glNormal3f); + SET_Normal3fv(disp, glNormal3fv); + SET_Normal3i(disp, glNormal3i); + SET_Normal3iv(disp, glNormal3iv); + SET_Normal3s(disp, glNormal3s); + SET_Normal3sv(disp, glNormal3sv); + SET_NormalPointer(disp, glNormalPointer); +//SET_NormalPointerEXT(disp, glNormalPointerEXT); + SET_Ortho(disp, glOrtho); +//SET_PassTexCoordATI(disp, glPassTexCoordEXT); // <-- EXT -> ATI + SET_PassThrough(disp, glPassThrough); + SET_PixelMapfv(disp, glPixelMapfv); + SET_PixelMapuiv(disp, glPixelMapuiv); + SET_PixelMapusv(disp, glPixelMapusv); + SET_PixelStoref(disp, glPixelStoref); + SET_PixelStorei(disp, glPixelStorei); +//SET_PixelTexGenParameterfSGIS(disp, glPixelTexGenParameterfSGIS); +//SET_PixelTexGenParameterfvSGIS(disp, glPixelTexGenParameterfvSGIS); +//SET_PixelTexGenParameteriSGIS(disp, glPixelTexGenParameteriSGIS); +//SET_PixelTexGenParameterivSGIS(disp, glPixelTexGenParameterivSGIS); +// SET_PixelTexGenSGIX(disp, glPixelTexGenSGIX); + SET_PixelTransferf(disp, glPixelTransferf); + SET_PixelTransferi(disp, glPixelTransferi); + SET_PixelZoom(disp, glPixelZoom); + SET_PointParameterfEXT(disp, glPointParameterfARB); // <-- ARB -> EXT + SET_PointParameterfvEXT(disp, glPointParameterfvARB); // <-- ARB -> EXT + SET_PointParameteriNV(disp, glPointParameteriNV); + SET_PointParameterivNV(disp, glPointParameterivNV); + SET_PointSize(disp, glPointSize); + SET_PolygonMode(disp, glPolygonMode); + SET_PolygonOffset(disp, glPolygonOffset); +//SET_PolygonOffsetEXT(disp, glPolygonOffsetEXT); + SET_PolygonStipple(disp, glPolygonStipple); + SET_PopAttrib(disp, glPopAttrib); + SET_PopClientAttrib(disp, glPopClientAttrib); + SET_PopMatrix(disp, glPopMatrix); + SET_PopName(disp, glPopName); + SET_PrioritizeTextures(disp, glPrioritizeTextures); + SET_ProgramEnvParameter4dARB(disp, glProgramEnvParameter4dARB); + SET_ProgramEnvParameter4dvARB(disp, glProgramEnvParameter4dvARB); + SET_ProgramEnvParameter4fARB(disp, glProgramEnvParameter4fARB); + SET_ProgramEnvParameter4fvARB(disp, glProgramEnvParameter4fvARB); + SET_ProgramLocalParameter4dARB(disp, glProgramLocalParameter4dARB); + SET_ProgramLocalParameter4dvARB(disp, glProgramLocalParameter4dvARB); + SET_ProgramLocalParameter4fARB(disp, glProgramLocalParameter4fARB); + SET_ProgramLocalParameter4fvARB(disp, glProgramLocalParameter4fvARB); +//SET_ProgramNamedParameter4dNV(disp, glProgramNamedParameter4dNV); +//SET_ProgramNamedParameter4dvNV(disp, glProgramNamedParameter4dvNV); +//SET_ProgramNamedParameter4fNV(disp, glProgramNamedParameter4fNV); +//SET_ProgramNamedParameter4fvNV(disp, glProgramNamedParameter4fvNV); +//SET_ProgramParameter4dNV(disp, glProgramParameter4dNV); +//SET_ProgramParameter4dvNV(disp, glProgramParameter4dvNV); +//SET_ProgramParameter4fNV(disp, glProgramParameter4fNV); +//SET_ProgramParameter4fvNV(disp, glProgramParameter4fvNV); +//SET_ProgramParameters4dvNV(disp, glProgramParameters4dvNV); +//SET_ProgramParameters4fvNV(disp, glProgramParameters4fvNV); + SET_ProgramStringARB(disp, glProgramStringARB); + SET_PushAttrib(disp, glPushAttrib); + SET_PushClientAttrib(disp, glPushClientAttrib); + SET_PushMatrix(disp, glPushMatrix); + SET_PushName(disp, glPushName); + SET_RasterPos2d(disp, glRasterPos2d); + SET_RasterPos2dv(disp, glRasterPos2dv); + SET_RasterPos2f(disp, glRasterPos2f); + SET_RasterPos2fv(disp, glRasterPos2fv); + SET_RasterPos2i(disp, glRasterPos2i); + SET_RasterPos2iv(disp, glRasterPos2iv); + SET_RasterPos2s(disp, glRasterPos2s); + SET_RasterPos2sv(disp, glRasterPos2sv); + SET_RasterPos3d(disp, glRasterPos3d); + SET_RasterPos3dv(disp, glRasterPos3dv); + SET_RasterPos3f(disp, glRasterPos3f); + SET_RasterPos3fv(disp, glRasterPos3fv); + SET_RasterPos3i(disp, glRasterPos3i); + SET_RasterPos3iv(disp, glRasterPos3iv); + SET_RasterPos3s(disp, glRasterPos3s); + SET_RasterPos3sv(disp, glRasterPos3sv); + SET_RasterPos4d(disp, glRasterPos4d); + SET_RasterPos4dv(disp, glRasterPos4dv); + SET_RasterPos4f(disp, glRasterPos4f); + SET_RasterPos4fv(disp, glRasterPos4fv); + SET_RasterPos4i(disp, glRasterPos4i); + SET_RasterPos4iv(disp, glRasterPos4iv); + SET_RasterPos4s(disp, glRasterPos4s); + SET_RasterPos4sv(disp, glRasterPos4sv); + SET_ReadBuffer(disp, glReadBuffer); + SET_ReadPixels(disp, glReadPixels); + SET_Rectd(disp, glRectd); + SET_Rectdv(disp, glRectdv); + SET_Rectf(disp, glRectf); + SET_Rectfv(disp, glRectfv); + SET_Recti(disp, glRecti); + SET_Rectiv(disp, glRectiv); + SET_Rects(disp, glRects); + SET_Rectsv(disp, glRectsv); + SET_RenderMode(disp, glRenderMode); + SET_RenderbufferStorageEXT(disp, glRenderbufferStorageEXT); +//SET_RequestResidentProgramsNV(disp, glRequestResidentProgramsNV); + SET_ResetHistogram(disp, glResetHistogram); + SET_ResetMinmax(disp, glResetMinmax); +//SET_ResizeBuffersMESA(disp, glResizeBuffersMESA); + SET_Rotated(disp, glRotated); + SET_Rotatef(disp, glRotatef); + SET_SampleCoverageARB(disp, glSampleCoverageARB); +//SET_SampleMapATI(disp, glSampleMapEXT); // <-- EXT -> ATI +//SET_SampleMaskSGIS(disp, glSampleMaskSGIS); +//SET_SamplePatternSGIS(disp, glSamplePatternSGIS); + SET_Scaled(disp, glScaled); + SET_Scalef(disp, glScalef); + SET_Scissor(disp, glScissor); + SET_SecondaryColor3bEXT(disp, glSecondaryColor3bEXT); + SET_SecondaryColor3bvEXT(disp, glSecondaryColor3bvEXT); + SET_SecondaryColor3dEXT(disp, glSecondaryColor3dEXT); + SET_SecondaryColor3dvEXT(disp, glSecondaryColor3dvEXT); + SET_SecondaryColor3fEXT(disp, glSecondaryColor3fEXT); + SET_SecondaryColor3fvEXT(disp, glSecondaryColor3fvEXT); + SET_SecondaryColor3iEXT(disp, glSecondaryColor3iEXT); + SET_SecondaryColor3ivEXT(disp, glSecondaryColor3ivEXT); + SET_SecondaryColor3sEXT(disp, glSecondaryColor3sEXT); + SET_SecondaryColor3svEXT(disp, glSecondaryColor3svEXT); + SET_SecondaryColor3ubEXT(disp, glSecondaryColor3ubEXT); + SET_SecondaryColor3ubvEXT(disp, glSecondaryColor3ubvEXT); + SET_SecondaryColor3uiEXT(disp, glSecondaryColor3uiEXT); + SET_SecondaryColor3uivEXT(disp, glSecondaryColor3uivEXT); + SET_SecondaryColor3usEXT(disp, glSecondaryColor3usEXT); + SET_SecondaryColor3usvEXT(disp, glSecondaryColor3usvEXT); + SET_SecondaryColorPointerEXT(disp, glSecondaryColorPointerEXT); + SET_SelectBuffer(disp, glSelectBuffer); + SET_SeparableFilter2D(disp, glSeparableFilter2D); + SET_SetFenceNV(disp, glSetFenceAPPLE); // <-- APPLE -> NV +//SET_SetFragmentShaderConstantATI(disp, glSetFragmentShaderConstantEXT); // <-- EXT -> ATI + SET_ShadeModel(disp, glShadeModel); + SET_ShaderSourceARB(disp, glShaderSourceARB); + SET_StencilFunc(disp, glStencilFunc); + SET_StencilFuncSeparate(disp, glStencilFuncSeparate); + SET_StencilMask(disp, glStencilMask); + SET_StencilMaskSeparate(disp, glStencilMaskSeparate); + SET_StencilOp(disp, glStencilOp); + SET_StencilOpSeparate(disp, glStencilOpSeparate); + SET_TestFenceNV(disp, glTestFenceAPPLE); // <-- APPLE -> NV + SET_TexCoord1d(disp, glTexCoord1d); + SET_TexCoord1dv(disp, glTexCoord1dv); + SET_TexCoord1f(disp, glTexCoord1f); + SET_TexCoord1fv(disp, glTexCoord1fv); + SET_TexCoord1i(disp, glTexCoord1i); + SET_TexCoord1iv(disp, glTexCoord1iv); + SET_TexCoord1s(disp, glTexCoord1s); + SET_TexCoord1sv(disp, glTexCoord1sv); + SET_TexCoord2d(disp, glTexCoord2d); + SET_TexCoord2dv(disp, glTexCoord2dv); + SET_TexCoord2f(disp, glTexCoord2f); + SET_TexCoord2fv(disp, glTexCoord2fv); + SET_TexCoord2i(disp, glTexCoord2i); + SET_TexCoord2iv(disp, glTexCoord2iv); + SET_TexCoord2s(disp, glTexCoord2s); + SET_TexCoord2sv(disp, glTexCoord2sv); + SET_TexCoord3d(disp, glTexCoord3d); + SET_TexCoord3dv(disp, glTexCoord3dv); + SET_TexCoord3f(disp, glTexCoord3f); + SET_TexCoord3fv(disp, glTexCoord3fv); + SET_TexCoord3i(disp, glTexCoord3i); + SET_TexCoord3iv(disp, glTexCoord3iv); + SET_TexCoord3s(disp, glTexCoord3s); + SET_TexCoord3sv(disp, glTexCoord3sv); + SET_TexCoord4d(disp, glTexCoord4d); + SET_TexCoord4dv(disp, glTexCoord4dv); + SET_TexCoord4f(disp, glTexCoord4f); + SET_TexCoord4fv(disp, glTexCoord4fv); + SET_TexCoord4i(disp, glTexCoord4i); + SET_TexCoord4iv(disp, glTexCoord4iv); + SET_TexCoord4s(disp, glTexCoord4s); + SET_TexCoord4sv(disp, glTexCoord4sv); + SET_TexCoordPointer(disp, glTexCoordPointer); +//SET_TexCoordPointerEXT(disp, glTexCoordPointerEXT); + SET_TexEnvf(disp, glTexEnvf); + SET_TexEnvfv(disp, glTexEnvfv); + SET_TexEnvi(disp, glTexEnvi); + SET_TexEnviv(disp, glTexEnviv); + SET_TexGend(disp, glTexGend); + SET_TexGendv(disp, glTexGendv); + SET_TexGenf(disp, glTexGenf); + SET_TexGenfv(disp, glTexGenfv); + SET_TexGeni(disp, glTexGeni); + SET_TexGeniv(disp, glTexGeniv); + SET_TexImage1D(disp, glTexImage1D); + SET_TexImage2D(disp, glTexImage2D); + SET_TexImage3D(disp, glTexImage3D); + SET_TexParameterf(disp, glTexParameterf); + SET_TexParameterfv(disp, glTexParameterfv); + SET_TexParameteri(disp, glTexParameteri); + SET_TexParameteriv(disp, glTexParameteriv); + SET_TexSubImage1D(disp, glTexSubImage1D); + SET_TexSubImage2D(disp, glTexSubImage2D); + SET_TexSubImage3D(disp, glTexSubImage3D); +//SET_TrackMatrixNV(disp, glTrackMatrixNV); + SET_Translated(disp, glTranslated); + SET_Translatef(disp, glTranslatef); + SET_Uniform1fARB(disp, glUniform1fARB); + SET_Uniform1fvARB(disp, glUniform1fvARB); + SET_Uniform1iARB(disp, glUniform1iARB); + SET_Uniform1ivARB(disp, glUniform1ivARB); + SET_Uniform2fARB(disp, glUniform2fARB); + SET_Uniform2fvARB(disp, glUniform2fvARB); + SET_Uniform2iARB(disp, glUniform2iARB); + SET_Uniform2ivARB(disp, glUniform2ivARB); + SET_Uniform3fARB(disp, glUniform3fARB); + SET_Uniform3fvARB(disp, glUniform3fvARB); + SET_Uniform3iARB(disp, glUniform3iARB); + SET_Uniform3ivARB(disp, glUniform3ivARB); + SET_Uniform4fARB(disp, glUniform4fARB); + SET_Uniform4fvARB(disp, glUniform4fvARB); + SET_Uniform4iARB(disp, glUniform4iARB); + SET_Uniform4ivARB(disp, glUniform4ivARB); + SET_UniformMatrix2fvARB(disp, glUniformMatrix2fvARB); + SET_UniformMatrix3fvARB(disp, glUniformMatrix3fvARB); + SET_UniformMatrix4fvARB(disp, glUniformMatrix4fvARB); + SET_UnlockArraysEXT(disp, glUnlockArraysEXT); + SET_UnmapBufferARB(disp, glUnmapBufferARB); + SET_UseProgramObjectARB(disp, glUseProgramObjectARB); + SET_ValidateProgramARB(disp, glValidateProgramARB); + SET_Vertex2d(disp, glVertex2d); + SET_Vertex2dv(disp, glVertex2dv); + SET_Vertex2f(disp, glVertex2f); + SET_Vertex2fv(disp, glVertex2fv); + SET_Vertex2i(disp, glVertex2i); + SET_Vertex2iv(disp, glVertex2iv); + SET_Vertex2s(disp, glVertex2s); + SET_Vertex2sv(disp, glVertex2sv); + SET_Vertex3d(disp, glVertex3d); + SET_Vertex3dv(disp, glVertex3dv); + SET_Vertex3f(disp, glVertex3f); + SET_Vertex3fv(disp, glVertex3fv); + SET_Vertex3i(disp, glVertex3i); + SET_Vertex3iv(disp, glVertex3iv); + SET_Vertex3s(disp, glVertex3s); + SET_Vertex3sv(disp, glVertex3sv); + SET_Vertex4d(disp, glVertex4d); + SET_Vertex4dv(disp, glVertex4dv); + SET_Vertex4f(disp, glVertex4f); + SET_Vertex4fv(disp, glVertex4fv); + SET_Vertex4i(disp, glVertex4i); + SET_Vertex4iv(disp, glVertex4iv); + SET_Vertex4s(disp, glVertex4s); + SET_Vertex4sv(disp, glVertex4sv); +//SET_VertexArrayRangeNV(disp, glVertexArrayRangeNV); + SET_VertexAttrib1dARB(disp, glVertexAttrib1dARB); + SET_VertexAttrib1dvARB(disp, glVertexAttrib1dvARB); + SET_VertexAttrib1fARB(disp, glVertexAttrib1fARB); + SET_VertexAttrib1fvARB(disp, glVertexAttrib1fvARB); + SET_VertexAttrib1sARB(disp, glVertexAttrib1sARB); + SET_VertexAttrib1svARB(disp, glVertexAttrib1svARB); + SET_VertexAttrib2dARB(disp, glVertexAttrib2dARB); + SET_VertexAttrib2dvARB(disp, glVertexAttrib2dvARB); + SET_VertexAttrib2fARB(disp, glVertexAttrib2fARB); + SET_VertexAttrib2fvARB(disp, glVertexAttrib2fvARB); + SET_VertexAttrib2sARB(disp, glVertexAttrib2sARB); + SET_VertexAttrib2svARB(disp, glVertexAttrib2svARB); + SET_VertexAttrib3dARB(disp, glVertexAttrib3dARB); + SET_VertexAttrib3dvARB(disp, glVertexAttrib3dvARB); + SET_VertexAttrib3fARB(disp, glVertexAttrib3fARB); + SET_VertexAttrib3fvARB(disp, glVertexAttrib3fvARB); + SET_VertexAttrib3sARB(disp, glVertexAttrib3sARB); + SET_VertexAttrib3svARB(disp, glVertexAttrib3svARB); + SET_VertexAttrib4NbvARB(disp, glVertexAttrib4NbvARB); + SET_VertexAttrib4NivARB(disp, glVertexAttrib4NivARB); + SET_VertexAttrib4NsvARB(disp, glVertexAttrib4NsvARB); + SET_VertexAttrib4NubARB(disp, glVertexAttrib4NubARB); + SET_VertexAttrib4NubvARB(disp, glVertexAttrib4NubvARB); + SET_VertexAttrib4NuivARB(disp, glVertexAttrib4NuivARB); + SET_VertexAttrib4NusvARB(disp, glVertexAttrib4NusvARB); + SET_VertexAttrib4bvARB(disp, glVertexAttrib4bvARB); + SET_VertexAttrib4dARB(disp, glVertexAttrib4dARB); + SET_VertexAttrib4dvARB(disp, glVertexAttrib4dvARB); + SET_VertexAttrib4fARB(disp, glVertexAttrib4fARB); + SET_VertexAttrib4fvARB(disp, glVertexAttrib4fvARB); + SET_VertexAttrib4ivARB(disp, glVertexAttrib4ivARB); + SET_VertexAttrib4sARB(disp, glVertexAttrib4sARB); + SET_VertexAttrib4svARB(disp, glVertexAttrib4svARB); + SET_VertexAttrib4ubvARB(disp, glVertexAttrib4ubvARB); + SET_VertexAttrib4uivARB(disp, glVertexAttrib4uivARB); + SET_VertexAttrib4usvARB(disp, glVertexAttrib4usvARB); + SET_VertexAttribPointerARB(disp, glVertexAttribPointerARB); + SET_VertexPointer(disp, glVertexPointer); +// SET_VertexPointerEXT(disp, glVertexPointerEXT); + SET_Viewport(disp, glViewport); + SET_WindowPos2dMESA(disp, glWindowPos2dARB); + SET_WindowPos2dvMESA(disp, glWindowPos2dvARB); + SET_WindowPos2fMESA(disp, glWindowPos2fARB); + SET_WindowPos2fvMESA(disp, glWindowPos2fvARB); + SET_WindowPos2iMESA(disp, glWindowPos2iARB); + SET_WindowPos2ivMESA(disp, glWindowPos2ivARB); + SET_WindowPos2sMESA(disp, glWindowPos2sARB); + SET_WindowPos2svMESA(disp, glWindowPos2svARB); + SET_WindowPos3dMESA(disp, glWindowPos3dARB); + SET_WindowPos3dvMESA(disp, glWindowPos3dvARB); + SET_WindowPos3fMESA(disp, glWindowPos3fARB); + SET_WindowPos3fvMESA(disp, glWindowPos3fvARB); + SET_WindowPos3iMESA(disp, glWindowPos3iARB); + SET_WindowPos3ivMESA(disp, glWindowPos3ivARB); + SET_WindowPos3sMESA(disp, glWindowPos3sARB); + SET_WindowPos3svMESA(disp, glWindowPos3svARB); +//SET_WindowPos4dMESA(disp, glWindowPos4dMESA); +//SET_WindowPos4dvMESA(disp, glWindowPos4dvMESA); +//SET_WindowPos4fMESA(disp, glWindowPos4fMESA); +//SET_WindowPos4fvMESA(disp, glWindowPos4fvMESA); +//SET_WindowPos4iMESA(disp, glWindowPos4iMESA); +//SET_WindowPos4ivMESA(disp, glWindowPos4ivMESA); +//SET_WindowPos4sMESA(disp, glWindowPos4sMESA); +//SET_WindowPos4svMESA(disp, glWindowPos4svMESA); +} diff --git a/configure.ac b/configure.ac index 64bfb6f97..a515a3345 100644 --- a/configure.ac +++ b/configure.ac @@ -198,7 +198,7 @@ case $host_cpu in ARM_VIDEO=yes ;; i*86) - use_x86_asm="yes" + use_x86_asm="no" I386_VIDEO=yes case $host_os in *linux*) DEFAULT_INT10=vm86 ;; @@ -223,7 +223,7 @@ case $host_cpu in BSD_ARCH_SOURCES="sparc64_video.c ioperm_noop.c" ;; x86_64*|amd64*) - use_x86_asm="yes" + use_x86_asm="no" I386_VIDEO=yes case $host_os in *freebsd*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;; @@ -363,9 +363,10 @@ AC_ARG_WITH(os-name, AS_HELP_STRING([--with-os-name=OSNAME], [Name of OS AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]), [ OSVENDOR="$withval" ], [ OSVENDOR="" ]) +AC_ARG_VAR([MESA_SOURCE],[Path to Mesa source tree]) AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]), [ MESA_SOURCE="$withval" ], - [ MESA_SOURCE="" ]) + [ MESA_SOURCE="${MESA_SOURCE}" ]) AC_ARG_WITH(fontdir, AS_HELP_STRING([--with-fontdir=FONTDIR], [Path to top level dir where fonts are installed (default: ${libdir}/X11/fonts)]), [ FONTDIR="$withval" ], [ FONTDIR="${libdir}/X11/fonts" ]) @@ -385,6 +386,11 @@ AC_ARG_WITH(rgb-path, AS_HELP_STRING([--with-rgb-path=PATH], [Path to RG AC_ARG_WITH(dri-driver-path, AS_HELP_STRING([--with-dri-driver-path=PATH], [Path to DRI drivers (default: ${libdir}/dri)]), [ DRI_DRIVER_PATH="$withval" ], [ DRI_DRIVER_PATH="${libdir}/dri" ]) +APPLE_APPLICATIONS_DIR="${bindir}/Applications" +AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: ${bindir}/Applications)]), + [ APPLE_APPLICATIONS_DIR="${withval}" ]. + [ APPLE_APPLICATIONS_DIR="${bindir}/Applications" ]) + AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]), [BUILDDOCS=$enableval], [BUILDDOCS=no]) @@ -401,6 +407,7 @@ AC_ARG_ENABLE(xres, AS_HELP_STRING([--disable-xres], [Build XRes exten AC_ARG_ENABLE(xtrap, AS_HELP_STRING([--disable-xtrap], [Build XTrap extension (default: enabled)]), [XTRAP=$enableval], [XTRAP=yes]) AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes]) AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes]) +AC_ARG_ENABLE(quartz, AS_HELP_STRING([--enable-quartz], [Build with darwin quartz support (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes]) AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: enabled)]), [DGA=$enableval], [DGA=yes]) AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes]) @@ -431,11 +438,11 @@ AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build dnl DDXes. AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) -AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no]) -AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: no)]), [XVFB=$enableval], [XVFB=yes]) +AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto]) +AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes]) AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) -AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) +AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: auto)]), [XPRINT=$enableval], [XPRINT=auto]) AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) AC_ARG_ENABLE(xglx, AS_HELP_STRING([--enable-xglx], [Build Xglx xgl module (default: no)]), [XGLX=$enableval], [XGLX=no]) AC_ARG_ENABLE(xegl, AS_HELP_STRING([--enable-xegl], [Build Xegl xgl module (default: no)]), [XEGL=$enableval], [XEGL=no]) @@ -462,7 +469,7 @@ if test "x$SETUID" = "xauto" ; then case $host_cpu in sparc) SETUID="no" ;; *) SETUID="yes" ;; - esac + esac ;; esac if test "x$SETUID" = xyes; then touch testfile @@ -531,10 +538,6 @@ if test "x$XVMC" = xyes; then AC_DEFINE(XvMCExtension, 1, [Build XvMC extension]) fi -AM_CONDITIONAL(DGA, [test "x$DGA" = xyes]) -if test "x$DGA" = xyes; then - AC_DEFINE(DGA, 1, [Support DGA extension]) -fi AM_CONDITIONAL(COMPOSITE, [test "x$COMPOSITE" = xyes]) if test "x$COMPOSITE" = xyes; then @@ -580,7 +583,7 @@ if test "x$GLX" = xyes && ! test "x$MESA_SOURCE" = x; then PKG_CHECK_MODULES([GL], [glproto >= 1.4.8]) AC_SUBST(XLIB_CFLAGS) AC_DEFINE(GLXEXT, 1, [Build GLX extension]) - GLX_LIBS='$(top_builddir)/GL/glx/libglx.la $(top_builddir)/GL/mesa/libGLcore.la' + GLX_LIBS='$(top_builddir)/GL/apple/indirect.o $(top_builddir)/GL/glx/libglx.la' test -d GL || mkdir GL case $host_os in solaris*) @@ -696,14 +699,6 @@ if test "x$DPMSExtension" = xyes; then AC_DEFINE(DPMSExtension, 1, [Support DPMS extension]) fi -if test "x$XF86VIDMODE" = xyes; then - AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension]) -fi - -if test "x$XF86MISC" = xyes; then - AC_DEFINE(XF86MISC, 1, [Support XFree86 miscellaneous extensions]) -fi - if test "x$XPRINT" = xauto; then PKG_CHECK_MODULES([XPRINTPROTO], [printproto], [XPRINT=yes], [XPRINT=no]) fi @@ -835,7 +830,7 @@ AC_SUBST([VENDOR_STRING]) AC_SUBST([VENDOR_STRING_SHORT]) AC_SUBST([VENDOR_RELEASE]) AC_SUBST([VENDOR_MAN_VERSION]) - +AC_SUBST([XORG_DATE]) AC_DEFINE(DDXOSINIT, 1, [Use OsVendorInit]) AC_DEFINE(SERVER_LOCK, 1, [Use a lock to prevent multiple servers on a display]) AC_DEFINE(SMART_SCHEDULE, 1, [Include time-based scheduler]) @@ -925,7 +920,19 @@ AC_DEFINE([SVR4],1,[Define to 1 on systems derived from System V Release 4]) AC_MSG_RESULT([yes])], AC_MSG_RESULT([no])) XSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC" -AC_DEFINE_UNQUOTED(X_BYTE_ORDER,[$ENDIAN],[Endian order]) +AC_DEFINE_UNQUOTED(_X_BYTE_ORDER,[$ENDIAN],[Endian order]) +AH_VERBATIM([X_BYTE_ORDER],[ +/* Deal with multiple architecture compiles on Mac OS X */ +#ifndef __APPLE_CC__ +#define X_BYTE_ORDER _X_BYTE_ORDER +#else +#ifdef __BIG_ENDIAN__ +#define X_BYTE_ORDER X_BIG_ENDIAN +#else +#define X_BYTE_ORDER X_LITTLE_ENDIAN +#endif +#endif +]) AC_SUBST([XSERVER_LIBS]) @@ -1099,6 +1106,61 @@ dnl has it in libc), or if libdl is needed to get it. AC_CHECK_LIB([dl], [dlopen], XORG_LIBS="$XORG_LIBS -ldl")) case $host_os in + darwin*) + XORG_OS="Darwin" + build_darwin=yes + if test "X$XQUARTZ" = Xauto; then + AC_CACHE_CHECK([for Carbon framework],xorg_cv_Carbon_framework,[ + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -framework Carbon" + AC_LINK_IFELSE([char FSFindFolder(); +int main() { +FSFindFolder(); +return 0;} + ],[xorg_cv_Carbon_framework=yes], + [xorg_cv_Carbon_framework=no]) + LDFLAGS=$save_LDFLAGS]) + if test "X$xorg_cv_Carbon_framework" = Xyes; then + AC_DEFINE([DARWIN_WITH_QUARTZ],[1], + [Have Quartz]) + XQUARTZ=yes + else + XQUARTZ=no + fi + fi + AC_DEFINE(ROOTLESS,1,[Build Rootless code]) + AC_CACHE_CHECK([for AGL framework],xorg_cv_AGL_framework,[ + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -framework AGL" + AC_LINK_IFELSE([char aglEnable(); +int main() { +aglEnable(); +return 0;} + ],[xorg_cv_AGL_framework=yes], + [xorg_cv_AGL_framework=no]) + LDFLAGS=$save_LDFLAGS + ]) + AC_CHECK_LIB([Xplugin],[xp_init],[:]) + AC_SUBST([APPLE_APPLICATIONS_DIR]) + CFLAGS="${CFLAGS} -D__DARWIN__" + PLIST_VERSION_STRING=$VENDOR_VERSION_STRING + AC_SUBST([PLIST_VERSION_STRING]) + PLIST_VENDOR_WEB=$VENDOR_WEB + AC_SUBST([PLIST_VENDOR_WEB]) + # Not sure that we should be disabling all these... + if test "x$XF86MISC" = xyes; then + AC_MSG_NOTICE([Disabling XF86Misc extension]) + XF86MISC=no + fi + if test "x$XF86VIDMODE" = xyes; then + AC_MSG_NOTICE([Disabling XF86VidMode extension]) + XF86VIDMODE=no + fi + if test "x$DGA" = xyes; then + AC_MSG_NOTICE([Disabling DGA extension]) + DGA=no + fi + ;; linux*) if test "x$LNXAPM" = xyes; then XORG_CFLAGS="$XORG_CFLAGS -DXF86PM" @@ -1240,11 +1302,14 @@ int main () { case $host_cpu in i*86) - xorg_bus_ix86pci=yes + case $host_os in + darwin*) ;; + *) xorg_bus_ix86pci=yes ;; + esac ;; powerpc*) case $host_os in - linux*|freebsd*|netbsd*|openbsd*|kfreebsd*-gnu) + darwin*|linux*|freebsd*|netbsd*|openbsd*|kfreebsd*-gnu) ;; *) xorg_bus_ppcpci="yes" @@ -1257,7 +1322,7 @@ int main () { ;; x86_64*|amd64*) case $host_os in - freebsd*|kfreebsd*-gnu) + darwin*|freebsd*|kfreebsd*-gnu) # FreeBSD uses the system pci interface ;; *) @@ -1297,7 +1362,13 @@ int main () { GCC_WARNINGS="${GCC_WARNINGS} -Werror" fi XSERVER_CFLAGS="$GCC_WARNINGS $XSERVER_CFLAGS" - LD_EXPORT_SYMBOLS_FLAG="-rdynamic" + case $host_os in + darwin*) ;; # Symbols are exported by default, no need + # to do anything special. I think that the following + # is wrong anyway when using libtool. Should be using + # the libtool flag -export-dynamic? + *)LD_EXPORT_SYMBOLS_FLAG="-rdynamic" ;; + esac fi case $host_os in openbsd*) @@ -1338,6 +1409,26 @@ int main () { AC_SUBST([extdir]) AC_SUBST([logdir]) fi + +if test "x$XF86VIDMODE" = xyes; then + AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension]) +fi + +if test "x$XF86MISC" = xyes; then + AC_DEFINE(XF86MISC, 1, [Support XFree86 miscellaneous extensions]) +fi +# Support for objc in autotools is minimal and not documented. +OBJC='$(CC)' +OBJCLD='$(CCLD)' +OBJCLINK='$(LINK)' +OBJCFLAGS='$(CFLAGS)' +AC_SUBST([OBJC]) +AC_SUBST([OBJCCLD]) +AC_SUBST([OBJCLINK]) +AC_SUBST([OBJCFLAGS]) +# internal, undocumented automake func follows :( +_AM_DEPENDENCIES([OBJC]) + AM_CONDITIONAL([XORG], [test "x$XORG" = xyes]) AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes]) AM_CONDITIONAL([XORG_BUS_FREEBSDPCI], [test "x$xorg_bus_freebsdpci" = xyes]) @@ -1355,6 +1446,8 @@ AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes]) AM_CONDITIONAL(MFB, [test "x$XORG" = xyes]) AM_CONDITIONAL(CFB, [test "x$XORG" = xyes]) AM_CONDITIONAL(AFB, [test "x$XORG" = xyes]) +AM_CONDITIONAL([BUILD_DARWIN],[test "X$build_darwin" = Xyes]) +AM_CONDITIONAL([XQUARTZ],[test "X$XQUARTZ" = Xyes]) dnl Xprint DDX @@ -1364,7 +1457,7 @@ AC_MSG_RESULT([$XPRINT]) if test "x$XPRINT" = xyes; then PKG_CHECK_MODULES([XPRINT], [printproto x11 xfont $XDMCP_MODULES xau]) XPRINT_EXTENSIONS="$XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS" - XPRINT_LIBS="$XPRINT_LIBS $DIX_LIB $XKB_LIB $XKB_STUB_LIB $XPRINT_EXTENSIONS $MI_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB $OS_LIB" + XPRINT_LIBS="$DIX_LIB $XPRINT_LIBS $XKB_LIB $XKB_STUB_LIB $XPRINT_EXTENSIONS $MI_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB $OS_LIB" AC_SUBST([XPRINT_CFLAGS]) AC_SUBST([XPRINT_LIBS]) @@ -1409,7 +1502,6 @@ if test "x$XPRINT" = xyes; then fi AM_CONDITIONAL(XP_USE_FREETYPE, [test "x$XPRINT" = xyes && test "x$XP_USE_FREETYPE" = xyes]) - dnl XWin DDX AC_MSG_CHECKING([whether to build XWin DDX]) @@ -1595,8 +1687,11 @@ AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir]) AC_SUBST(XKB_COMPILED_DIR) +AM_CONDITIONAL(DGA, [test "x$DGA" = xyes]) +if test "x$DGA" = xyes; then + AC_DEFINE(DGA, 1, [Support DGA extension]) +fi dnl and the rest of these are generic, so they're in config.h -AC_DEFINE(XFreeXDGA, 1, [Build XDGA support]) AC_DEFINE(XResExtension, 1, [Build XRes extension]) AC_TRY_COMPILE([ @@ -1678,6 +1773,7 @@ XORG_RELEASE_VERSION AC_OUTPUT([ Makefile GL/Makefile +GL/apple/Makefile GL/glx/Makefile GL/mesa/Makefile GL/mesa/array_cache/Makefile @@ -1710,6 +1806,8 @@ miext/damage/Makefile miext/shadow/Makefile miext/cw/Makefile miext/rootless/Makefile +miext/rootless/safeAlpha/Makefile +miext/rootless/accel/Makefile os/Makefile randr/Makefile render/Makefile @@ -1786,6 +1884,22 @@ 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 +hw/darwin/quartz/xpr/Makefile +hw/darwin/utils/Makefile hw/kdrive/Makefile hw/kdrive/ati/Makefile hw/kdrive/chips/Makefile diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 560cc3a9f..54f3f33a9 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -235,7 +235,6 @@ glxMesa_la_DEPENDENCIES = XDarwinApp endif endif -if HAVE_X_PLUGIN xprplugindir = $(darwinappdir)/Contents/Resources/xpr.bundle/Contents/MacOS xprplugin_LTLIBRARIES = @@ -259,9 +258,6 @@ xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ -module -avoid-version -no-undefined xpr_la_DEPENDENCIES = XDarwinApp -endif - -if HAVE_AGL_FRAMEWORK glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS glxCGLplugin_LTLIBRARIES = glxCGL_la_SOURCES = @@ -293,10 +289,6 @@ glxAGL_la_LDFLAGS = -shrext '' \ -module -avoid-version -no-undefined glxAGL_la_DEPENDENCIES = XDarwinApp - - -endif - man1_MANS = XDarwin.man uninstall-hook: diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am index bc6d4fc29..0d236be8b 100644 --- a/hw/darwin/quartz/Makefile.am +++ b/hw/darwin/quartz/Makefile.am @@ -5,10 +5,9 @@ AM_OBJCFLAGS = @XORG_CFLAGS@ INCLUDES = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ AM_DEFS = -DHAS_CG_MACH_PORT -DHAS_KL_API -if HAVE_X_PLUGIN AM_DEFS += -DBUILD_XPR XPR = xpr -endif + DEFS = @DEFS@ $(AM_DEFS) -DXBINDIR=\"${bindir}\" SUBDIRS = cr fullscreen $(XPR) diff --git a/mi/miinitext.c b/mi/miinitext.c index 8fd8c9ce1..fa006740f 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -338,14 +338,16 @@ extern void XFree86DGAExtensionInit(INITARGS); #endif #ifdef GLXEXT typedef struct __GLXprovider __GLXprovider; -extern __GLXprovider __glXMesaProvider; -extern void GlxPushProvider(__GLXprovider *impl); -#ifndef __DARWIN__ -extern void GlxExtensionInit(INITARGS); -extern void GlxWrapInitVisuals(miInitVisualsProcPtr *); -#else +#if defined(__DARWIN__) && !defined(INXQUARTZ) +extern __GLXprovider* __DarwinglXMesaProvider; +extern void DarwinGlxPushProvider(__GLXprovider *impl); extern void DarwinGlxExtensionInit(INITARGS); extern void DarwinGlxWrapInitVisuals(miInitVisualsProcPtr *); +#else +extern __GLXprovider __glXMesaProvider; +extern void GlxPushProvider(__GLXprovider *impl); +extern void GlxExtensionInit(INITARGS); +extern void GlxWrapInitVisuals(miInitVisualsProcPtr *); #endif #endif #ifdef XF86DRI @@ -630,12 +632,12 @@ InitExtensions(argc, argv) #endif #endif #ifdef GLXEXT - - GlxPushProvider(&__glXMesaProvider); -#ifndef __DARWIN__ - if (!noGlxExtension) GlxExtensionInit(); -#else +#if defined(__DARWIN__) && !defined(INXQUARTZ) + DarwinGlxPushProvider(__DarwinglXMesaProvider); if (!noGlxExtension) DarwinGlxExtensionInit(); +#else + GlxPushProvider(&__glXMesaProvider); + if (!noGlxExtension) GlxExtensionInit(); #endif #endif #ifdef XFIXES diff --git a/miext/Makefile.am b/miext/Makefile.am index 4fa584b35..f138963b4 100644 --- a/miext/Makefile.am +++ b/miext/Makefile.am @@ -2,4 +2,7 @@ SUBDIRS = damage shadow if COMPOSITE SUBDIRS += cw endif +if XQUARTZ +SUBDIRS += rootless +endif DIST_SUBDIRS = damage shadow cw rootless diff --git a/miext/rootless/Makefile.am b/miext/rootless/Makefile.am index ecf762a64..8dae6d237 100644 --- a/miext/rootless/Makefile.am +++ b/miext/rootless/Makefile.am @@ -1,14 +1,13 @@ -EXTRA_DIST = \ - accel/rlAccel.c \ - accel/rlAccel.h \ - accel/rlBlt.c \ - accel/rlCopy.c \ - accel/rlFill.c \ - accel/rlFillRect.c \ - accel/rlFillSpans.c \ - accel/rlGlyph.c \ - accel/rlSolid.c \ - README.txt \ +AM_CFLAGS = \ + $(DIX_CFLAGS) \ + $(XORG_CFLAGS) + +INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support + +SUBDIRS = safeAlpha accel + +noinst_LTLIBRARIES = librootless.la +librootless_la_SOURCES = \ rootlessCommon.c \ rootlessCommon.h \ rootlessConfig.h \ @@ -17,7 +16,7 @@ EXTRA_DIST = \ rootlessScreen.c \ rootlessValTree.c \ rootlessWindow.c \ - rootlessWindow.h \ - safeAlpha/safeAlpha.h \ - safeAlpha/safeAlphaPicture.c \ - safeAlpha/safeAlphaWindow.c + rootlessWindow.h + +EXTRA_DIST = \ + README.txt diff --git a/miext/rootless/accel/Makefile.am b/miext/rootless/accel/Makefile.am new file mode 100644 index 000000000..c49d5fb47 --- /dev/null +++ b/miext/rootless/accel/Makefile.am @@ -0,0 +1,18 @@ +AM_CFLAGS = \ + $(DIX_CFLAGS) \ + $(XORG_CFLAGS) + +INCLUDES = -I$(srcdir)/.. -I$(top_srcdir)/hw/xfree86/os-support + + +noinst_LTLIBRARIES = librlAccel.la +librlAccel_la_SOURCES = rlAccel.c \ + rlBlt.c \ + rlCopy.c \ + rlFill.c \ + rlFillRect.c \ + rlFillSpans.c \ + rlGlyph.c \ + rlSolid.c + +EXTRA_DIST = rlAccel.h diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index e89ebf897..30b7daaab 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -33,6 +33,10 @@ #include #endif +#include /* For NULL */ +#include /* For CHAR_BIT */ +#include + #include "rootlessCommon.h" #include "rootlessWindow.h" @@ -325,8 +329,8 @@ RootlessEnsureFrame(WindowPtr pWin) RootlessWindowRec *winRec; #ifdef SHAPE RegionRec shape; - RegionPtr pShape = NULL; #endif + RegionPtr pShape = NULL; if (WINREC(pWin) != NULL) return WINREC(pWin); diff --git a/miext/rootless/safeAlpha/Makefile.am b/miext/rootless/safeAlpha/Makefile.am new file mode 100644 index 000000000..7592c1840 --- /dev/null +++ b/miext/rootless/safeAlpha/Makefile.am @@ -0,0 +1,12 @@ +AM_CFLAGS = \ + $(DIX_CFLAGS) \ + $(XORG_CFLAGS) + +INCLUDES = -I$(srcdir)/.. -I$(top_srcdir)/hw/xfree86/os-support + + +noinst_LTLIBRARIES = libsafeAlpha.la +libsafeAlpha_la_SOURCES = safeAlphaPicture.c \ + safeAlphaWindow.c + +EXTRA_DIST = safeAlpha.h diff --git a/miext/rootless/safeAlpha/safeAlphaPicture.c b/miext/rootless/safeAlpha/safeAlphaPicture.c index 8550cc01f..6ccc05a27 100644 --- a/miext/rootless/safeAlpha/safeAlphaPicture.c +++ b/miext/rootless/safeAlpha/safeAlphaPicture.c @@ -33,15 +33,19 @@ * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif #ifdef RENDER +#include /* For NULL */ #include "fb.h" #include "picturestr.h" #include "mipict.h" #include "fbpict.h" #include "safeAlpha.h" #include "rootlessCommon.h" - # define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b)) diff --git a/miext/rootless/safeAlpha/safeAlphaWindow.c b/miext/rootless/safeAlpha/safeAlphaWindow.c index 8884c107e..5226782fe 100644 --- a/miext/rootless/safeAlpha/safeAlphaWindow.c +++ b/miext/rootless/safeAlpha/safeAlphaWindow.c @@ -32,6 +32,10 @@ * Copyright © 1998 Keith Packard */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif #include "fb.h" #include "safeAlpha.h" #include "rootlessCommon.h" diff --git a/os/connection.c b/os/connection.c index 96ad11921..fb47f3d10 100644 --- a/os/connection.c +++ b/os/connection.c @@ -74,6 +74,7 @@ SOFTWARE. #define TRANS_SERVER #define TRANS_REOPEN #include +#include #include #include #include @@ -670,9 +671,15 @@ ClientAuthorized(ClientPtr client, XID auth_id; char *reason = NULL; XtransConnInfo trans_conn; - + struct sockaddr *saddr; priv = (OsCommPtr)client->osPrivate; trans_conn = priv->trans_conn; + saddr = (struct sockaddr *) (trans_conn->addr); + + /* Allow any client to connect without authorization on a launchd socket, + because it is securely created -- this prevents a race condition on launch */ + if (saddr->sa_len > 11 && saddr->sa_family == AF_UNIX && + !strncmp(saddr->sa_data, "/tmp/launch", 11)) goto done; auth_id = CheckAuthorization (proto_n, auth_proto, string_n, auth_string, client, &reason); @@ -721,6 +728,7 @@ ClientAuthorized(ClientPtr client, } } priv->auth_id = auth_id; +done: priv->conn_time = 0; #ifdef XDMCP From 1ffcc5371c27521736cdfbcf46999b07fe401d77 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 28 Oct 2007 17:22:16 -0700 Subject: [PATCH 07/74] more patches, autoconf fixes... --- GL/glx/indirect_dispatch_swap.c | 5 + GL/glx/indirect_program.c | 6 + GL/glx/indirect_texture_compression.c | 5 + GL/glx/indirect_util.c | 5 + GL/glx/swap_interval.c | 5 + configure.ac | 335 +++++++++++++++++--------- hw/darwin/Makefile.am | 13 +- hw/darwin/apple/X11Application.m | 2 - hw/darwin/darwin.c | 60 +++-- 9 files changed, 302 insertions(+), 134 deletions(-) diff --git a/GL/glx/indirect_dispatch_swap.c b/GL/glx/indirect_dispatch_swap.c index 9c58ef1cd..2adacb380 100644 --- a/GL/glx/indirect_dispatch_swap.c +++ b/GL/glx/indirect_dispatch_swap.c @@ -35,6 +35,11 @@ #define bswap_16 __swap16 #define bswap_32 __swap32 #define bswap_64 __swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 #else #include #define bswap_16 bswap16 diff --git a/GL/glx/indirect_program.c b/GL/glx/indirect_program.c index d0fd3d135..94c207e35 100644 --- a/GL/glx/indirect_program.c +++ b/GL/glx/indirect_program.c @@ -53,6 +53,12 @@ #define bswap_16 __swap16 #define bswap_32 __swap32 #define bswap_64 __swap64 + #define bswap_64 __swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 #else #include #define bswap_16 bswap16 diff --git a/GL/glx/indirect_texture_compression.c b/GL/glx/indirect_texture_compression.c index 0c42ea034..d1881e9b6 100644 --- a/GL/glx/indirect_texture_compression.c +++ b/GL/glx/indirect_texture_compression.c @@ -46,6 +46,11 @@ #define bswap_16 __swap16 #define bswap_32 __swap32 #define bswap_64 __swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 #else #include #define bswap_16 bswap16 diff --git a/GL/glx/indirect_util.c b/GL/glx/indirect_util.c index 09b7ab87c..efc84c78d 100644 --- a/GL/glx/indirect_util.c +++ b/GL/glx/indirect_util.c @@ -35,6 +35,11 @@ #define bswap_16 __swap16 #define bswap_32 __swap32 #define bswap_64 __swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 #else #include #define bswap_16 bswap16 diff --git a/GL/glx/swap_interval.c b/GL/glx/swap_interval.c index bcc1c4793..55bb07bb3 100644 --- a/GL/glx/swap_interval.c +++ b/GL/glx/swap_interval.c @@ -47,6 +47,11 @@ #define bswap_16 __swap16 #define bswap_32 __swap32 #define bswap_64 __swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 #else #include #define bswap_16 bswap16 diff --git a/configure.ac b/configure.ac index a515a3345..1f1a8dcea 100644 --- a/configure.ac +++ b/configure.ac @@ -1,24 +1,27 @@ -dnl $Id$ +dnl Copyright © 2003-2007 Keith Packard, Daniel Stone dnl -dnl Copyright © 2003-2005 Keith Packard, Daniel Stone +dnl Permission is hereby granted, free of charge, to any person obtaining a +dnl copy of this software and associated documentation files (the "Software"), +dnl to deal in the Software without restriction, including without limitation +dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, +dnl and/or sell copies of the Software, and to permit persons to whom the +dnl Software is furnished to do so, subject to the following conditions: dnl -dnl Permission to use, copy, modify, distribute, and sell this software and its -dnl documentation for any purpose is hereby granted without fee, provided that -dnl the above copyright notice appear in all copies and that both that -dnl copyright notice and this permission notice appear in supporting -dnl documentation, and that the names of Keith Packard and Daniel Stone not be -dnl used in advertising or publicity pertaining to distribution of the software -dnl without specific, written prior permission. Keith Packard and Daniel Stone -dnl make no representations about the suitability of this software for any -dnl purpose. It is provided "as is" without express or implied warranty. +dnl The above copyright notice and this permission notice (including the next +dnl paragraph) shall be included in all copies or substantial portions of the +dnl Software. dnl -dnl KEITH PACKARD AND DANIEL STONE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS -dnl SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -dnl IN NO EVENT SHALL KEITH PACKARD OR DANIEL STONE BE LIABLE FOR ANY SPECIAL, -dnl INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -dnl LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -dnl OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -dnl PERFORMANCE OF THIS SOFTWARE. +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +dnl DEALINGS IN THE SOFTWARE. +dnl +dnl Authors: Keith Packard +dnl Daniel Stone +dnl an unwitting cast of miscellaneous others dnl dnl Process this file with autoconf to create configure. @@ -67,6 +70,8 @@ AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h]) +AC_CHECK_PROG(HAVE_LAUNCHD, [launchd], [yes], []) + dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_BIGENDIAN([ENDIAN="X_BIG_ENDIAN"], [ENDIAN="X_LITTLE_ENDIAN"]) @@ -78,6 +83,67 @@ fi AC_TYPE_PID_T +# Checks for headers/macros for byte swapping +# Known variants: +# bswap_16, bswap_32, bswap_64 (glibc) +# __swap16, __swap32, __swap64 (OpenBSD) +# bswap16, bswap32, bswap64 (other BSD's) +# and a fallback to local macros if none of the above are found + +# if is found, assume it's the correct version +AC_CHECK_HEADERS([byteswap.h]) + +# if is found, have to check which version +AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"]) + +if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then + AC_MSG_CHECKING([for __swap16 variant of byteswapping macros]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([ +#include + ], [ +int a = 1, b; +b = __swap16(a); + ]) +], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no']) + AC_MSG_RESULT([$SYS_ENDIAN__SWAP]) + + AC_MSG_CHECKING([for bswap16 variant of byteswapping macros]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([ +#include + ], [ +int a = 1, b; +b = bswap16(a); + ]) +], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no']) + AC_MSG_RESULT([$SYS_ENDIAN_BSWAP]) + + if test "$SYS_ENDIAN_BSWAP" = "yes" ; then + USE_SYS_ENDIAN_H=yes + BSWAP=bswap + else + if test "$SYS_ENDIAN__SWAP" = "yes" ; then + USE_SYS_ENDIAN_H=yes + BSWAP=__swap + else + USE_SYS_ENDIAN_H=no + fi + fi + + if test "$USE_SYS_ENDIAN_H" = "yes" ; then + AC_DEFINE([USE_SYS_ENDIAN_H], 1, + [Define to use byteswap macros from ]) + AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16, + [Define to 16-bit byteswap macro]) + AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32, + [Define to 32-bit byteswap macro]) + AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64, + [Define to 64-bit byteswap macro]) + fi +fi + +AC_CHECK_FUNC([dlopen], [], + AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl")) + dnl Checks for library functions. AC_FUNC_VPRINTF AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \ @@ -86,23 +152,25 @@ AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \ AC_FUNC_ALLOCA dnl Old HAS_* names used in os/*.c. AC_CHECK_FUNC([getdtablesize], - AC_DEFINE(HAS_GETDTABLESIZE, 1, [Have the `getdtablesize' function.])) + AC_DEFINE(HAS_GETDTABLESIZE, 1, [Have the 'getdtablesize' function.])) AC_CHECK_FUNC([getifaddrs], - AC_DEFINE(HAS_GETIFADDRS, 1, [Have the `getifaddrs' function.])) + AC_DEFINE(HAS_GETIFADDRS, 1, [Have the 'getifaddrs' function.])) AC_CHECK_FUNC([getpeereid], - AC_DEFINE(HAS_GETPEEREID, 1, [Have the `getpeereid' function.])) + AC_DEFINE(HAS_GETPEEREID, 1, [Have the 'getpeereid' function.])) AC_CHECK_FUNC([getpeerucred], - AC_DEFINE(HAS_GETPEERUCRED, 1, [Have the `getpeerucred' function.])) + AC_DEFINE(HAS_GETPEERUCRED, 1, [Have the 'getpeerucred' function.])) AC_CHECK_FUNC([strlcat], HAVE_STRLCAT=yes, HAVE_STRLCAT=no) AM_CONDITIONAL(NEED_STRLCAT, [test x$HAVE_STRLCAT = xno]) +AC_CHECK_FUNC([strlcpy], AC_DEFINE(HAS_STRLCPY, 1, [Have the 'strlcpy' function])) AM_CONDITIONAL(NEED_VSNPRINTF, [test x$HAVE_VSNPRINTF = xno]) dnl Check for mmap support for Xvfb -AC_CHECK_FUNC([mmap], AC_DEFINE(HAS_MMAP, 1, [Have the `mmap' function.])) +AC_CHECK_FUNC([mmap], AC_DEFINE(HAS_MMAP, 1, [Have the 'mmap' function.])) dnl Find the math libary AC_CHECK_LIB(m, sqrt) +AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT, 1, [Have the 'cbrt' function])) AC_CHECK_HEADERS([ndbm.h dbm.h rpcsvc/dbm.h]) @@ -198,9 +266,10 @@ case $host_cpu in ARM_VIDEO=yes ;; i*86) - use_x86_asm="no" + use_x86_asm="yes" I386_VIDEO=yes case $host_os in + darwin*) use_x86_asm="no" ;; *linux*) DEFAULT_INT10=vm86 ;; *freebsd*) AC_DEFINE(USE_DEV_IO) ;; *netbsd*) AC_DEFINE(USE_I386_IOPL) @@ -223,9 +292,10 @@ case $host_cpu in BSD_ARCH_SOURCES="sparc64_video.c ioperm_noop.c" ;; x86_64*|amd64*) - use_x86_asm="no" + use_x86_asm="yes" I386_VIDEO=yes case $host_os in + darwin*) use_x86_asm="no" ;; *freebsd*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;; *netbsd*) AC_DEFINE(USE_I386_IOPL, 1, [BSD i386 iopl]) SYS_LIBS=-lx86_64 @@ -407,7 +477,6 @@ AC_ARG_ENABLE(xres, AS_HELP_STRING([--disable-xres], [Build XRes exten AC_ARG_ENABLE(xtrap, AS_HELP_STRING([--disable-xtrap], [Build XTrap extension (default: enabled)]), [XTRAP=$enableval], [XTRAP=yes]) AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes]) AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes]) -AC_ARG_ENABLE(quartz, AS_HELP_STRING([--enable-quartz], [Build with darwin quartz support (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes]) AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: enabled)]), [DGA=$enableval], [DGA=yes]) AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes]) @@ -418,9 +487,9 @@ AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build accelerate AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX with TLS support (default: disabled)]), [GLX_USE_TLS=$enableval], [GLX_USE_TLS=no]) AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval]) AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes]) -AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: enabled)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=yes]) -AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: enabled)]), [XF86MISC=$enableval], [XF86MISC=yes]) -AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes]) +AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto]) +AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: auto)]), [XF86MISC=$enableval], [XF86MISC=auto]) +AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes]) AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE]) AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY]) AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no]) @@ -438,11 +507,15 @@ AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build dnl DDXes. AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) -AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto]) -AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes]) -AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) +AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no]) +AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: no)]), [XVFB=$enableval], [XVFB=no]) +AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: no)]), [XNEST=$enableval], [XNEST=no]) +AC_ARG_ENABLE(xdarwin, AS_HELP_STRING([--enable-xdarwin], [Build XDarwin server (default: auto)]), [XDARWIN=$enableval], [XDARWIN=auto]) +AC_ARG_ENABLE(xdarwinapp, AS_HELP_STRING([--enable-xdarwinapp], [Build XDarwin.app server (default: no)]), [XDARWINAPP=$enableval], [XDARWINAPP=no]) +AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--disable-xquartz], [Build Xquartz server on Darwin (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) +AC_ARG_ENABLE(x11app, AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app wrapper for Xquartz (default: no)]), [X11APP=$enableval], [X11APP=no]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) -AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: auto)]), [XPRINT=$enableval], [XPRINT=auto]) +AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) AC_ARG_ENABLE(xglx, AS_HELP_STRING([--enable-xglx], [Build Xglx xgl module (default: no)]), [XGLX=$enableval], [XGLX=no]) AC_ARG_ENABLE(xegl, AS_HELP_STRING([--enable-xegl], [Build Xegl xgl module (default: no)]), [XEGL=$enableval], [XEGL=no]) @@ -1106,61 +1179,6 @@ dnl has it in libc), or if libdl is needed to get it. AC_CHECK_LIB([dl], [dlopen], XORG_LIBS="$XORG_LIBS -ldl")) case $host_os in - darwin*) - XORG_OS="Darwin" - build_darwin=yes - if test "X$XQUARTZ" = Xauto; then - AC_CACHE_CHECK([for Carbon framework],xorg_cv_Carbon_framework,[ - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -framework Carbon" - AC_LINK_IFELSE([char FSFindFolder(); -int main() { -FSFindFolder(); -return 0;} - ],[xorg_cv_Carbon_framework=yes], - [xorg_cv_Carbon_framework=no]) - LDFLAGS=$save_LDFLAGS]) - if test "X$xorg_cv_Carbon_framework" = Xyes; then - AC_DEFINE([DARWIN_WITH_QUARTZ],[1], - [Have Quartz]) - XQUARTZ=yes - else - XQUARTZ=no - fi - fi - AC_DEFINE(ROOTLESS,1,[Build Rootless code]) - AC_CACHE_CHECK([for AGL framework],xorg_cv_AGL_framework,[ - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -framework AGL" - AC_LINK_IFELSE([char aglEnable(); -int main() { -aglEnable(); -return 0;} - ],[xorg_cv_AGL_framework=yes], - [xorg_cv_AGL_framework=no]) - LDFLAGS=$save_LDFLAGS - ]) - AC_CHECK_LIB([Xplugin],[xp_init],[:]) - AC_SUBST([APPLE_APPLICATIONS_DIR]) - CFLAGS="${CFLAGS} -D__DARWIN__" - PLIST_VERSION_STRING=$VENDOR_VERSION_STRING - AC_SUBST([PLIST_VERSION_STRING]) - PLIST_VENDOR_WEB=$VENDOR_WEB - AC_SUBST([PLIST_VENDOR_WEB]) - # Not sure that we should be disabling all these... - if test "x$XF86MISC" = xyes; then - AC_MSG_NOTICE([Disabling XF86Misc extension]) - XF86MISC=no - fi - if test "x$XF86VIDMODE" = xyes; then - AC_MSG_NOTICE([Disabling XF86VidMode extension]) - XF86VIDMODE=no - fi - if test "x$DGA" = xyes; then - AC_MSG_NOTICE([Disabling DGA extension]) - DGA=no - fi - ;; linux*) if test "x$LNXAPM" = xyes; then XORG_CFLAGS="$XORG_CFLAGS -DXF86PM" @@ -1335,6 +1353,40 @@ int main () { if test "x$XORG_OS_PCI" = x ; then XORG_OS_PCI=$XORG_OS fi + if test "x$DGA" = xauto; then + PKG_CHECK_MODULES(DGA, xf86dgaproto, [DGA=yes], [DGA=no]) + fi + if test "x$DGA" = xyes; then + XORG_MODULES="$XORG_MODULES xf86dgaproto" + PKG_CHECK_MODULES(DGA, xf86dgaproto) + AC_DEFINE(DGA, 1, [Support DGA extension]) + AC_DEFINE(XFreeXDGA, 1, [Build XDGA support]) + fi + + if test "x$XF86MISC" = xauto; then + PKG_CHECK_MODULES(XF86MISC, xf86miscproto, [XF86MISC=yes], [XF86MISC=no]) + fi + if test "x$XF86MISC" = xyes; then + XORG_MODULES="$XORG_MODULES xf86miscproto" + PKG_CHECK_MODULES(XF86MISC, xf86miscproto) + AC_DEFINE(XF86MISC, 1, [Support XFree86 miscellaneous extensions]) + fi + + if test "x$XF86VIDMODE" = xauto; then + PKG_CHECK_MODULES(XF86VIDMODE, xf86vidmodeproto, [XF86VIDMODE=yes], [XF86VIDMODE=no]) + fi + if test "x$XF86VIDMODE" = xyes; then + XORG_MODULES="$XORG_MODULES xf86vidmodeproto" + PKG_CHECK_MODULES(XF86VIDMODE, xf86vidmodeproto) + AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension]) + fi + + if test -n "$XORG_MODULES"; then + PKG_CHECK_MODULES(XORG_MODULES, [$XORG_MODULES]) + XORG_CFLAGS="$XORG_CFLAGS $XORG_MODULES_CFLAGS" + XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS" + fi + AC_SUBST([XORG_LIBS]) AC_SUBST([XORG_INCS]) AC_SUBST([XORG_OS]) @@ -1409,26 +1461,6 @@ int main () { AC_SUBST([extdir]) AC_SUBST([logdir]) fi - -if test "x$XF86VIDMODE" = xyes; then - AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension]) -fi - -if test "x$XF86MISC" = xyes; then - AC_DEFINE(XF86MISC, 1, [Support XFree86 miscellaneous extensions]) -fi -# Support for objc in autotools is minimal and not documented. -OBJC='$(CC)' -OBJCLD='$(CCLD)' -OBJCLINK='$(LINK)' -OBJCFLAGS='$(CFLAGS)' -AC_SUBST([OBJC]) -AC_SUBST([OBJCCLD]) -AC_SUBST([OBJCLINK]) -AC_SUBST([OBJCFLAGS]) -# internal, undocumented automake func follows :( -_AM_DEPENDENCIES([OBJC]) - AM_CONDITIONAL([XORG], [test "x$XORG" = xyes]) AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes]) AM_CONDITIONAL([XORG_BUS_FREEBSDPCI], [test "x$xorg_bus_freebsdpci" = xyes]) @@ -1570,10 +1602,95 @@ AM_CONDITIONAL(XWIN_PRIMARYFB, [test "x$XWIN" = xyes && false]) AM_CONDITIONAL(XWIN_RANDR, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes]) +dnl Darwin / OS X DDX +AC_MSG_CHECKING([whether to build XDarwin (Mac OS X) DDX]) +if test "x$XDARWIN" = xauto; then + case $host_os in + darwin*) XDARWIN="yes" ;; + *) XDARWIN="no" ;; + esac +fi +AC_MSG_RESULT([$XDARWIN]) + +if test "x$XDARWIN" = xyes; then + if test "X$XQUARTZ" = Xauto; then + AC_CACHE_CHECK([for Carbon framework],xorg_cv_Carbon_framework,[ + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -framework Carbon" + AC_LINK_IFELSE([char FSFindFolder(); +int main() { +FSFindFolder(); +return 0;} + ],[xorg_cv_Carbon_framework=yes], + [xorg_cv_Carbon_framework=no]) + LDFLAGS=$save_LDFLAGS]) + if test "X$xorg_cv_Carbon_framework" = Xyes; then + AC_DEFINE([DARWIN_WITH_QUARTZ],[1], + [Have Quartz]) + XQUARTZ=yes + else + XQUARTZ=no + fi + fi +# glxAGL / glxCGL don't work yet +# AC_CACHE_CHECK([for AGL framework],xorg_cv_AGL_framework,[ +# save_LDFLAGS=$LDFLAGS +# LDFLAGS="$LDFLAGS -framework AGL" +# AC_LINK_IFELSE([char aglEnable(); +#int main() { +#aglEnable(); +#return 0;} +# ],[xorg_cv_AGL_framework=yes], +# [xorg_cv_AGL_framework=no]) +# LDFLAGS=$save_LDFLAGS +# ]) + xorg_cv_AGL_framework=no + DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB" + AC_SUBST([DARWIN_LIBS]) + AC_CHECK_LIB([Xplugin],[xp_init],[:]) + AC_SUBST([APPLE_APPLICATIONS_DIR]) + CFLAGS="${CFLAGS} -D__DARWIN__" + PLIST_VERSION_STRING=$PACKAGE_VERSION + AC_SUBST([PLIST_VERSION_STRING]) + PLIST_VENDOR_WEB=$VENDOR_WEB + AC_SUBST([PLIST_VENDOR_WEB]) + if test "x$XF86MISC" = xyes || test "x$XF86MISC" = xauto; then + AC_MSG_NOTICE([Disabling XF86Misc extension]) + XF86MISC=no + fi + if test "x$XF86VIDMODE" = xyes || test "x$XF86VIDMODE" = xauto; then + AC_MSG_NOTICE([Disabling XF86VidMode extension]) + XF86VIDMODE=no + fi + if test "x$XF86BIGFONT" = xyes || test "x$XF86BIGFONT" = xauto; then + AC_MSG_NOTICE([Disabling XF86BigFont extension]) + XF86BIGFONT=no + fi + if test "x$DGA" = xyes || test "x$DGA" = xauto; then + AC_MSG_NOTICE([Disabling DGA extension]) + DGA=no + fi +fi +# Support for objc in autotools is minimal and not documented. +OBJC='$(CC)' +OBJCLD='$(CCLD)' +OBJCLINK='$(LINK)' +OBJCFLAGS='$(CFLAGS)' +AC_SUBST([OBJC]) +AC_SUBST([OBJCCLD]) +AC_SUBST([OBJCLINK]) +AC_SUBST([OBJCFLAGS]) +# internal, undocumented automake func follows :( +_AM_DEPENDENCIES([OBJC]) +AM_CONDITIONAL(HAVE_XPLUGIN, [test "x$ac_cv_lib_Xplugin_xp_init" = xyes]) +AM_CONDITIONAL(HAVE_AGL_FRAMEWORK, [test "x$xorg_cv_AGL_framework" = xyes]) +AM_CONDITIONAL(XDARWIN, [test "x$XDARWIN" = xyes]) +AM_CONDITIONAL(XDARWINAPP, [test "x$XDARWINAPP" = xyes]) +AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes]) dnl kdrive DDX -XEYPHR_LIBS= +XEPHYR_LIBS= XEPHYR_INCS= XSDL_LIBS= XSDL_INCS= diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 54f3f33a9..aa4fbeea6 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -79,8 +79,7 @@ XDarwin_LDADD = \ $(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 + $(XSERVER_LIBS) Xquartz_LDADD = \ $(top_builddir)/dix/dixfonts.lo \ @@ -90,6 +89,7 @@ Xquartz_LDADD = \ $(top_builddir)/dix/libxpstubs.la \ $(top_builddir)/miext/shadow/libshadow.la \ $(top_builddir)/fb/libfb.la \ + $(top_builddir)/mi/libmi.la \ $(top_builddir)/composite/libcomposite.la \ $(top_builddir)/damageext/libdamageext.la \ $(top_builddir)/miext/damage/libdamage.la \ @@ -105,8 +105,7 @@ Xquartz_LDADD = \ $(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 + $(XSERVER_LIBS) XDarwin_LDFLAGS = \ -XCClinker -Objc \ @@ -258,6 +257,8 @@ xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ -module -avoid-version -no-undefined xpr_la_DEPENDENCIES = XDarwinApp + +if HAVE_AGL_FRAMEWORK glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS glxCGLplugin_LTLIBRARIES = glxCGL_la_SOURCES = @@ -289,6 +290,10 @@ glxAGL_la_LDFLAGS = -shrext '' \ -module -avoid-version -no-undefined glxAGL_la_DEPENDENCIES = XDarwinApp + + +endif + man1_MANS = XDarwin.man uninstall-hook: diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 9ae470e46..a4adc05a0 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -43,8 +43,6 @@ # include "micmap.h" #undef BOOL -#include "xf86Version.h" - #include #include #include diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index c3b21c17e..5500a5f29 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -6,6 +6,7 @@ **************************************************************/ /* * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. + * Copyright (c) 2007 Apple Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -30,9 +31,7 @@ * use or other dealings in this Software without prior written authorization. */ -#ifdef HAVE_XORG_CONFIG_H -#include -#endif +#include #include #include @@ -46,8 +45,6 @@ #include "fb.h" // fb framebuffer code #include "site.h" #include "globals.h" -#include "xorgVersion.h" -#include "xf86Date.h" #include "dix.h" #ifdef XINPUT @@ -83,6 +80,7 @@ int darwinScreenIndex = 0; io_connect_t darwinParamConnect = 0; int darwinEventReadFD = -1; int darwinEventWriteFD = -1; +// int darwinMouseAccelChange = 1; int darwinFakeButtons = 0; // location of X11's (0,0) point in global screen coordinates @@ -129,13 +127,21 @@ const int NUMFORMATS = sizeof(formats)/sizeof(formats[0]); #ifndef BUILD_DATE #define BUILD_DATE "" #endif +#ifndef XORG_RELEASE +#define XORG_RELEASE "?" +#endif + +void DDXRingBell(int volume, int pitch, int duration) { + // FIXME -- make some noise, yo +} void -DarwinPrintBanner() -{ +DarwinPrintBanner(void) +{ + // this should change depending on which specific server we are building ErrorF("X11.app starting:\n"); ErrorF("Xquartz server based on X.org %s, built on %s\n", XORG_RELEASE, BUILD_DATE ); - } +} /* @@ -301,6 +307,29 @@ static Bool DarwinAddScreen( ============================================================================= */ +#if 0 +/* + * DarwinChangePointerControl + * Set mouse acceleration and thresholding + * FIXME: We currently ignore the threshold in ctrl->threshold. + */ +static void DarwinChangePointerControl( + DeviceIntPtr device, + PtrCtrl *ctrl ) +{ + kern_return_t kr; + double acceleration; + + if (!darwinMouseAccelChange) + return; + + acceleration = ctrl->num / ctrl->den; + kr = IOHIDSetMouseAcceleration( darwinParamConnect, acceleration ); + if (kr != KERN_SUCCESS) + ErrorF( "Could not set mouse acceleration with kernel return = 0x%x.\n", kr ); +} +#endif + /* * DarwinMouseProc * Handle the initialization, etc. of a mouse @@ -549,8 +578,8 @@ DarwinAdjustScreenOrigins(ScreenInfo *pScreenInfo) for (i = 0; i < pScreenInfo->numScreens; i++) { dixScreenOrigins[i].x -= darwinMainScreenX; dixScreenOrigins[i].y -= darwinMainScreenY; - /* ErrorF("Screen %d placed at X11 coordinate (%d,%d).\n", - i, dixScreenOrigins[i].x, dixScreenOrigins[i].y); */ + /* ErrorF("Screen %d placed at X11 coordinate (%d,%d).\n", + i, dixScreenOrigins[i].x, dixScreenOrigins[i].y); */ } } } @@ -627,14 +656,10 @@ void OsVendorInit(void) if ( !tempStr ) { ErrorF("Could not find keymapping file %s.\n", darwinKeymapFile); } else { - ErrorF("Using keymapping provided in %s.\n", tempStr); + ErrorF("Using keymapping provided in %s.\n", tempStr); } darwinKeymapFile = tempStr; } - - if ( !darwinKeymapFile ) { - // ErrorF("Reading keymap from the system.\n"); - } } @@ -832,7 +857,7 @@ void ddxUseMsg( void ) */ void ddxGiveUp( void ) { - ErrorF( "Quitting Xquartz...\n" ); + ErrorF( "Quitting XQuartz...\n" ); DarwinModeGiveUp(); } @@ -855,7 +880,6 @@ void AbortDDX( void ) } -#ifdef DPMSExtension /* * DPMS extension stubs */ @@ -872,8 +896,6 @@ int DPMSGet(int *level) { return -1; } -#endif - #include "mivalidate.h" // for union _Validate used by windowstr.h #include "windowstr.h" // for struct _Window From 5d1193aa3153653d679fd2d0aba61dc4964f098d Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 29 Oct 2007 00:07:29 -0700 Subject: [PATCH 08/74] finished committing downstream changes --- GL/Makefile.am | 11 ++--------- configure.ac | 2 +- dix/dixfonts.c | 4 ++-- hw/Makefile.am | 11 ++--------- hw/darwin/Makefile.am | 5 +++-- hw/darwin/quartz/quartzKeyboard.c | 3 ++- 6 files changed, 12 insertions(+), 24 deletions(-) diff --git a/GL/Makefile.am b/GL/Makefile.am index b9337ba69..4e8337a7c 100644 --- a/GL/Makefile.am +++ b/GL/Makefile.am @@ -1,16 +1,9 @@ -SUBDIRS = glx mesa +SUBDIRS = glx mesa apple -# someone could get really crazy someday and add support for the SI... - -# xwin/darwin/xfree86 have their accel support under the DDX - -APPLE_EXTRAS = \ - apple/aglGlx.c \ - apple/indirect.c WINDOWS_EXTRAS = \ windows/ChangeLog \ windows/glwindows.h \ windows/glwrap.c \ windows/indirect.c -EXTRA_DIST = symlink-mesa.sh $(APPLE_EXTRAS) $(WINDOWS_EXTRAS) +EXTRA_DIST = symlink-mesa.sh $(WINDOWS_EXTRAS) diff --git a/configure.ac b/configure.ac index 1f1a8dcea..72cd2e55a 100644 --- a/configure.ac +++ b/configure.ac @@ -1649,7 +1649,7 @@ return 0;} AC_SUBST([DARWIN_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) AC_SUBST([APPLE_APPLICATIONS_DIR]) - CFLAGS="${CFLAGS} -D__DARWIN__" + CFLAGS="${CFLAGS} -D__DARWIN__ -DDARWIN_WITH_QUARTZ" PLIST_VERSION_STRING=$PACKAGE_VERSION AC_SUBST([PLIST_VERSION_STRING]) PLIST_VENDOR_WEB=$VENDOR_WEB diff --git a/dix/dixfonts.c b/dix/dixfonts.c index f10011e4b..e085bd0c7 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -1632,9 +1632,9 @@ FreeFontPath(FontPathElementPtr *list, int n, Bool force) found++; } if (list[i]->refcount != found) { - ErrorF("FreeFontPath: FPE \"%.*s\" refcount is %d, should be %d; fixing.\n", + /* ErrorF("FreeFontPath: FPE \"%.*s\" refcount is %d, should be %d; fixing.\n", list[i]->name_length, list[i]->name, - list[i]->refcount, found); + list[i]->refcount, found); */ list[i]->refcount = found; /* ensure it will get freed */ } } diff --git a/hw/Makefile.am b/hw/Makefile.am index d00d6fb3f..a1918ab0e 100644 --- a/hw/Makefile.am +++ b/hw/Makefile.am @@ -1,11 +1,3 @@ -if DMX -DMX_SUBDIRS = dmx -endif - -if XORG -XORG_SUBDIRS = xfree86 -endif - if XVFB XVFB_SUBDIRS = vfb endif @@ -30,7 +22,7 @@ if XPRINT XPRINT_SUBDIRS = xprint endif -# need to add darwin support here +DARWIN_SUBDIRS = darwin SUBDIRS = \ $(XORG_SUBDIRS) \ @@ -40,6 +32,7 @@ SUBDIRS = \ $(XNEST_SUBDIRS) \ $(DMX_SUBDIRS) \ $(KDRIVE_SUBDIRS) \ + $(DARWIN_SUBDIRS) \ $(XPRINT_SUBDIRS) DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl xprint diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index aa4fbeea6..9222f5786 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -1,6 +1,7 @@ noinst_LIBRARIES = libdarwinShared.a libdarwin_XINPUT_SRCS = darwinXinput.c +# -O2 inexplicably causes quartzKeyboard.o to break?! AM_CFLAGS = @XORG_CFLAGS@ INCLUDES = @XORG_INCS@ -I../../miext/rootless @@ -79,7 +80,7 @@ XDarwin_LDADD = \ $(top_builddir)/miext/rootless/librootless.la \ $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ $(top_builddir)/miext/rootless/accel/librlAccel.la \ - $(XSERVER_LIBS) + $(XSERVER_LIBS) -lXplugin Xquartz_LDADD = \ $(top_builddir)/dix/dixfonts.lo \ @@ -105,7 +106,7 @@ Xquartz_LDADD = \ $(top_builddir)/miext/rootless/librootless.la \ $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ $(top_builddir)/miext/rootless/accel/librlAccel.la \ - $(XSERVER_LIBS) + $(DARWIN_LIBS) $(XSERVER_LIBS) -lXplugin XDarwin_LDFLAGS = \ -XCClinker -Objc \ diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index b330793b8..f9c596370 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -166,7 +166,8 @@ DarwinModeSystemKeymapSeed (void) return seed; } -static inline UniChar +//static inline UniChar +UniChar macroman2ucs (unsigned char c) { /* Precalculated table mapping MacRoman-128 to Unicode. Generated From 353d0de660bbb00b298efe59ba24b3196e087d39 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 29 Oct 2007 16:15:22 -0700 Subject: [PATCH 09/74] Some autoconf hacks to make 'make dist' work correctly --- configure.ac | 1 - hw/xfree86/os-support/Makefile.am | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 72cd2e55a..d63b68137 100644 --- a/configure.ac +++ b/configure.ac @@ -1959,7 +1959,6 @@ hw/xfree86/os-support/misc/Makefile hw/xfree86/os-support/linux/Makefile hw/xfree86/os-support/lynxos/Makefile hw/xfree86/os-support/sco/Makefile -hw/xfree86/os-support/solaris/Makefile hw/xfree86/os-support/sysv/Makefile hw/xfree86/os-support/usl/Makefile hw/xfree86/parser/Makefile diff --git a/hw/xfree86/os-support/Makefile.am b/hw/xfree86/os-support/Makefile.am index 6cd9bb190..f40a662d6 100644 --- a/hw/xfree86/os-support/Makefile.am +++ b/hw/xfree86/os-support/Makefile.am @@ -1,5 +1,5 @@ SUBDIRS = bus @XORG_OS_SUBDIR@ misc -DIST_SUBDIRS = bsd bus misc linux lynxos solaris sysv sco usl hurd +DIST_SUBDIRS = bsd bus misc linux lynxos sysv sco usl hurd sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h xf86_ansic.h xf86_libc.h \ assyntax.h xf86OSKbd.h xf86OSmouse.h From 2c8e36ecd16bd7fea83f3adbd5bef9fef8587f44 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 29 Oct 2007 16:18:48 -0700 Subject: [PATCH 10/74] Added patch fix yellow-cursor problem which appears on some Intel Macs --- hw/darwin/quartz/xpr/xprCursor.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c index 570ef0bb2..02260bd43 100644 --- a/hw/darwin/quartz/xpr/xprCursor.c +++ b/hw/darwin/quartz/xpr/xprCursor.c @@ -83,8 +83,17 @@ load_cursor(CursorPtr src, int screen) #ifdef ARGB_CURSOR if (src->bits->argb != NULL) { - rowbytes = src->bits->width * sizeof(CARD32); +#if BITMAP_BIT_ORDER == MSBFirst + rowbytes = src->bits->width * sizeof (CARD32); data = (uint32_t *) src->bits->argb; +#else + const uint32_t *be_data=(uint32_t *) src->bits->argb; + unsigned i; + rowbytes = src->bits->width * sizeof (CARD32); + data=alloca (rowbytes * src->bits->height); + for(i=0;i<(src->bits->width*src->bits->height);i++) + data[i]=ntohl(be_data[i]); +#endif } else #endif From 6b6b1d09bff6b31a57bc02a3887a54f4ef8c6cb2 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 29 Oct 2007 18:11:10 -0700 Subject: [PATCH 11/74] make dist fixes --- hw/darwin/Makefile.am | 12 ++++++++++++ hw/darwin/bundle/Makefile.am | 1 + hw/darwin/quartz/xpr/Makefile.am | 2 ++ hw/darwin/utils/Makefile.am | 1 + 4 files changed, 16 insertions(+) diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 9222f5786..bfde6f6f1 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -314,4 +314,16 @@ EXTRA_DIST = \ darwinKeyboard.c \ darwinKeyboard.h \ darwinXinput.c \ + apple/X11Application.h \ + apple/X11Controller.h \ + apple/Info.plist \ + apple/X11.icns \ + apple/Xquartz.man \ + apple/bundle-main.c \ + apple/English.lproj/InfoPlist.strings \ + apple/English.lproj/Localizable.strings \ + apple/English.lproj/main.nib/classes.nib \ + apple/English.lproj/main.nib/info.nib \ + apple/English.lproj/main.nib/keyedobjects.nib \ + apple/X11.xcodeproj/project.pbxproj \ XDarwin.man diff --git a/hw/darwin/bundle/Makefile.am b/hw/darwin/bundle/Makefile.am index dee34fd83..f02be74e1 100644 --- a/hw/darwin/bundle/Makefile.am +++ b/hw/darwin/bundle/Makefile.am @@ -35,4 +35,5 @@ CLEANFILES = startXClients EXTRA_DIST = \ XDarwin.icns \ + startXClients.cpp \ Info.plist diff --git a/hw/darwin/quartz/xpr/Makefile.am b/hw/darwin/quartz/xpr/Makefile.am index 980c7a4d6..7ebcba7bb 100644 --- a/hw/darwin/quartz/xpr/Makefile.am +++ b/hw/darwin/quartz/xpr/Makefile.am @@ -22,6 +22,8 @@ xprbundledir = @APPLE_APPLICATIONS_DIR@/Resources/xpr.bundle/Contents/MacOS EXTRA_DIST = \ dri.h \ dristruct.h \ + appledri.h \ + appledristr.h \ x-hash.h \ x-hook.h \ x-list.h \ diff --git a/hw/darwin/utils/Makefile.am b/hw/darwin/utils/Makefile.am index 92bf151cb..76cb7933d 100644 --- a/hw/darwin/utils/Makefile.am +++ b/hw/darwin/utils/Makefile.am @@ -8,5 +8,6 @@ man1_MANS = dumpkeymap.man EXTRA_DIST = \ README.txt \ + event_status_driver.h \ dumpkeymap.man From bb8eae78d58ddcd475b3c2145e39baec7953775d Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Tue, 30 Oct 2007 19:05:02 -0700 Subject: [PATCH 12/74] Enable PseudoramiX extension by default, like on the old server --- hw/darwin/quartz/quartz.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index ac555ecd7..422bd17cf 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -63,7 +63,7 @@ int quartzServerVisible = TRUE; int quartzServerQuitting = FALSE; int quartzScreenIndex = 0; int aquaMenuBarHeight = 0; -int noPseudoramiXExtension = TRUE; +int noPseudoramiXExtension = FALSE; QuartzModeProcsPtr quartzProcs = NULL; const char *quartzOpenGLBundle = NULL; From 54a552c94e6facf37fa94993889e49ed24bd68e0 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Tue, 30 Oct 2007 20:00:21 -0700 Subject: [PATCH 13/74] DIX Fix: QueryFontReply packets can be too big to be allocated on the stack --- dix/dispatch.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index 05795407f..bd9136fa3 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -1366,7 +1366,7 @@ ProcQueryFont(register ClientPtr client) rlength = sizeof(xQueryFontReply) + FONTINFONPROPS(FONTCHARSET(pFont)) * sizeof(xFontProp) + nprotoxcistructs * sizeof(xCharInfo); - reply = (xQueryFontReply *)ALLOCATE_LOCAL(rlength); + reply = (xQueryFontReply *)xalloc(rlength); if(!reply) { return(BadAlloc); @@ -1378,7 +1378,7 @@ ProcQueryFont(register ClientPtr client) QueryFont( pFont, reply, nprotoxcistructs); WriteReplyToClient(client, rlength, reply); - DEALLOCATE_LOCAL(reply); + xfree(reply); return(client->noClientException); } } @@ -2203,7 +2203,7 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable, length += widthBytesLine; } } - if(!(pBuf = (char *) ALLOCATE_LOCAL(length))) + if(!(pBuf = (char *)xalloc(length))) return (BadAlloc); WriteReplyToClient(client, sizeof (xGetImageReply), &xgi); } @@ -2312,7 +2312,7 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable, REGION_DESTROY(pDraw->pScreen, pVisibleRegion); #endif if (!im_return) - DEALLOCATE_LOCAL(pBuf); + xfree(pBuf); return (client->noClientException); } From e306e8760f2caebd38c4d96c30f029a965f23b76 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 03:22:18 -0700 Subject: [PATCH 14/74] Workaround for a bug where the holding down Command to make a "fake" button 2 click would actually result in a Command-2 chord. (I.e. it wasn't releasing Command before clicking the fake button.) --- hw/darwin/darwinEvents.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index 6b4f72721..fc79da8cd 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -162,6 +162,9 @@ static void DarwinSimulateMouseClick( int modifierMask) // modifiers used for the fake click { // first fool X into forgetting about the keys + // for some reason, it's not enough to tell X we released the Command key -- + // it has to be the *left* Command key. + if (modifierMask & NX_COMMANDMASK) modifierMask |=NX_DEVICELCMDKEYMASK ; DarwinUpdateModifiers(xe, KeyRelease, modifierMask); // push the mouse button From 9cf83386e828e38fca2a164dee322e9208ec8fd6 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 03:39:47 -0700 Subject: [PATCH 15/74] Trap Deactivate messages and release modifiers to avoid "stuck shift lock" (etc) bugs --- hw/darwin/darwinEvents.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index fc79da8cd..6293d6b55 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -143,6 +143,16 @@ static void DarwinUpdateModifiers( } } +/* + * DarwinReleaseModifiers + * This hacky function releases all modifier keys. It should be called when X11.app + * is deactivated (kXDarwinDeactivate) to prevent modifiers from getting stuck if they + * are held down during a "context" switch -- otherwise, we would miss the KeyUp. + */ +static void DarwinReleaseModifiers(void) { + xEvent e; + DarwinUpdateModifiers(&e, KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1)); +} /* * DarwinSimulateMouseClick @@ -467,6 +477,9 @@ void ProcessInputEvents(void) break; } + case kXDarwinDeactivate: + DarwinReleaseModifiers(); + // fall through default: // Check for mode specific event DarwinModeProcessEvent(&xe); From 6b293e9204492d131a9f9330ebb2e247fcec8a09 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 04:08:06 -0700 Subject: [PATCH 16/74] fix incorrectly formatted .xinitrc warning --- hw/darwin/apple/X11Application.m | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index a4adc05a0..afd495bd6 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -895,12 +895,11 @@ check_xinitrc (void) /* FIXME: put localized strings into Resources/English.lproj */ - msg = NSLocalizedString ( - @"You have an existing ~/.xinitrc file.\n\n\ - Windows displayed by X11 applications may not have titlebars, or may look \ - different to windows displayed by native applications.\n\n\ - Would you like to move aside the existing file and use the standard X11 \ - environment?", @"Startup xinitrc dialog"); + msg = NSLocalizedString (@"You have an existing ~/.xinitrc file.\n\n\ +Windows displayed by X11 applications may not have titlebars, or may look \ +different to windows displayed by native applications.\n\n\ +Would you like to move aside the existing file and use the standard X11 \ +environment?", @"Startup xinitrc dialog"); if (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Yes", @""), NSLocalizedString (@"No", @""), nil) From 26e84bcd52ad633c6b5261501f39cd225d84ef82 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 04:09:32 -0700 Subject: [PATCH 17/74] fixed bug that prevented customized Applications menu items with arguments from working --- hw/darwin/apple/X11Controller.m | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/darwin/apple/X11Controller.m b/hw/darwin/apple/X11Controller.m index cc039b115..a6a75d0ab 100644 --- a/hw/darwin/apple/X11Controller.m +++ b/hw/darwin/apple/X11Controller.m @@ -296,15 +296,17 @@ - (void) launch_client:(NSString *)filename { const char *command = [filename UTF8String]; - const char *argv[5]; + const char *argv[7]; int child1, child2 = 0; int status; argv[0] = "/usr/bin/login"; argv[1] = "-fp"; argv[2] = getlogin(); - argv[3] = command; - argv[4] = NULL; + argv[3] = "/bin/sh"; + argv[4] = "-c"; + argv[5] = command; + argv[6] = NULL; /* Do the fork-twice trick to avoid having to reap zombies */ From a3f72edee84bca4e817948205b656e00fa869c4e Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 16:17:06 -0700 Subject: [PATCH 18/74] add -DROOTLESS_WORKAROUND to CFLAGS --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index d63b68137..f2ac551cc 100644 --- a/configure.ac +++ b/configure.ac @@ -1649,7 +1649,7 @@ return 0;} AC_SUBST([DARWIN_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) AC_SUBST([APPLE_APPLICATIONS_DIR]) - CFLAGS="${CFLAGS} -D__DARWIN__ -DDARWIN_WITH_QUARTZ" + CFLAGS="${CFLAGS} -D__DARWIN__ -DDARWIN_WITH_QUARTZ -DROOTLESS_WORKAROUND" PLIST_VERSION_STRING=$PACKAGE_VERSION AC_SUBST([PLIST_VERSION_STRING]) PLIST_VENDOR_WEB=$VENDOR_WEB From 6479d4e01ea98701892d453ac41cf50e21194330 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 16:19:46 -0700 Subject: [PATCH 19/74] fixed an uninitialized variable, which caused keyboard breakage on x86 when building with optimization enabled. --- hw/darwin/quartz/quartzKeyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index f9c596370..3ecee3ac1 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -220,7 +220,7 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) const void *chr_data = NULL; int num_keycodes = NUM_KEYCODES; UInt32 keyboard_type = 0; - int is_uchr, i, j; + int is_uchr = 0, i, j; OSStatus err; KeySym *k; From 11259dc8c94db780ec1a6b5438a37c4b57b7d780 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 23:45:58 -0700 Subject: [PATCH 20/74] default for is_uchr should be 1, not 0 --- hw/darwin/quartz/quartzKeyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index 3ecee3ac1..60f73e5b1 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -220,7 +220,7 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) const void *chr_data = NULL; int num_keycodes = NUM_KEYCODES; UInt32 keyboard_type = 0; - int is_uchr = 0, i, j; + int is_uchr = 1, i, j; OSStatus err; KeySym *k; From bac801abf259b2d2013e1817960057249c9280b2 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 23:46:50 -0700 Subject: [PATCH 21/74] Swap modifier keys for buttons 2 and 3 -- now Option-click is the middle click --- hw/darwin/darwin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index 5500a5f29..52fd17046 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -96,8 +96,8 @@ int darwinSyncKeymap = FALSE; int darwinSwapAltMeta = FALSE; // modifier masks for faking mouse buttons -int darwinFakeMouse2Mask = NX_COMMANDMASK; -int darwinFakeMouse3Mask = NX_ALTERNATEMASK; +int darwinFakeMouse2Mask = NX_ALTERNATEMASK; +int darwinFakeMouse3Mask = NX_COMMANDMASK; // devices DeviceIntPtr darwinPointer = NULL; From a6f038d2f4b455cb2f1376f55f08d04bb9b6ab0f Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 31 Oct 2007 23:51:28 -0700 Subject: [PATCH 22/74] bump version to 1.2a3 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index f2ac551cc..b9b88891f 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index afd495bd6..fe18214e4 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a3)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From a8910527b0966b2417abbe61df7f2d5516c07a94 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 2 Nov 2007 02:59:29 -0700 Subject: [PATCH 23/74] Fix for focus issue: X11 menu bar uncoupled from X11 application's windows Credit to William Mortensen for submitting the first community patch! --- hw/darwin/apple/X11Application.m | 5 +---- hw/darwin/darwin.h | 1 + hw/darwin/quartz/quartz.c | 4 ++++ miext/rootless/rootless.h | 4 ++++ miext/rootless/rootlessWindow.c | 26 ++++++++++++++++++++++++++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index fe18214e4..ccdc072db 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -360,10 +360,7 @@ message_kit_thread (SEL selector, NSObject *arg) - (void) set_front_process:unused { - [NSApp activateIgnoringOtherApps:YES]; - - if ([self modalWindow] == nil) - [self activateX:YES]; + QuartzMessageServerThread(kXDarwinBringAllToFront, 0); } - (void) set_can_quit:(NSNumber *)state diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h index 48a2224f1..93ad3ab5c 100644 --- a/hw/darwin/darwin.h +++ b/hw/darwin/darwin.h @@ -137,6 +137,7 @@ enum { kXDarwinQuit, // kill the X server and release the display kXDarwinReadPasteboard, // copy Mac OS X pasteboard into X cut buffer kXDarwinWritePasteboard, // copy X cut buffer onto Mac OS X pasteboard + kXDarwinBringAllToFront, // bring all X windows to front /* * AppleWM events */ diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 422bd17cf..8670e57f9 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -395,6 +395,10 @@ void DarwinModeProcessEvent( QuartzUpdateScreens(); break; + case kXDarwinBringAllToFront: + RootlessOrderAllWindows(); + break; + case kXDarwinWindowState: case kXDarwinWindowMoved: // FIXME: Not implemented yet diff --git a/miext/rootless/rootless.h b/miext/rootless/rootless.h index f83defeb6..d9fdb6adb 100644 --- a/miext/rootless/rootless.h +++ b/miext/rootless/rootless.h @@ -432,4 +432,8 @@ void RootlessUpdateScreenPixmap(ScreenPtr pScreen); */ void RootlessRepositionWindows(ScreenPtr pScreen); +/* + * Bring all windows to the front of the Aqua stack + */ +void RootlessOrderAllWindows (void); #endif /* _ROOTLESS_H */ diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 30b7daaab..1e06d2c11 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -1468,3 +1468,29 @@ RootlessChangeBorderWidth(WindowPtr pWin, unsigned int width) RL_DEBUG_MSG("change border width end\n"); } + +/* + * RootlessOrderAllWindows + * Brings all X11 windows to the top of the window stack + * (i.e in front of Aqua windows) -- called when X11.app is given focus + */ +void +RootlessOrderAllWindows (void) +{ + int i; + WindowPtr pWin; + + RL_DEBUG_MSG("RootlessOrderAllWindows() "); + for (i = 0; i < screenInfo.numScreens; i++) { + if (screenInfo.screens[i] == NULL) continue; + pWin = WindowTable[i]; + if (pWin == NULL) continue; + + for (pWin = pWin->firstChild; pWin != NULL; pWin = pWin->nextSib) { + if (!pWin->realized) continue; + if (RootlessEnsureFrame(pWin) == NULL) continue; + RootlessReorderWindow (pWin); + } + } + RL_DEBUG_MSG("RootlessOrderAllWindows() done"); +} From d2766aeb85cdd80448d5fe4e1aa48e631fff6abc Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 2 Nov 2007 15:19:39 -0700 Subject: [PATCH 24/74] Imported a fix from xserver/master which was part of a larger refactoring of fbComposite code. This part fixes a logic error in SafeAlphaComposite where some return paths resulted in the server changing the color depth of a Drawable out from under the client. This caused random crashes in many cairo/pango/gtk apps. Props to Guy Harris for tracking this down in WireShark, but it will probably solve problems in other apps (Inkscape, Gimp?) --- fb/fbpict.c | 117 +++- fb/fbpict.h | 31 ++ miext/rootless/safeAlpha/safeAlphaPicture.c | 559 +++----------------- 3 files changed, 197 insertions(+), 510 deletions(-) diff --git a/fb/fbpict.c b/fb/fbpict.c index 613e652e9..5f7289ad2 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -37,19 +37,6 @@ #include "fbpict.h" #include "fbmmx.h" -typedef void (*CompositeFunc) (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height); - CARD32 fbOver (CARD32 x, CARD32 y) { @@ -825,6 +812,110 @@ fbCompositeSolidMask_nx1xn (CARD8 op, # define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b)) +void +fbWalkCompositeRegion (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height, + Bool srcRepeat, + Bool maskRepeat, + CompositeFunc compositeRect) +{ + RegionRec region; + int n; + BoxPtr pbox; + int w, h, w_this, h_this; + int x_msk, y_msk, x_src, y_src, x_dst, y_dst; + + xDst += pDst->pDrawable->x; + yDst += pDst->pDrawable->y; + if (pSrc->pDrawable) + { + xSrc += pSrc->pDrawable->x; + ySrc += pSrc->pDrawable->y; + } + if (pMask && pMask->pDrawable) + { + xMask += pMask->pDrawable->x; + yMask += pMask->pDrawable->y; + } + + if (!miComputeCompositeRegion (®ion, pSrc, pMask, pDst, xSrc, ySrc, + xMask, yMask, xDst, yDst, width, height)) + return; + + n = REGION_NUM_RECTS (®ion); + pbox = REGION_RECTS (®ion); + while (n--) + { + h = pbox->y2 - pbox->y1; + y_src = pbox->y1 - yDst + ySrc; + y_msk = pbox->y1 - yDst + yMask; + y_dst = pbox->y1; + while (h) + { + h_this = h; + w = pbox->x2 - pbox->x1; + x_src = pbox->x1 - xDst + xSrc; + x_msk = pbox->x1 - xDst + xMask; + x_dst = pbox->x1; + if (maskRepeat) + { + y_msk = mod (y_msk - pMask->pDrawable->y, pMask->pDrawable->height); + if (h_this > pMask->pDrawable->height - y_msk) + h_this = pMask->pDrawable->height - y_msk; + y_msk += pMask->pDrawable->y; + } + if (srcRepeat) + { + y_src = mod (y_src - pSrc->pDrawable->y, pSrc->pDrawable->height); + if (h_this > pSrc->pDrawable->height - y_src) + h_this = pSrc->pDrawable->height - y_src; + y_src += pSrc->pDrawable->y; + } + while (w) + { + w_this = w; + if (maskRepeat) + { + x_msk = mod (x_msk - pMask->pDrawable->x, pMask->pDrawable->width); + if (w_this > pMask->pDrawable->width - x_msk) + w_this = pMask->pDrawable->width - x_msk; + x_msk += pMask->pDrawable->x; + } + if (srcRepeat) + { + x_src = mod (x_src - pSrc->pDrawable->x, pSrc->pDrawable->width); + if (w_this > pSrc->pDrawable->width - x_src) + w_this = pSrc->pDrawable->width - x_src; + x_src += pSrc->pDrawable->x; + } + (*compositeRect) (op, pSrc, pMask, pDst, + x_src, y_src, x_msk, y_msk, x_dst, y_dst, + w_this, h_this); + w -= w_this; + x_src += w_this; + x_msk += w_this; + x_dst += w_this; + } + h -= h_this; + y_src += h_this; + y_msk += h_this; + y_dst += h_this; + } + pbox++; + } + REGION_UNINIT (pDst->pDrawable->pScreen, ®ion); +} + void fbComposite (CARD8 op, PicturePtr pSrc, diff --git a/fb/fbpict.h b/fb/fbpict.h index 179a07dca..bf8813fee 100644 --- a/fb/fbpict.h +++ b/fb/fbpict.h @@ -621,6 +621,37 @@ fbComposite (CARD8 op, CARD16 width, CARD16 height); + +typedef void (*CompositeFunc) (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height); + +void +fbWalkCompositeRegion (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height, + Bool srcRepeat, + Bool maskRepeat, + CompositeFunc compositeRect); + /* fbtrap.c */ void diff --git a/miext/rootless/safeAlpha/safeAlphaPicture.c b/miext/rootless/safeAlpha/safeAlphaPicture.c index 6ccc05a27..8f6631531 100644 --- a/miext/rootless/safeAlpha/safeAlphaPicture.c +++ b/miext/rootless/safeAlpha/safeAlphaPicture.c @@ -48,21 +48,6 @@ #include "rootlessCommon.h" # define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b)) - -typedef void (*CompositeFunc) (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height); - - /* Optimized version of fbCompositeSolidMask_nx8x8888 */ void SafeAlphaCompositeSolidMask_nx8x8888( @@ -148,499 +133,79 @@ SafeAlphaCompositeSolidMask_nx8x8888( } void -SafeAlphaComposite (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height) +SafeAlphaComposite (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) { - RegionRec region; - int n; - BoxPtr pbox; - CompositeFunc func = 0; - Bool srcRepeat = pSrc->repeat; - Bool maskRepeat = FALSE; - Bool srcAlphaMap = pSrc->alphaMap != 0; - Bool maskAlphaMap = FALSE; - Bool dstAlphaMap = pDst->alphaMap != 0; - int x_msk, y_msk, x_src, y_src, x_dst, y_dst; - int w, h, w_this, h_this; - int dstDepth = pDst->pDrawable->depth; - int oldFormat = pDst->format; + if (!pSrc) { + ErrorF("SafeAlphaComposite: pSrc must not be null!\n"); + return; + } - xDst += pDst->pDrawable->x; - yDst += pDst->pDrawable->y; - xSrc += pSrc->pDrawable->x; - ySrc += pSrc->pDrawable->y; - if (pMask) + if (!pDst) { + ErrorF("SafeAlphaComposite: pDst must not be null!\n"); + return; + } + + int oldDepth = pDst->pDrawable->depth; + int oldFormat = pDst->format; + + /* + * We can use the more optimized fbpict code, but it sets bits above + * the depth to zero. Temporarily adjust destination depth if needed. + */ + if (pDst->pDrawable->type == DRAWABLE_WINDOW + && pDst->pDrawable->depth == 24 + && pDst->pDrawable->bitsPerPixel == 32) { - xMask += pMask->pDrawable->x; - yMask += pMask->pDrawable->y; - maskRepeat = pMask->repeat; - maskAlphaMap = pMask->alphaMap != 0; + pDst->pDrawable->depth = 32; } - - - /* - * We can use the more optimized fbpict code, but it sets bits above - * the depth to zero. Temporarily adjust destination depth if needed. - */ - if (pDst->pDrawable->type == DRAWABLE_WINDOW - && pDst->pDrawable->depth == 24 - && pDst->pDrawable->bitsPerPixel == 32) + + /* For rootless preserve the alpha in x8r8g8b8 which really is + * a8r8g8b8 + */ + if (oldFormat == PICT_x8r8g8b8) { - pDst->pDrawable->depth = 32; + pDst->format = PICT_a8r8g8b8; } - /* For rootless preserve the alpha in x8r8g8b8 which really is - * a8r8g8b8 - */ - if (oldFormat == PICT_x8r8g8b8) + + if (pSrc->pDrawable && pMask && pMask->pDrawable && + !pSrc->transform && !pMask->transform && + !pSrc->alphaMap && !pMask->alphaMap && + !pMask->repeat && !pMask->componentAlpha && !pDst->alphaMap && + pMask->format == PICT_a8 && + pSrc->repeatType == RepeatNormal && + pSrc->pDrawable->width == 1 && + pSrc->pDrawable->height == 1 && + (pDst->format == PICT_a8r8g8b8 || + pDst->format == PICT_x8r8g8b8 || + pDst->format == PICT_a8b8g8r8 || + pDst->format == PICT_x8b8g8r8)) { - pDst->format = PICT_a8r8g8b8; + fbWalkCompositeRegion (op, pSrc, pMask, pDst, + xSrc, ySrc, xMask, yMask, xDst, yDst, + width, height, + TRUE /* srcRepeat */, + FALSE /* maskRepeat */, + SafeAlphaCompositeSolidMask_nx8x8888); } - - - - if (!pSrc->transform && !(pMask && pMask->transform)) - if (!maskAlphaMap && !srcAlphaMap && !dstAlphaMap) - switch (op) { - case PictOpSrc: -#ifdef USE_MMX - if (!pMask && pSrc->format == pDst->format && - pSrc->pDrawable != pDst->pDrawable) - { - func = fbCompositeCopyAreammx; - } -#endif - break; - case PictOpOver: - if (pMask) - { - if (srcRepeat && - pSrc->pDrawable->width == 1 && - pSrc->pDrawable->height == 1) - { - srcRepeat = FALSE; - if (PICT_FORMAT_COLOR(pSrc->format)) { - switch (pMask->format) { - case PICT_a8: - switch (pDst->format) { - case PICT_r5g6b5: - case PICT_b5g6r5: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSolidMask_nx8x0565mmx; - else -#endif - func = fbCompositeSolidMask_nx8x0565; - break; - case PICT_r8g8b8: - case PICT_b8g8r8: - func = fbCompositeSolidMask_nx8x0888; - break; - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: - case PICT_a8b8g8r8: - case PICT_x8b8g8r8: - func = SafeAlphaCompositeSolidMask_nx8x8888; - break; - } - break; - case PICT_a8r8g8b8: - if (pMask->componentAlpha) { - switch (pDst->format) { - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSolidMask_nx8888x8888Cmmx; - else -#endif - func = fbCompositeSolidMask_nx8888x8888C; - break; - case PICT_r5g6b5: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSolidMask_nx8888x0565Cmmx; - else -#endif - func = fbCompositeSolidMask_nx8888x0565C; - break; - } - } - break; - case PICT_a8b8g8r8: - if (pMask->componentAlpha) { - switch (pDst->format) { - case PICT_a8b8g8r8: - case PICT_x8b8g8r8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSolidMask_nx8888x8888Cmmx; - else -#endif - func = fbCompositeSolidMask_nx8888x8888C; - break; - case PICT_b5g6r5: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSolidMask_nx8888x0565Cmmx; - else -#endif - func = fbCompositeSolidMask_nx8888x0565C; - break; - } - } - break; - case PICT_a1: - switch (pDst->format) { - case PICT_r5g6b5: - case PICT_b5g6r5: - case PICT_r8g8b8: - case PICT_b8g8r8: - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: - case PICT_a8b8g8r8: - case PICT_x8b8g8r8: - func = fbCompositeSolidMask_nx1xn; - break; - } - break; - } - } - } - else /* has mask and non-repeating source */ - { - if (pSrc->pDrawable == pMask->pDrawable && - xSrc == xMask && ySrc == yMask && - !pMask->componentAlpha) - { - /* source == mask: non-premultiplied data */ - switch (pSrc->format) { - case PICT_x8b8g8r8: - switch (pMask->format) { - case PICT_a8r8g8b8: - case PICT_a8b8g8r8: - switch (pDst->format) { - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888RevNPx8888mmx; -#endif - break; - case PICT_r5g6b5: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888RevNPx0565mmx; -#endif - break; - } - break; - } - break; - case PICT_x8r8g8b8: - switch (pMask->format) { - case PICT_a8r8g8b8: - case PICT_a8b8g8r8: - switch (pDst->format) { - case PICT_a8b8g8r8: - case PICT_x8b8g8r8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888RevNPx8888mmx; -#endif - break; - case PICT_r5g6b5: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888RevNPx0565mmx; -#endif - break; - } - break; - } - break; - } - break; - } - else - { - /* non-repeating source, repeating mask => translucent window */ - if (maskRepeat && - pMask->pDrawable->width == 1 && - pMask->pDrawable->height == 1) - { - if (pSrc->format == PICT_x8r8g8b8 && - pDst->format == PICT_x8r8g8b8 && - pMask->format == PICT_a8) - { -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888x8x8888mmx; -#endif - } - } - } - } - } - else /* no mask */ - { - if (srcRepeat && - pSrc->pDrawable->width == 1 && - pSrc->pDrawable->height == 1) - { - /* no mask and repeating source */ - switch (pSrc->format) { - case PICT_a8r8g8b8: - switch (pDst->format) { - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: -#ifdef USE_MMX - if (fbHaveMMX()) - { - srcRepeat = FALSE; - func = fbCompositeSolid_nx8888mmx; - } -#endif - break; - case PICT_r5g6b5: -#ifdef USE_MMX - if (fbHaveMMX()) - { - srcRepeat = FALSE; - func = fbCompositeSolid_nx0565mmx; - } -#endif - break; - } - break; - } - } - else - { - switch (pSrc->format) { - case PICT_a8r8g8b8: - switch (pDst->format) { - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888x8888mmx; - else -#endif - func = fbCompositeSrc_8888x8888; - break; - case PICT_r8g8b8: - func = fbCompositeSrc_8888x0888; - break; - case PICT_r5g6b5: - func = fbCompositeSrc_8888x0565; - break; - } - break; - case PICT_x8r8g8b8: - switch (pDst->format) { - case PICT_a8r8g8b8: - case PICT_x8r8g8b8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeCopyAreammx; -#endif - break; - } - case PICT_x8b8g8r8: - switch (pDst->format) { - case PICT_a8b8g8r8: - case PICT_x8b8g8r8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeCopyAreammx; -#endif - break; - } - break; - case PICT_a8b8g8r8: - switch (pDst->format) { - case PICT_a8b8g8r8: - case PICT_x8b8g8r8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrc_8888x8888mmx; - else -#endif - func = fbCompositeSrc_8888x8888; - break; - case PICT_b8g8r8: - func = fbCompositeSrc_8888x0888; - break; - case PICT_b5g6r5: - func = fbCompositeSrc_8888x0565; - break; - } - break; - case PICT_r5g6b5: - switch (pDst->format) { - case PICT_r5g6b5: - func = fbCompositeSrc_0565x0565; - break; - } - break; - case PICT_b5g6r5: - switch (pDst->format) { - case PICT_b5g6r5: - func = fbCompositeSrc_0565x0565; - break; - } - break; - } - } - } - break; - case PictOpAdd: - if (pMask == 0) - { - switch (pSrc->format) { - case PICT_a8r8g8b8: - switch (pDst->format) { - case PICT_a8r8g8b8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrcAdd_8888x8888mmx; - else -#endif - func = fbCompositeSrcAdd_8888x8888; - break; - } - break; - case PICT_a8b8g8r8: - switch (pDst->format) { - case PICT_a8b8g8r8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrcAdd_8888x8888mmx; - else -#endif - func = fbCompositeSrcAdd_8888x8888; - break; - } - break; - case PICT_a8: - switch (pDst->format) { - case PICT_a8: -#ifdef USE_MMX - if (fbHaveMMX()) - func = fbCompositeSrcAdd_8000x8000mmx; - else -#endif - func = fbCompositeSrcAdd_8000x8000; - break; - } - break; - case PICT_a1: - switch (pDst->format) { - case PICT_a1: - func = fbCompositeSrcAdd_1000x1000; - break; - } - break; - } - } - break; - } - - if (!func) { - /* no fast path, use the general code */ - fbCompositeGeneral(op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst, yDst, width, height); - // Reset destination depth and format to their true value - pDst->pDrawable->depth = dstDepth; - pDst->format = oldFormat; - return; - } - - if (!miComputeCompositeRegion (®ion, - pSrc, - pMask, - pDst, - xSrc, - ySrc, - xMask, - yMask, - xDst, - yDst, - width, - height)) - return; - - n = REGION_NUM_RECTS (®ion); - pbox = REGION_RECTS (®ion); - while (n--) + else { - h = pbox->y2 - pbox->y1; - y_src = pbox->y1 - yDst + ySrc; - y_msk = pbox->y1 - yDst + yMask; - y_dst = pbox->y1; - while (h) - { - h_this = h; - w = pbox->x2 - pbox->x1; - x_src = pbox->x1 - xDst + xSrc; - x_msk = pbox->x1 - xDst + xMask; - x_dst = pbox->x1; - if (maskRepeat) - { - y_msk = mod (y_msk, pMask->pDrawable->height); - if (h_this > pMask->pDrawable->height - y_msk) - h_this = pMask->pDrawable->height - y_msk; - } - if (srcRepeat) - { - y_src = mod (y_src, pSrc->pDrawable->height); - if (h_this > pSrc->pDrawable->height - y_src) - h_this = pSrc->pDrawable->height - y_src; - } - while (w) - { - w_this = w; - if (maskRepeat) - { - x_msk = mod (x_msk, pMask->pDrawable->width); - if (w_this > pMask->pDrawable->width - x_msk) - w_this = pMask->pDrawable->width - x_msk; - } - if (srcRepeat) - { - x_src = mod (x_src, pSrc->pDrawable->width); - if (w_this > pSrc->pDrawable->width - x_src) - w_this = pSrc->pDrawable->width - x_src; - } - (*func) (op, pSrc, pMask, pDst, - x_src, y_src, x_msk, y_msk, x_dst, y_dst, - w_this, h_this); - w -= w_this; - x_src += w_this; - x_msk += w_this; - x_dst += w_this; - } - h -= h_this; - y_src += h_this; - y_msk += h_this; - y_dst += h_this; - } - pbox++; + fbComposite (op, pSrc, pMask, pDst, + xSrc, ySrc, xMask, yMask, xDst, yDst, width, height); } - REGION_UNINIT (pDst->pDrawable->pScreen, ®ion); - // Reset destination depth/format to its true value - pDst->pDrawable->depth = dstDepth; - pDst->format = oldFormat; + pDst->pDrawable->depth = oldDepth; + pDst->format = oldFormat; } #endif /* RENDER */ From 4d88b18daa033c26de0265877be49e088c7bbb33 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 3 Nov 2007 02:05:34 -0700 Subject: [PATCH 25/74] bumped version to 1.2a4 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index b9b88891f..cfa7614cb 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index ccdc072db..9dba46cc7 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a3)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a4)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From 4393d10c2268a245288f2ae1c532b9a0b97f2021 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 3 Nov 2007 05:34:19 -0700 Subject: [PATCH 26/74] Initial support for Spaces -- if you use Expose to drag an X11 window to another Space, it will work correctly (as opposed to just leaving a ghost window). We accomplish this by listening for the notification from Xplugin that our window has been moved, and then we ask X11 to move the window to the new location. --- hw/darwin/quartz/quartz.c | 13 ++++++++++--- hw/darwin/quartz/xpr/xprFrame.c | 5 +++-- hw/darwin/quartz/xpr/xprScreen.c | 14 ++++++++++++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 8670e57f9..a24aeb1b4 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -400,9 +400,16 @@ void DarwinModeProcessEvent( break; case kXDarwinWindowState: - case kXDarwinWindowMoved: - // FIXME: Not implemented yet - break; + ErrorF("kXDarwinWindowState\n"); + break; + case kXDarwinWindowMoved: { + WindowPtr pWin = (WindowPtr)xe->u.clientMessage.u.l.longs0; + short x = xe->u.clientMessage.u.l.longs1, + y = xe->u.clientMessage.u.l.longs2; + ErrorF("kXDarwinWindowMoved(%p, %hd, %hd)\n", pWin, x, y); + RootlessMoveWindow(pWin, x, y, pWin->nextSib, VTMove); + } + break; default: ErrorF("Unknown application defined event type %d.\n", diff --git a/hw/darwin/quartz/xpr/xprFrame.c b/hw/darwin/quartz/xpr/xprFrame.c index 0e3b200e7..53fbb31f9 100644 --- a/hw/darwin/quartz/xpr/xprFrame.c +++ b/hw/darwin/quartz/xpr/xprFrame.c @@ -68,6 +68,7 @@ static inline xp_error xprConfigureWindow(xp_window_id id, unsigned int mask, const xp_window_changes *values) { + // ErrorF("xprConfigureWindow()\n"); if (!no_configure_window) return xp_configure_window(id, mask, values); else @@ -185,7 +186,7 @@ xprMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY) wc.x = newX; wc.y = newY; - + // ErrorF("xprMoveFrame(%d, %p, %d, %d)\n", wid, pScreen, newX, newY); xprConfigureWindow((xp_window_id) wid, XP_ORIGIN, &wc); } @@ -411,7 +412,7 @@ xprInit(ScreenPtr pScreen) * Given the id of a physical window, try to find the top-level (or root) * X window that it represents. */ -static WindowPtr +WindowPtr xprGetXWindow(xp_window_id wid) { RootlessWindowRec *winRec; diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 92886fcd8..9284d5d14 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -61,10 +61,12 @@ eventHandler(unsigned int type, const void *arg, switch (type) { case XP_EVENT_DISPLAY_CHANGED: + // ErrorF("XP_EVENT_DISPLAY_MOVED\n"); QuartzMessageServerThread(kXDarwinDisplayChanged, 0); break; case XP_EVENT_WINDOW_STATE_CHANGED: + // ErrorF("XP_EVENT_WINDOW_STATE_CHANGED\n"); if (arg_size >= sizeof(xp_window_state_event)) { const xp_window_state_event *ws_arg = arg; @@ -75,16 +77,24 @@ eventHandler(unsigned int type, const void *arg, break; case XP_EVENT_WINDOW_MOVED: + // ErrorF("XP_EVENT_WINDOW_MOVED\n"); if (arg_size == sizeof(xp_window_id)) { xp_window_id id = * (xp_window_id *) arg; - - QuartzMessageServerThread(kXDarwinWindowMoved, 1, id); + WindowPtr pWin = xprGetXWindow(id); + BoxRec box; + xp_error retval = xp_get_window_bounds(id, &box); + if (retval != Success) { + ErrorF("Unable to find new bounds for window\n"); + break; + } + QuartzMessageServerThread(kXDarwinWindowMoved, 3, pWin, box.x1, box.y1); } break; case XP_EVENT_SURFACE_DESTROYED: case XP_EVENT_SURFACE_CHANGED: + // ErrorF("XP_EVENT_SURFACE_MOVED\n"); if (arg_size == sizeof(xp_surface_id)) { int kind; From 7f9859dc0b08be61fe37973b9aeda70b86ea2511 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sat, 3 Nov 2007 22:06:39 -0700 Subject: [PATCH 27/74] bump version to 1.2a5 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index cfa7614cb..76938ab7f 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a5, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 9dba46cc7..a8ba95fc4 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a4)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a5)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From a4842dfa5b57189487b103fe6165e3387995f7c1 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 4 Nov 2007 19:14:10 -0800 Subject: [PATCH 28/74] Disable deferred updates in xp_init to fix performance problems -- thanks to Eric Gouriou for pointing out the issue --- hw/darwin/quartz/xpr/xprScreen.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 9284d5d14..d84e64668 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -46,10 +46,13 @@ # include "damage.h" #endif +/* 10.4's deferred update makes X slower.. have to live with the tearing + for now.. */ +#define XP_NO_DEFERRED_UPDATES 8 + // Name of GLX bundle for native OpenGL static const char *xprOpenGLBundle = "glxCGL.bundle"; - /* * eventHandler * Callback handler for Xplugin events. @@ -230,7 +233,7 @@ xprDisplayInit(void) else darwinScreensFound = 1; - if (xp_init(XP_IN_BACKGROUND) != Success) + if (xp_init(XP_IN_BACKGROUND | XP_NO_DEFERRED_UPDATES) != Success) { FatalError("Could not initialize the Xplugin library."); } From c1c84e56d9258f8b5d111a382de61d4cd51be6c3 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 4 Nov 2007 19:14:40 -0800 Subject: [PATCH 29/74] bump version to 1.2a6 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- hw/xfree86/scanpci/pciid2c.pl | 0 3 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 hw/xfree86/scanpci/pciid2c.pl diff --git a/configure.ac b/configure.ac index 76938ab7f..a65288f92 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a5, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a6, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index a8ba95fc4..bd6b062be 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a5)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a6)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; diff --git a/hw/xfree86/scanpci/pciid2c.pl b/hw/xfree86/scanpci/pciid2c.pl old mode 100644 new mode 100755 From a7de560b8df679b60bc683618310a5559b471ef4 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 5 Nov 2007 20:01:34 -0800 Subject: [PATCH 30/74] Fixed logic error that prevent JIS (Japanese) keyboard layouts from being detected. --- hw/darwin/quartz/quartzKeyboard.c | 51 +++++++++++++------------------ 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index 60f73e5b1..10fca0e87 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -225,36 +225,27 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) KeySym *k; TISInputSourceRef currentKeyLayoutRef = TISCopyCurrentKeyboardLayoutInputSource(); - if (currentKeyLayoutRef) - { - CFDataRef currentKeyLayoutDataRef = (CFDataRef )TISGetInputSourceProperty(currentKeyLayoutRef, kTISPropertyUnicodeKeyLayoutData); - if (currentKeyLayoutDataRef) - chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef); - } - - if(chr_data == NULL) { - KLGetCurrentKeyboardLayout (&key_layout); - KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data); - - if (chr_data != NULL) - { - is_uchr = 1; - keyboard_type = LMGetKbdType (); - } - else - { - KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data); - - if (chr_data == NULL) - { - ErrorF ( "Couldn't get uchr or kchr resource\n"); - return FALSE; - } - - is_uchr = 0; - num_keycodes = 128; - } - } + keyboard_type = LMGetKbdType (); + if (currentKeyLayoutRef) { + CFDataRef currentKeyLayoutDataRef = (CFDataRef )TISGetInputSourceProperty(currentKeyLayoutRef, kTISPropertyUnicodeKeyLayoutData); + if (currentKeyLayoutDataRef) chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef); + } + + if (chr_data == NULL) { + KLGetCurrentKeyboardLayout (&key_layout); + KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data); + } + + if (chr_data == NULL) { + KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data); + is_uchr = 0; + num_keycodes = 128; + } + + if (chr_data == NULL) { + ErrorF ( "Couldn't get uchr or kchr resource\n"); + return FALSE; + } /* Scan the keycode range for the Unicode character that each key produces in the four shift states. Then convert that to From 8e1e422ba406d3fa904be8fe3beeb49db900fadc Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 5 Nov 2007 20:25:10 -0800 Subject: [PATCH 31/74] formatting cleanup --- hw/darwin/quartz/quartzKeyboard.c | 108 +++++++++--------------------- 1 file changed, 33 insertions(+), 75 deletions(-) diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c index 10fca0e87..79028efe8 100644 --- a/hw/darwin/quartz/quartzKeyboard.c +++ b/hw/darwin/quartz/quartzKeyboard.c @@ -1,10 +1,9 @@ /* quartzKeyboard.c - Code to build a keymap using the Carbon Keyboard Layout API, - which is supported on Mac OS X 10.2 and newer. + Code to build a keymap using the Carbon Keyboard Layout API. - Copyright (c) 2003 Apple Computer, Inc. All rights reserved. + Copyright (c) 2003-2007 Apple, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files @@ -152,22 +151,17 @@ unsigned int DarwinModeSystemKeymapSeed (void) { static unsigned int seed; - static KeyboardLayoutRef last_key_layout; KeyboardLayoutRef key_layout; KLGetCurrentKeyboardLayout (&key_layout); - - if (key_layout != last_key_layout) - seed++; - + if (key_layout != last_key_layout) seed++; last_key_layout = key_layout; return seed; } -//static inline UniChar -UniChar +static inline UniChar macroman2ucs (unsigned char c) { /* Precalculated table mapping MacRoman-128 to Unicode. Generated @@ -193,10 +187,8 @@ macroman2ucs (unsigned char c) 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db, 0x2c7, }; - if (c < 128) - return c; - else - return table[c - 128]; + if (c < 128) return c; + else return table[c - 128]; } static KeySym @@ -205,10 +197,7 @@ make_dead_key (KeySym in) int i; for (i = 0; i < sizeof (dead_keys) / sizeof (dead_keys[0]); i++) - { - if (dead_keys[i].normal == in) - return dead_keys[i].dead; - } + if (dead_keys[i].normal == in) return dead_keys[i].dead; return in; } @@ -252,53 +241,39 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) an X11 keysym (which may just the bit that says "this is Unicode" if it can't find the real symbol.) */ - for (i = 0; i < num_keycodes; i++) - { + for (i = 0; i < num_keycodes; i++) { static const int mods[4] = {0, MOD_SHIFT, MOD_OPTION, MOD_OPTION | MOD_SHIFT}; k = info->keyMap + i * GLYPHS_PER_KEY; - for (j = 0; j < 4; j++) - { - if (is_uchr) - { + for (j = 0; j < 4; j++) { + if (is_uchr) { UniChar s[8]; UniCharCount len; - UInt32 dead_key_state, extra_dead; + UInt32 dead_key_state = 0, extra_dead = 0; - dead_key_state = 0; err = UCKeyTranslate (chr_data, i, kUCKeyActionDown, mods[j] >> 8, keyboard_type, 0, &dead_key_state, 8, &len, s); - if (err != noErr) - continue; + if (err != noErr) continue; - if (len == 0 && dead_key_state != 0) - { + if (len == 0 && dead_key_state != 0) { /* Found a dead key. Work out which one it is, but remembering that it's dead. */ - - extra_dead = 0; err = UCKeyTranslate (chr_data, i, kUCKeyActionDown, mods[j] >> 8, keyboard_type, kUCKeyTranslateNoDeadKeysMask, &extra_dead, 8, &len, s); - if (err != noErr) - continue; + if (err != noErr) continue; } - if (len > 0 && s[0] != 0x0010) - { + if (len > 0 && s[0] != 0x0010) { k[j] = ucs2keysym (s[0]); - - if (dead_key_state != 0) - k[j] = make_dead_key (k[j]); + if (dead_key_state != 0) k[j] = make_dead_key (k[j]); } - } - else - { - UInt32 c, state = 0; + } else { // kchr + UInt32 c, state = 0, state2 = 0; UInt16 code; code = i | mods[j]; @@ -310,67 +285,50 @@ DarwinModeReadSystemKeymap (darwinKeyboardInfo *info) us the actual dead character. */ if (state != 0) - { - UInt32 state2 = 0; c = KeyTranslate (chr_data, code | 128, &state2); - } /* Characters seem to be in MacRoman encoding. */ - if (c != 0 && c != 0x0010) - { + if (c != 0 && c != 0x0010) { k[j] = ucs2keysym (macroman2ucs (c & 255)); - if (state != 0) - k[j] = make_dead_key (k[j]); + if (state != 0) k[j] = make_dead_key (k[j]); } } } - - if (k[3] == k[2]) - k[3] = NoSymbol; - if (k[2] == k[1]) - k[2] = NoSymbol; - if (k[1] == k[0]) - k[1] = NoSymbol; - if (k[0] == k[2] && k[1] == k[3]) - k[2] = k[3] = NoSymbol; + + if (k[3] == k[2]) k[3] = NoSymbol; + if (k[2] == k[1]) k[2] = NoSymbol; + if (k[1] == k[0]) k[1] = NoSymbol; + if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol; } /* Fix up some things that are normally missing.. */ - if (HACK_MISSING) - { - for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) - { + if (HACK_MISSING) { + for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) { k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY; - if (k[0] == NoSymbol && k[1] == NoSymbol + if (k[0] == NoSymbol && k[1] == NoSymbol && k[2] == NoSymbol && k[3] == NoSymbol) - { - k[0] = known_keys[i].keysym; - } + k[0] = known_keys[i].keysym; } } /* And some more things. We find the right symbols for the numeric keypad, but not the KP_ keysyms. So try to convert known keycodes. */ - if (HACK_KEYPAD) - { + if (HACK_KEYPAD) { for (i = 0; i < sizeof (known_numeric_keys) - / sizeof (known_numeric_keys[0]); i++) - { + / sizeof (known_numeric_keys[0]); i++) { k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY; if (k[0] == known_numeric_keys[i].normal) - { k[0] = known_numeric_keys[i].keypad; - } } } - if(currentKeyLayoutRef) CFRelease(currentKeyLayoutRef); - + if(currentKeyLayoutRef) CFRelease(currentKeyLayoutRef); + return TRUE; } From be688397ef252020565197b4c036cd813d3d7d66 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Tue, 6 Nov 2007 23:19:03 -0800 Subject: [PATCH 32/74] Fixed glx/DarwinGlx symbol problems; other servers (such as xvfb and xnest) should now be buildable from this code if you pass e.g. --enable-xvfb to configure. --- configure.ac | 5 +++-- mi/miinitext.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index a65288f92..815bd8bc1 100644 --- a/configure.ac +++ b/configure.ac @@ -656,7 +656,7 @@ if test "x$GLX" = xyes && ! test "x$MESA_SOURCE" = x; then PKG_CHECK_MODULES([GL], [glproto >= 1.4.8]) AC_SUBST(XLIB_CFLAGS) AC_DEFINE(GLXEXT, 1, [Build GLX extension]) - GLX_LIBS='$(top_builddir)/GL/apple/indirect.o $(top_builddir)/GL/glx/libglx.la' + GLX_LIBS='$(top_builddir)/GL/glx/libglx.la $(top_builddir)/GL/mesa/libGLcore.la' test -d GL || mkdir GL case $host_os in solaris*) @@ -1645,7 +1645,8 @@ return 0;} # LDFLAGS=$save_LDFLAGS # ]) xorg_cv_AGL_framework=no - DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB" + DARWIN_GLX_LIBS='$(top_builddir)/GL/apple/indirect.o $(top_builddir)/GL/glx/libglx.la' + DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $DARWIN_GLX_LIBS" AC_SUBST([DARWIN_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) AC_SUBST([APPLE_APPLICATIONS_DIR]) diff --git a/mi/miinitext.c b/mi/miinitext.c index fa006740f..87367457a 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -338,7 +338,7 @@ extern void XFree86DGAExtensionInit(INITARGS); #endif #ifdef GLXEXT typedef struct __GLXprovider __GLXprovider; -#if defined(__DARWIN__) && !defined(INXQUARTZ) +#if defined(__DARWIN__) && defined(INXDARWINAPP) extern __GLXprovider* __DarwinglXMesaProvider; extern void DarwinGlxPushProvider(__GLXprovider *impl); extern void DarwinGlxExtensionInit(INITARGS); @@ -632,7 +632,7 @@ InitExtensions(argc, argv) #endif #endif #ifdef GLXEXT -#if defined(__DARWIN__) && !defined(INXQUARTZ) +#if defined(__DARWIN__) && defined(INXDARWINAPP) DarwinGlxPushProvider(__DarwinglXMesaProvider); if (!noGlxExtension) DarwinGlxExtensionInit(); #else From 774920637a12398918299847225bc982a694b82e Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 01:35:48 -0800 Subject: [PATCH 33/74] Fixed Spaces issue, correctly -- dragging an X window from one Space to another in Expose mode now works. --- hw/darwin/darwin.h | 3 +- hw/darwin/quartz/quartz.c | 87 ++++++++++++-------- hw/darwin/quartz/quartz.h | 1 + miext/rootless/rootless.h | 2 + miext/rootless/rootlessWindow.c | 138 +++++++++++++++++++++++++++++++- 5 files changed, 191 insertions(+), 40 deletions(-) diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h index 93ad3ab5c..bc96bb091 100644 --- a/hw/darwin/darwin.h +++ b/hw/darwin/darwin.h @@ -127,7 +127,6 @@ enum { = LASTEvent+1, // (from X.h list of event names) kXDarwinUpdateButtons, // update state of mouse buttons 2 and up kXDarwinScrollWheel, // scroll wheel event - /* * Quartz-specific events -- not used in IOKit mode */ @@ -138,6 +137,8 @@ enum { kXDarwinReadPasteboard, // copy Mac OS X pasteboard into X cut buffer kXDarwinWritePasteboard, // copy X cut buffer onto Mac OS X pasteboard kXDarwinBringAllToFront, // bring all X windows to front + kXDarwinToggleFullscreen, // Enable/Disable fullscreen mode + kXDarwinSetRootless, // Set rootless mode /* * AppleWM events */ diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index a24aeb1b4..113a7d22e 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -342,8 +342,22 @@ void DarwinModeProcessEvent( xEvent *xe) { switch (xe->u.u.type) { + case kXDarwinControllerNotify: + AppleWMSendEvent(AppleWMControllerNotify, + AppleWMControllerNotifyMask, + xe->u.clientMessage.u.l.longs0, + xe->u.clientMessage.u.l.longs1); + break; + + case kXDarwinPasteboardNotify: + AppleWMSendEvent(AppleWMPasteboardNotify, + AppleWMPasteboardNotifyMask, + xe->u.clientMessage.u.l.longs0, + xe->u.clientMessage.u.l.longs1); + break; case kXDarwinActivate: + ErrorF("kXDarwinActivate\n"); QuartzShow(xe->u.keyButtonPointer.rootX, xe->u.keyButtonPointer.rootY); AppleWMSendEvent(AppleWMActivationNotify, @@ -352,12 +366,48 @@ void DarwinModeProcessEvent( break; case kXDarwinDeactivate: + ErrorF("kXDarwinDeactivate\n"); AppleWMSendEvent(AppleWMActivationNotify, AppleWMActivationNotifyMask, AppleWMIsInactive, 0); QuartzHide(); break; + case kXDarwinDisplayChanged: + ErrorF("kXDarwinDisplayChanged\n"); + QuartzUpdateScreens(); + break; + + case kXDarwinWindowState: + ErrorF("kXDarwinWindowState\n"); + RootlessNativeWindowStateChanged(xe->u.clientMessage.u.l.longs0, + xe->u.clientMessage.u.l.longs1); + break; + + case kXDarwinWindowMoved: + ErrorF("kXDarwinWindowMoved\n"); + RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0); + break; + + case kXDarwinToggleFullscreen: +#ifdef DARWIN_DDX_MISSING + if (quartzEnableRootless) QuartzSetFullscreen(!quartzHasRoot); + else if (quartzHasRoot) QuartzHide(); + else QuartzShow(); +#else + ErrorF("kXDarwinToggleFullscreen not implemented\n"); +#endif + break; + + case kXDarwinSetRootless: +#ifdef DARWIN_DDX_MISSING + QuartzSetRootless(xe->u.clientMessage.u.l.longs0); + if (!quartzEnableRootless && !quartzHasRoot) QuartzHide(); +#else + ErrorF("kXDarwinSetRootless not implemented\n"); +#endif + break; + case kXDarwinSetRootClip: QuartzSetRootClip((BOOL)xe->u.clientMessage.u.l.longs0); break; @@ -374,46 +424,13 @@ void DarwinModeProcessEvent( QuartzWritePasteboard(); break; - /* - * AppleWM events - */ - case kXDarwinControllerNotify: - AppleWMSendEvent(AppleWMControllerNotify, - AppleWMControllerNotifyMask, - xe->u.clientMessage.u.l.longs0, - xe->u.clientMessage.u.l.longs1); - break; - - case kXDarwinPasteboardNotify: - AppleWMSendEvent(AppleWMPasteboardNotify, - AppleWMPasteboardNotifyMask, - xe->u.clientMessage.u.l.longs0, - xe->u.clientMessage.u.l.longs1); - break; - - case kXDarwinDisplayChanged: - QuartzUpdateScreens(); - break; - case kXDarwinBringAllToFront: + ErrorF("kXDarwinBringAllToFront\n"); RootlessOrderAllWindows(); break; - case kXDarwinWindowState: - ErrorF("kXDarwinWindowState\n"); - break; - case kXDarwinWindowMoved: { - WindowPtr pWin = (WindowPtr)xe->u.clientMessage.u.l.longs0; - short x = xe->u.clientMessage.u.l.longs1, - y = xe->u.clientMessage.u.l.longs2; - ErrorF("kXDarwinWindowMoved(%p, %hd, %hd)\n", pWin, x, y); - RootlessMoveWindow(pWin, x, y, pWin->nextSib, VTMove); - } - break; - default: - ErrorF("Unknown application defined event type %d.\n", - xe->u.u.type); + ErrorF("Unknown application defined event type %d.\n", xe->u.u.type); } } diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h index fa7499df1..172f3239b 100644 --- a/hw/darwin/quartz/quartz.h +++ b/hw/darwin/quartz/quartz.h @@ -122,6 +122,7 @@ typedef struct _QuartzModeProcs { } QuartzModeProcsRec, *QuartzModeProcsPtr; extern QuartzModeProcsPtr quartzProcs; +extern int quartzHasRoot, quartzEnableRootless; Bool QuartzLoadDisplayBundle(const char *dpyBundleName); diff --git a/miext/rootless/rootless.h b/miext/rootless/rootless.h index d9fdb6adb..b4a5b2a3d 100644 --- a/miext/rootless/rootless.h +++ b/miext/rootless/rootless.h @@ -74,6 +74,8 @@ typedef struct _RootlessWindowRec { unsigned int is_drawing :1; // Currently drawing? unsigned int is_reorder_pending :1; + unsigned int is_offscreen :1; + unsigned int is_obscured :1; } RootlessWindowRec, *RootlessWindowPtr; diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 1e06d2c11..1aa0b7749 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -36,13 +36,23 @@ #include /* For NULL */ #include /* For CHAR_BIT */ #include +#ifdef __APPLE__ +//#include +#include +#include "mi.h" +#include "pixmapstr.h" +#include "windowstr.h" +#include +//#include +extern int darwinMainScreenX, darwinMainScreenY; +#endif +#include "fb.h" + +#define AppleWMNumWindowLevels 5 #include "rootlessCommon.h" #include "rootlessWindow.h" -#include "fb.h" - - #ifdef ROOTLESS_GLOBAL_COORDS #define SCREEN_TO_GLOBAL_X \ (dixScreenOrigins[pScreen->myNum].x + rootlessGlobalOffsetX) @@ -53,6 +63,127 @@ #define SCREEN_TO_GLOBAL_Y 0 #endif +#define DEFINE_ATOM_HELPER(func,atom_name) \ + static Atom func (void) { \ + static unsigned int generation; \ + static Atom atom; \ + if (generation != serverGeneration) { \ + generation = serverGeneration; \ + atom = MakeAtom (atom_name, strlen (atom_name), TRUE); \ + } \ + return atom; \ + } + +DEFINE_ATOM_HELPER (xa_native_screen_origin, "_NATIVE_SCREEN_ORIGIN") +DEFINE_ATOM_HELPER (xa_native_window_id, "_NATIVE_WINDOW_ID") +DEFINE_ATOM_HELPER (xa_apple_no_order_in, "_APPLE_NO_ORDER_IN") + +static Bool no_configure_window; +static Bool windows_hidden; +// TODO - abstract xp functions + +static const int normal_window_levels[AppleWMNumWindowLevels+1] = { + 0, 3, 4, 5, LONG_MIN + 30, LONG_MIN + 29, +}; +static const int rooted_window_levels[AppleWMNumWindowLevels+1] = { + 202, 203, 204, 205, 201, 200 +}; + +static inline int +configure_window (xp_window_id id, unsigned int mask, + const xp_window_changes *values) +{ + if (!no_configure_window) + return xp_configure_window (id, mask, values); + else + return XP_Success; +} + +/*static inline unsigned long +current_time_in_seconds (void) +{ + unsigned long t = 0; + + t += currentTime.milliseconds / 1000; + t += currentTime.months * 4294967; + + return t; + } */ + +static inline Bool +rootlessHasRoot (ScreenPtr pScreen) +{ + return WINREC (WindowTable[pScreen->myNum]) != NULL; +} + +void +RootlessNativeWindowStateChanged (xp_window_id id, unsigned int state) +{ + WindowPtr pWin; + RootlessWindowRec *winRec; + + pWin = xprGetXWindow (id); + if (pWin == NULL) return; + + winRec = WINREC (pWin); + if (winRec == NULL) return; + + winRec->is_offscreen = ((state & XP_WINDOW_STATE_OFFSCREEN) != 0); + winRec->is_obscured = ((state & XP_WINDOW_STATE_OBSCURED) != 0); + // pWin->rootlessUnhittable = winRec->is_offscreen; +} + +void +RootlessNativeWindowMoved (WindowPtr pWin) +{ + xp_box bounds; + int sx, sy; + XID vlist[2]; + Mask mask; + ClientPtr client; + RootlessWindowRec *winRec = WINREC(pWin); + + if (xp_get_window_bounds (winRec->wid, &bounds) != Success) return; + + sx = dixScreenOrigins[pWin->drawable.pScreen->myNum].x + darwinMainScreenX; + sy = dixScreenOrigins[pWin->drawable.pScreen->myNum].y + darwinMainScreenY; + + /* Fake up a ConfigureWindow packet to resize the window to the current bounds. */ + + vlist[0] = (INT16) bounds.x1 - sx; + vlist[1] = (INT16) bounds.y1 - sy; + mask = CWX | CWY; + + /* pretend we're the owner of the window! */ + client = LookupClient (pWin->drawable.id, NullClient); + + /* Don't want to do anything to the physical window (avoids + notification-response feedback loops) */ + + no_configure_window = TRUE; + ConfigureWindow (pWin, mask, vlist, client); + no_configure_window = FALSE; +} + +/* Updates the _NATIVE_SCREEN_ORIGIN property on the given root window. */ +static void +set_screen_origin (WindowPtr pWin) +{ + long data[2]; + + if (!IsRoot (pWin)) + return; + + /* FIXME: move this to an extension? */ + + data[0] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].x + + darwinMainScreenX); + data[1] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].y + + darwinMainScreenY); + + ChangeWindowProperty (pWin, xa_native_screen_origin (), XA_INTEGER, + 32, PropModeReplace, 2, data, TRUE); +} /* * RootlessCreateWindow @@ -567,7 +698,6 @@ RootlessRestackWindow(WindowPtr pWin, WindowPtr pOldNextSib) RL_DEBUG_MSG("restackwindow end\n"); } - /* * Specialized window copy procedures */ From cb29f62b66821481c4d30afe630614d13dd3a2f0 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 01:56:37 -0800 Subject: [PATCH 34/74] formatting changes. --- hw/darwin/apple/X11Application.m | 533 +++++++++++++++---------------- 1 file changed, 249 insertions(+), 284 deletions(-) diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index bd6b062be..62bf1f918 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -207,140 +207,111 @@ message_kit_thread (SEL selector, NSObject *arg) - (void) sendEvent:(NSEvent *)e { - NSEventType type; - BOOL for_appkit, for_x; + NSEventType type; + BOOL for_appkit, for_x; + + type = [e type]; + + /* By default pass down the responder chain and to X. */ + for_appkit = YES; + for_x = YES; + + switch (type) { + case NSLeftMouseDown: case NSRightMouseDown: case NSOtherMouseDown: + case NSLeftMouseUp: case NSRightMouseUp: case NSOtherMouseUp: + if ([e window] != nil) { + /* Pointer event has an (AppKit) window. Probably something for the kit. */ + for_x = NO; + if (_x_active) [self activateX:NO]; + } else if ([self modalWindow] == nil) { + /* Must be an X window. Tell appkit it doesn't have focus. */ + for_appkit = NO; + + if ([self isActive]) { + [self deactivate]; - type = [e type]; - - /* By default pass down the responder chain and to X. */ - for_appkit = YES; - for_x = YES; - - switch (type) - { - case NSLeftMouseDown: case NSRightMouseDown: case NSOtherMouseDown: - case NSLeftMouseUp: case NSRightMouseUp: case NSOtherMouseUp: - if ([e window] != nil) - { - /* Pointer event has a window. Probably something for the kit. */ - - for_x = NO; - - if (_x_active) - [self activateX:NO]; - } - else if ([self modalWindow] == nil) - { - /* Must be an X window. Tell appkit it doesn't have focus. */ - - for_appkit = NO; - - if ([self isActive]) - { - [self deactivate]; - - if (!_x_active && quartzProcs->IsX11Window([e window], - [e windowNumber])) - [self activateX:YES]; - } - } - break; + if (!_x_active && quartzProcs->IsX11Window([e window], + [e windowNumber])) + [self activateX:YES]; + } + } + break; case NSKeyDown: case NSKeyUp: - if (_x_active) - { - static int swallow_up; - - /* No kit window is focused, so send it to X. */ - - for_appkit = NO; - - if (type == NSKeyDown) - { - /* Before that though, see if there are any global - shortcuts bound to it. */ - - if (X11EnableKeyEquivalents - && [[self mainMenu] performKeyEquivalent:e]) - { - swallow_up = [e keyCode]; - for_x = NO; - } - else if (!quartzEnableRootless - && ([e modifierFlags] & ALL_KEY_MASKS) - == (NSCommandKeyMask | NSAlternateKeyMask) - && ([e keyCode] == 0 /*a*/ - || [e keyCode] == 53 /*Esc*/)) - { - swallow_up = 0; - for_x = NO; + if (_x_active) { + static int swallow_up; + + /* No kit window is focused, so send it to X. */ + for_appkit = NO; + if (type == NSKeyDown) { + /* Before that though, see if there are any global + shortcuts bound to it. */ + + if (X11EnableKeyEquivalents + && [[self mainMenu] performKeyEquivalent:e]) { + swallow_up = [e keyCode]; + for_x = NO; + } else if (!quartzEnableRootless + && ([e modifierFlags] & ALL_KEY_MASKS) + == (NSCommandKeyMask | NSAlternateKeyMask) + && ([e keyCode] == 0 /*a*/ + || [e keyCode] == 53 /*Esc*/)) { + swallow_up = 0; + for_x = NO; #ifdef DARWIN_DDX_MISSING - QuartzMessageServerThread (kXDarwinToggleFullscreen, 0); + QuartzMessageServerThread (kXDarwinToggleFullscreen, 0); #endif - } - } - else - { - /* If we saw a key equivalent on the down, don't pass - the up through to X. */ - - if (swallow_up != 0 && [e keyCode] == swallow_up) - { - swallow_up = 0; - for_x = NO; - } - } - } - else - { - for_x = NO; - } - break; - - case NSFlagsChanged: - /* For the l33t X users who remap modifier keys to normal keysyms. */ - if (!_x_active) - for_x = NO; - break; - - case NSAppKitDefined: - switch ([e subtype]) - { - case NSApplicationActivatedEventType: - for_x = NO; - if ([self modalWindow] == nil) - { - for_appkit = NO; - - /* FIXME: hack to avoid having to pass the event to appkit, - which would cause it to raise one of its windows. */ - _appFlags._active = YES; - - [self activateX:YES]; - if ([e data2] & 0x10) X11ApplicationSetFrontProcess(); - } - break; - - case 18: /* ApplicationDidReactivate */ - if (quartzHasRoot) - for_appkit = NO; - break; - - case NSApplicationDeactivatedEventType: - for_x = NO; - [self activateX:NO]; - break; - } - break; - - default: break; /* for gcc */ + } + } else { + /* If we saw a key equivalent on the down, don't pass + the up through to X. */ + + if (swallow_up != 0 && [e keyCode] == swallow_up) { + swallow_up = 0; + for_x = NO; + } + } + } else for_x = NO; + break; + + case NSFlagsChanged: + /* For the l33t X users who remap modifier keys to normal keysyms. */ + if (!_x_active) for_x = NO; + break; + + case NSAppKitDefined: + switch ([e subtype]) { + case NSApplicationActivatedEventType: + for_x = NO; + if ([self modalWindow] == nil) { + for_appkit = NO; + + /* FIXME: hack to avoid having to pass the event to appkit, + which would cause it to raise one of its windows. */ + _appFlags._active = YES; + + [self activateX:YES]; + if ([e data2] & 0x10) X11ApplicationSetFrontProcess(); + } + break; + + case 18: /* ApplicationDidReactivate */ + if (quartzHasRoot) for_appkit = NO; + break; + + case NSApplicationDeactivatedEventType: + for_x = NO; + [self activateX:NO]; + break; } - - if (for_appkit) - [super sendEvent:e]; - - if (for_x) - send_nsevent (type, e); + break; + + default: break; /* for gcc */ + } + + if (for_appkit) [super sendEvent:e]; + + if (for_x) send_nsevent (type, e); } - (void) set_window_menu:(NSArray *)list @@ -697,57 +668,53 @@ cfarray_to_nsarray (CFArrayRef in) const char *tem; quartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP - default:quartzUseSysBeep]; + default:quartzUseSysBeep]; quartzEnableRootless = [self prefs_get_boolean:@PREFS_ROOTLESS - default:quartzEnableRootless]; + default:quartzEnableRootless]; #ifdef DARWIN_DDX_MISSING quartzFullscreenDisableHotkeys = ![self prefs_get_boolean: - @PREFS_FULLSCREEN_HOTKEYS default: - !quartzFullscreenDisableHotkeys]; + @PREFS_FULLSCREEN_HOTKEYS default: + !quartzFullscreenDisableHotkeys]; quartzXpluginOptions = [self prefs_get_integer:@PREFS_XP_OPTIONS - default:quartzXpluginOptions]; + default:quartzXpluginOptions]; #endif darwinSwapAltMeta = [self prefs_get_boolean:@PREFS_SWAP_ALT_META - default:darwinSwapAltMeta]; + default:darwinSwapAltMeta]; darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS - default:darwinFakeButtons]; - if (darwinFakeButtons) - { - const char *fake2, *fake3; - - fake2 = [self prefs_get_string:@PREFS_FAKE_BUTTON2 default:NULL]; - fake3 = [self prefs_get_string:@PREFS_FAKE_BUTTON3 default:NULL]; - - if (fake2 != NULL) darwinFakeMouse2Mask = DarwinParseModifierList(fake2); - if (fake3 != NULL) darwinFakeMouse3Mask = DarwinParseModifierList(fake3); - + default:darwinFakeButtons]; + if (darwinFakeButtons) { + const char *fake2, *fake3; + + fake2 = [self prefs_get_string:@PREFS_FAKE_BUTTON2 default:NULL]; + fake3 = [self prefs_get_string:@PREFS_FAKE_BUTTON3 default:NULL]; + + if (fake2 != NULL) darwinFakeMouse2Mask = DarwinParseModifierList(fake2); + if (fake3 != NULL) darwinFakeMouse3Mask = DarwinParseModifierList(fake3); } X11EnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS - default:X11EnableKeyEquivalents]; + default:X11EnableKeyEquivalents]; darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP - default:darwinSyncKeymap]; + default:darwinSyncKeymap]; tem = [self prefs_get_string:@PREFS_KEYMAP_FILE default:NULL]; - if (tem != NULL) - darwinKeymapFile = strdup (tem); - else - darwinKeymapFile = NULL; + if (tem != NULL) darwinKeymapFile = strdup (tem); + else darwinKeymapFile = NULL; darwinDesiredDepth = [self prefs_get_integer:@PREFS_DEPTH - default:darwinDesiredDepth]; + default:darwinDesiredDepth]; enable_stereo = [self prefs_get_boolean:@PREFS_ENABLE_STEREO - default:false]; + default:false]; } /* This will end up at the end of the responder chain. */ - (void) copy:sender { QuartzMessageServerThread (kXDarwinPasteboardNotify, 1, - AppleWMCopyToPasteboard); + AppleWMCopyToPasteboard); } - (BOOL) x_active @@ -991,135 +958,133 @@ convert_flags (unsigned int nsflags) static void send_nsevent (NSEventType type, NSEvent *e) { - static unsigned int button_state = 0; - NSRect screen; - NSPoint location; - NSWindow *window; - int pointer_x, pointer_y; - xEvent xe; - - memset (&xe, 0, sizeof (xe)); - - /* This field should be filled in for every event */ - xe.u.keyButtonPointer.time = GetTimeInMillis(); - - /* convert location to global top-left coordinates */ - location = [e locationInWindow]; - window = [e window]; - screen = [[[NSScreen screens] objectAtIndex:0] frame]; - - if (window != nil) { - NSRect frame = [window frame]; - pointer_x = location.x + frame.origin.x; - pointer_y = (((screen.origin.y + screen.size.height) - - location.y) - frame.origin.y); - } else { - pointer_x = location.x; - pointer_y = (screen.origin.y + screen.size.height) - location.y; - } - - xe.u.keyButtonPointer.rootX = pointer_x; - xe.u.keyButtonPointer.rootY = pointer_y; - - switch (type) { - float count; - - case NSLeftMouseDown: - xe.u.u.type = ButtonPress; - xe.u.u.detail = 1; - goto do_press_event; - - case NSRightMouseDown: - xe.u.u.type = ButtonPress; - xe.u.u.detail = 3; - goto do_press_event; - - case NSOtherMouseDown: - xe.u.u.type = ButtonPress; - xe.u.u.detail = 2; /* FIXME? */ - goto do_press_event; - -do_press_event: - if (!quartzProcs->IsX11Window([e window], [e windowNumber])) { - /* X server doesn't grok this window, drop the event. - - Note: theoretically this isn't necessary, but if I click - on the menubar, we get sent a LeftMouseDown when the - release happens, but no LeftMouseUp is ever seen! */ - - break; - } - goto do_event; - - case NSLeftMouseUp: - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 1; - goto do_release_event; - - case NSRightMouseUp: - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 3; - goto do_release_event; - - case NSOtherMouseUp: - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 2; /* FIXME? */ - goto do_release_event; - -do_release_event: - if ((button_state & (1 << xe.u.u.detail)) == 0) - { - /* X didn't see the button press for this release, so skip it */ - break; - } - goto do_event; - - case NSMouseMoved: - case NSLeftMouseDragged: - case NSRightMouseDragged: - case NSOtherMouseDragged: - xe.u.u.type = MotionNotify; - goto do_event; - - case NSKeyDown: - xe.u.u.type = KeyPress; - xe.u.u.detail = [e keyCode]; - goto do_event; - - case NSKeyUp: - xe.u.u.type = KeyRelease; - xe.u.u.detail = [e keyCode]; - goto do_event; - - case NSScrollWheel: - xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]); - count = [e deltaY]; - xe.u.u.detail = count > 0.0f ? 4 : 5; - for (count = fabs(count); count > 0.0; count = count - 1.0f) { - xe.u.u.type = ButtonPress; - DarwinEQEnqueue(&xe); - xe.u.u.type = ButtonRelease; - DarwinEQEnqueue(&xe); - } - xe.u.u.type = 0; - break; - - case NSFlagsChanged: - xe.u.u.type = kXDarwinUpdateModifiers; - xe.u.clientMessage.u.l.longs0 = [e modifierFlags]; - DarwinEQEnqueue (&xe); - break; - -do_event: - // xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]); - DarwinEQEnqueue (&xe); - break; - - default: break; /* for gcc */ + static unsigned int button_state = 0; + NSRect screen; + NSPoint location; + NSWindow *window; + int pointer_x, pointer_y; + xEvent xe; + + memset (&xe, 0, sizeof (xe)); + + /* This field should be filled in for every event */ + xe.u.keyButtonPointer.time = GetTimeInMillis(); + + /* convert location to global top-left coordinates */ + location = [e locationInWindow]; + window = [e window]; + screen = [[[NSScreen screens] objectAtIndex:0] frame]; + + if (window != nil) { + NSRect frame = [window frame]; + pointer_x = location.x + frame.origin.x; + pointer_y = (((screen.origin.y + screen.size.height) + - location.y) - frame.origin.y); + } else { + pointer_x = location.x; + pointer_y = (screen.origin.y + screen.size.height) - location.y; + } + + xe.u.keyButtonPointer.rootX = pointer_x; + xe.u.keyButtonPointer.rootY = pointer_y; + + switch (type) { + float count; + + case NSLeftMouseDown: + xe.u.u.type = ButtonPress; + xe.u.u.detail = 1; + goto do_press_event; + + case NSRightMouseDown: + xe.u.u.type = ButtonPress; + xe.u.u.detail = 3; + goto do_press_event; + + case NSOtherMouseDown: + xe.u.u.type = ButtonPress; + xe.u.u.detail = 2; /* FIXME? */ + goto do_press_event; + + do_press_event: + if (!quartzProcs->IsX11Window([e window], [e windowNumber])) { + /* X server doesn't grok this window, drop the event. + + Note: theoretically this isn't necessary, but if I click + on the menubar, we get sent a LeftMouseDown when the + release happens, but no LeftMouseUp is ever seen! */ + + break; } - - if (xe.u.u.type == ButtonPress) - button_state |= (1 << xe.u.u.detail); - else if (xe.u.u.type == ButtonRelease) - button_state &= ~(1 << xe.u.u.detail); + goto do_event; + + case NSLeftMouseUp: + xe.u.u.type = ButtonRelease; + xe.u.u.detail = 1; + goto do_release_event; + + case NSRightMouseUp: + xe.u.u.type = ButtonRelease; + xe.u.u.detail = 3; + goto do_release_event; + + case NSOtherMouseUp: + xe.u.u.type = ButtonRelease; + xe.u.u.detail = 2; /* FIXME? */ + goto do_release_event; + + do_release_event: + if ((button_state & (1 << xe.u.u.detail)) == 0) + { + /* X didn't see the button press for this release, so skip it */ + break; + } + goto do_event; + + case NSMouseMoved: + case NSLeftMouseDragged: + case NSRightMouseDragged: + case NSOtherMouseDragged: + xe.u.u.type = MotionNotify; + goto do_event; + + case NSKeyDown: + xe.u.u.type = KeyPress; + xe.u.u.detail = [e keyCode]; + goto do_event; + + case NSKeyUp: + xe.u.u.type = KeyRelease; + xe.u.u.detail = [e keyCode]; + goto do_event; + + case NSScrollWheel: + xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]); + count = [e deltaY]; + xe.u.u.detail = count > 0.0f ? 4 : 5; + for (count = fabs(count); count > 0.0; count = count - 1.0f) { + xe.u.u.type = ButtonPress; + DarwinEQEnqueue(&xe); + xe.u.u.type = ButtonRelease; + DarwinEQEnqueue(&xe); + } + xe.u.u.type = 0; + break; + + case NSFlagsChanged: + xe.u.u.type = kXDarwinUpdateModifiers; + xe.u.clientMessage.u.l.longs0 = [e modifierFlags]; + DarwinEQEnqueue (&xe); + break; + + do_event: + // xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]); + DarwinEQEnqueue (&xe); + break; + + default: break; /* for gcc */ + } + + if (xe.u.u.type == ButtonPress) button_state |= (1 << xe.u.u.detail); + else if (xe.u.u.type == ButtonRelease) button_state &= ~(1 << xe.u.u.detail); } From 63af22ae3a2ac3de60cee00686cad528dfe399f0 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 02:22:39 -0800 Subject: [PATCH 35/74] Fixed focus problem (clicking on an X11 window that sits behind an Aqua window would not always bring it to the top of the stack. --- hw/darwin/apple/X11Application.m | 2 ++ hw/darwin/quartz/xpr/xpr.h | 3 +++ hw/darwin/quartz/xpr/xprFrame.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 62bf1f918..c52dfd0e8 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -225,6 +225,8 @@ message_kit_thread (SEL selector, NSObject *arg) if (_x_active) [self activateX:NO]; } else if ([self modalWindow] == nil) { /* Must be an X window. Tell appkit it doesn't have focus. */ + WindowPtr pWin = xprGetXWindowFromAppKit([e windowNumber]); + if (pWin) RootlessReorderWindow(pWin); for_appkit = NO; if ([self isActive]) { diff --git a/hw/darwin/quartz/xpr/xpr.h b/hw/darwin/quartz/xpr/xpr.h index 81bb912e1..09e85f5f3 100644 --- a/hw/darwin/quartz/xpr/xpr.h +++ b/hw/darwin/quartz/xpr/xpr.h @@ -37,6 +37,9 @@ void AppleDRIExtensionInit(void); void xprAppleWMInit(void); Bool xprInit(ScreenPtr pScreen); Bool xprIsX11Window(void *nsWindow, int windowNumber); +WindowPtr xprGetX11Window(xp_window_id wid); +WindowPtr xprGetXWindowFromAppKit(int windowNumber); + void xprHideWindows(Bool hide); Bool QuartzInitCursor(ScreenPtr pScreen); diff --git a/hw/darwin/quartz/xpr/xprFrame.c b/hw/darwin/quartz/xpr/xprFrame.c index 53fbb31f9..54b2035e1 100644 --- a/hw/darwin/quartz/xpr/xprFrame.c +++ b/hw/darwin/quartz/xpr/xprFrame.c @@ -425,6 +425,37 @@ xprGetXWindow(xp_window_id wid) return winRec != NULL ? winRec->win : NULL; } +/* + * Given the id of a physical window, try to find the top-level (or root) + * X window that it represents. + */ +WindowPtr +xprGetXWindowFromAppKit(int windowNumber) +{ + RootlessWindowRec *winRec; + Bool ret; + xp_window_id wid; + + if (window_hash == NULL) + return FALSE; + + /* need to lock, since this function can be called by any thread */ + + pthread_mutex_lock(&window_hash_mutex); + + if (xp_lookup_native_window(windowNumber, &wid)) + ret = xprGetXWindow(wid) != NULL; + else + ret = FALSE; + + pthread_mutex_unlock(&window_hash_mutex); + + if (!ret) return NULL; + winRec = x_hash_table_lookup(window_hash, (void *) wid, NULL); + + return winRec != NULL ? winRec->win : NULL; +} + /* * The windowNumber is an AppKit window number. Returns TRUE if xpr is From a0abe7982d94a629e95d23161e78dafc30dbe731 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 02:28:49 -0800 Subject: [PATCH 36/74] removed debugging output --- hw/darwin/quartz/quartz.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 113a7d22e..eccb4efe6 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -357,7 +357,7 @@ void DarwinModeProcessEvent( break; case kXDarwinActivate: - ErrorF("kXDarwinActivate\n"); + // ErrorF("kXDarwinActivate\n"); QuartzShow(xe->u.keyButtonPointer.rootX, xe->u.keyButtonPointer.rootY); AppleWMSendEvent(AppleWMActivationNotify, @@ -366,7 +366,7 @@ void DarwinModeProcessEvent( break; case kXDarwinDeactivate: - ErrorF("kXDarwinDeactivate\n"); + // ErrorF("kXDarwinDeactivate\n"); AppleWMSendEvent(AppleWMActivationNotify, AppleWMActivationNotifyMask, AppleWMIsInactive, 0); @@ -374,18 +374,18 @@ void DarwinModeProcessEvent( break; case kXDarwinDisplayChanged: - ErrorF("kXDarwinDisplayChanged\n"); + // ErrorF("kXDarwinDisplayChanged\n"); QuartzUpdateScreens(); break; case kXDarwinWindowState: - ErrorF("kXDarwinWindowState\n"); + // ErrorF("kXDarwinWindowState\n"); RootlessNativeWindowStateChanged(xe->u.clientMessage.u.l.longs0, xe->u.clientMessage.u.l.longs1); break; case kXDarwinWindowMoved: - ErrorF("kXDarwinWindowMoved\n"); + // ErrorF("kXDarwinWindowMoved\n"); RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0); break; @@ -395,7 +395,7 @@ void DarwinModeProcessEvent( else if (quartzHasRoot) QuartzHide(); else QuartzShow(); #else - ErrorF("kXDarwinToggleFullscreen not implemented\n"); + // ErrorF("kXDarwinToggleFullscreen not implemented\n"); #endif break; @@ -404,7 +404,7 @@ void DarwinModeProcessEvent( QuartzSetRootless(xe->u.clientMessage.u.l.longs0); if (!quartzEnableRootless && !quartzHasRoot) QuartzHide(); #else - ErrorF("kXDarwinSetRootless not implemented\n"); + // ErrorF("kXDarwinSetRootless not implemented\n"); #endif break; @@ -425,7 +425,7 @@ void DarwinModeProcessEvent( break; case kXDarwinBringAllToFront: - ErrorF("kXDarwinBringAllToFront\n"); + // ErrorF("kXDarwinBringAllToFront\n"); RootlessOrderAllWindows(); break; From 1ff9cccd7beba7520aa65a4813fc4cc29a44f78d Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 02:58:56 -0800 Subject: [PATCH 37/74] bump to version 1.2a7 --- configure.ac | 2 +- hw/darwin/Makefile.am | 3 +-- hw/darwin/apple/X11Application.m | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 815bd8bc1..22252fb78 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a6, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a7, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index bfde6f6f1..45eb08bd6 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -1,11 +1,10 @@ noinst_LIBRARIES = libdarwinShared.a libdarwin_XINPUT_SRCS = darwinXinput.c -# -O2 inexplicably causes quartzKeyboard.o to break?! AM_CFLAGS = @XORG_CFLAGS@ INCLUDES = @XORG_INCS@ -I../../miext/rootless -DEFS = @DEFS@ -DUSE_NEW_CLUT +DEFS = @DEFS@ -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" if XQUARTZ XQUARTZ_SUBDIRS = bundle quartz diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index c52dfd0e8..d0c493683 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a6)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a7)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From d02506764a5fbc4fb4ff517fbe3df7a4c26ecb44 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 03:10:52 -0800 Subject: [PATCH 38/74] Undo some last-minute breakage in xpr.h --- hw/darwin/quartz/xpr/xpr.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/darwin/quartz/xpr/xpr.h b/hw/darwin/quartz/xpr/xpr.h index 09e85f5f3..ddc6d0cb1 100644 --- a/hw/darwin/quartz/xpr/xpr.h +++ b/hw/darwin/quartz/xpr/xpr.h @@ -37,8 +37,6 @@ void AppleDRIExtensionInit(void); void xprAppleWMInit(void); Bool xprInit(ScreenPtr pScreen); Bool xprIsX11Window(void *nsWindow, int windowNumber); -WindowPtr xprGetX11Window(xp_window_id wid); -WindowPtr xprGetXWindowFromAppKit(int windowNumber); void xprHideWindows(Bool hide); From db8cd4429d1f15d1c20fd8bd649166fe88d93f14 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 03:55:08 -0800 Subject: [PATCH 39/74] Fix for off-by-one error in menu bar height calculation -- props to Nicholas Riley! --- hw/darwin/apple/X11Application.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index d0c493683..43cdbc62a 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -922,7 +922,7 @@ X11ApplicationMain (int argc, const char *argv[], /* Calculate the height of the menubar so we can avoid it. */ aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) - - NSMaxY([[NSScreen mainScreen] visibleFrame]) - 1; + NSMaxY([[NSScreen mainScreen] visibleFrame]); if (!create_thread (server_thread, server_arg)) { From 534bcdbe1a8cc401a03021b7f68e53180f27e104 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 7 Nov 2007 03:56:44 -0800 Subject: [PATCH 40/74] formatting fixes --- hw/darwin/apple/X11Application.m | 72 ++++++++++++++------------------ 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 43cdbc62a..1033e9521 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -889,50 +889,42 @@ environment?", @"Startup xinitrc dialog"); void X11ApplicationMain (int argc, const char *argv[], - void (*server_thread) (void *), void *server_arg) + void (*server_thread) (void *), void *server_arg) { - NSAutoreleasePool *pool; - + NSAutoreleasePool *pool; + #ifdef DEBUG - while (access ("/tmp/x11-block", F_OK) == 0) - sleep (1); + while (access ("/tmp/x11-block", F_OK) == 0) sleep (1); #endif + + pool = [[NSAutoreleasePool alloc] init]; + X11App = (X11Application *) [X11Application sharedApplication]; + init_ports (); + [NSApp read_defaults]; + [NSBundle loadNibNamed:@"main" owner:NSApp]; + [[NSNotificationCenter defaultCenter] addObserver:NSApp + selector:@selector (became_key:) + name:NSWindowDidBecomeKeyNotification object:nil]; + check_xinitrc (); - pool = [[NSAutoreleasePool alloc] init]; - - X11App = (X11Application *) [X11Application sharedApplication]; - - init_ports (); - - [NSApp read_defaults]; - - [NSBundle loadNibNamed:@"main" owner:NSApp]; - - [[NSNotificationCenter defaultCenter] addObserver:NSApp - selector:@selector (became_key:) - name:NSWindowDidBecomeKeyNotification object:nil]; - - check_xinitrc (); - - /* - * The xpr Quartz mode is statically linked into this server. - * Initialize all the Quartz functions. - */ - QuartzModeBundleInit(); - - /* Calculate the height of the menubar so we can avoid it. */ - aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) - - NSMaxY([[NSScreen mainScreen] visibleFrame]); - - if (!create_thread (server_thread, server_arg)) - { - fprintf (stderr, "can't create secondary thread\n"); - exit (1); - } - - [NSApp run]; - - /* not reached */ + /* + * The xpr Quartz mode is statically linked into this server. + * Initialize all the Quartz functions. + */ + QuartzModeBundleInit(); + + /* Calculate the height of the menubar so we can avoid it. */ + aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) - + NSMaxY([[NSScreen mainScreen] visibleFrame]); + + if (!create_thread (server_thread, server_arg)) { + ErrorF("can't create secondary thread\n"); + exit (1); + } + + [NSApp run]; + + /* not reached */ } From 38965768636aef5c19466a4ffa460d318d3bfa6f Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 8 Nov 2007 18:49:05 -0800 Subject: [PATCH 41/74] Patch to rootless code that should fix many crashes. Credit to Ken Thomases at CodeWeavers for the patch. From his description: Fix a display bug with the X server. The Generic Rootless extension installs overrides for certain GC (graphics context) operations. Within these overrides, they temporarily uninstall themselves, perform their work, and then reinstall themselves. Except sometimes they would return early and wouldn't reinstall themselves when they should. Now they do in all cases. Fix a bug in RootlessCopyWindow where early returns could leave the screen's dispatch table entry for CopyWindow unwrapped. We think that this is another case (hopefully the last) of the rootless drawing bug. --- miext/rootless/rootlessGC.c | 50 +++++++++++++++++++++------------ miext/rootless/rootlessWindow.c | 5 ++-- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/miext/rootless/rootlessGC.c b/miext/rootless/rootlessGC.c index 5341267fb..6051367fc 100644 --- a/miext/rootless/rootlessGC.c +++ b/miext/rootless/rootlessGC.c @@ -412,10 +412,12 @@ static void RootlessCopyClip(GCPtr pgcDst, GCPtr pgcSrc) #define GC_IS_ROOT(pDst) ((pDst)->type == DRAWABLE_WINDOW \ && IsRoot ((WindowPtr) (pDst))) -#define GC_SKIP_ROOT(pDst) \ +#define GC_SKIP_ROOT(pDst, pGC) \ do { \ - if (GC_IS_ROOT (pDst)) \ + if (GC_IS_ROOT (pDst)) { \ + GCOP_WRAP(pGC); \ return; \ + } \ } while (0) @@ -425,7 +427,7 @@ RootlessFillSpans(DrawablePtr dst, GCPtr pGC, int nInit, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("fill spans start "); if (nInit <= 0) { @@ -481,7 +483,7 @@ RootlessSetSpans(DrawablePtr dst, GCPtr pGC, char *pSrc, int nspans, int sorted) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("set spans start "); if (nspans <= 0) { @@ -532,7 +534,7 @@ RootlessPutImage(DrawablePtr dst, GCPtr pGC, BoxRec box; GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("put image start "); RootlessStartDrawing((WindowPtr) dst); @@ -564,7 +566,10 @@ RootlessCopyArea(DrawablePtr pSrc, DrawablePtr dst, GCPtr pGC, GCOP_UNWRAP(pGC); if (GC_IS_ROOT(dst) || GC_IS_ROOT(pSrc)) + { + GCOP_WRAP(pGC); return NULL; /* nothing exposed */ + } RL_DEBUG_MSG("copy area start (src 0x%x, dst 0x%x)", pSrc, dst); @@ -614,7 +619,10 @@ static RegionPtr RootlessCopyPlane(DrawablePtr pSrc, DrawablePtr dst, GCOP_UNWRAP(pGC); if (GC_IS_ROOT(dst) || GC_IS_ROOT(pSrc)) + { + GCOP_WRAP(pGC); return NULL; /* nothing exposed */ + } RL_DEBUG_MSG("copy plane start "); @@ -651,7 +659,7 @@ static void RootlessPolyPoint(DrawablePtr dst, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("polypoint start "); RootlessStartDrawing((WindowPtr) dst); @@ -745,7 +753,7 @@ static void RootlessPolylines(DrawablePtr dst, GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("poly lines start "); RootlessStartDrawing((WindowPtr) dst); @@ -820,7 +828,7 @@ static void RootlessPolySegment(DrawablePtr dst, GCPtr pGC, int nseg, xSegment *pSeg) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("poly segment start (win 0x%x)", dst); RootlessStartDrawing((WindowPtr) dst); @@ -891,7 +899,7 @@ static void RootlessPolyRectangle(DrawablePtr dst, GCPtr pGC, int nRects, xRectangle *pRects) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("poly rectangle start "); RootlessStartDrawing((WindowPtr) dst); @@ -952,7 +960,7 @@ static void RootlessPolyRectangle(DrawablePtr dst, GCPtr pGC, static void RootlessPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc *parcs) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("poly arc start "); RootlessStartDrawing((WindowPtr) dst); @@ -1008,7 +1016,7 @@ static void RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("fill poly start (win 0x%x, fillStyle 0x%x)", dst, pGC->fillStyle); @@ -1082,7 +1090,7 @@ static void RootlessPolyFillRect(DrawablePtr dst, GCPtr pGC, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("fill rect start (win 0x%x, fillStyle 0x%x)", dst, pGC->fillStyle); @@ -1137,7 +1145,7 @@ static void RootlessPolyFillArc(DrawablePtr dst, GCPtr pGC, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("fill arc start "); if (narcsInit > 0) { @@ -1192,7 +1200,7 @@ static void RootlessImageText8(DrawablePtr dst, GCPtr pGC, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("imagetext8 start "); if (count > 0) { @@ -1246,7 +1254,10 @@ static int RootlessPolyText8(DrawablePtr dst, GCPtr pGC, GCOP_UNWRAP(pGC); if (GC_IS_ROOT(dst)) + { + GCOP_WRAP(pGC); return 0; + } RL_DEBUG_MSG("polytext8 start "); @@ -1284,7 +1295,7 @@ static void RootlessImageText16(DrawablePtr dst, GCPtr pGC, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("imagetext16 start "); if (count > 0) { @@ -1338,7 +1349,10 @@ static int RootlessPolyText16(DrawablePtr dst, GCPtr pGC, GCOP_UNWRAP(pGC); if (GC_IS_ROOT(dst)) + { + GCOP_WRAP(pGC); return 0; + } RL_DEBUG_MSG("polytext16 start "); @@ -1377,7 +1391,7 @@ static void RootlessImageGlyphBlt(DrawablePtr dst, GCPtr pGC, { GC_SAVE(pGC); GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("imageglyph start "); if (nglyphInit > 0) { @@ -1438,7 +1452,7 @@ static void RootlessPolyGlyphBlt(DrawablePtr dst, GCPtr pGC, CharInfoPtr *ppci, pointer pglyphBase) { GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("polyglyph start "); RootlessStartDrawing((WindowPtr) dst); @@ -1484,7 +1498,7 @@ RootlessPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr dst, BoxRec box; GCOP_UNWRAP(pGC); - GC_SKIP_ROOT(dst); + GC_SKIP_ROOT(dst, pGC); RL_DEBUG_MSG("push pixels start "); RootlessStartDrawing((WindowPtr) dst); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 1aa0b7749..84aa91dbf 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -838,13 +838,13 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) top = TopLevelParent(pWin); if (top == NULL) { RL_DEBUG_MSG("no parent\n"); - return; + goto out; } winRec = WINREC(top); if (winRec == NULL) { RL_DEBUG_MSG("not framed\n"); - return; + goto out; } /* Move region to window local coords */ @@ -867,6 +867,7 @@ RootlessCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) RootlessDamageRegion(pWin, prgnSrc); } +out: REGION_UNINIT(pScreen, &rgnDst); fbValidateDrawable(&pWin->drawable); From b36f667a34bac249a53d530e04301d3a97f2d180 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 8 Nov 2007 22:12:41 -0800 Subject: [PATCH 42/74] Adding "fake RandR" support from old X11.app --- hw/darwin/quartz/quartz.c | 83 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index eccb4efe6..a0eb4ed8c 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -52,6 +52,8 @@ #include #include +#define FAKE_RANDR 1 + // Shared global variables for Quartz modes int quartzEventWriteFD = -1; int quartzStartClients = 1; @@ -67,6 +69,30 @@ int noPseudoramiXExtension = FALSE; QuartzModeProcsPtr quartzProcs = NULL; const char *quartzOpenGLBundle = NULL; +#if defined(RANDR) && !defined(FAKE_RANDR) +Bool DarwinModeRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) { + return FALSE; +} + +Bool DarwinModeRandRSetConfig (ScreenPtr pScreen, + Rotation randr, + int rate, + RRScreenSizePtr pSize) { + return FALSE; +} + +Bool DarwinModeRandRInit (ScreenPtr pScreen) { + rrScrPrivPtr pScrPriv; + + if (!RRScreenInit (pScreen)) return FALSE; + + pScrPriv = rrGetScrPriv(pScreen); + pScrPriv->rrGetInfo = DarwinModeRandRGetInfo; + pScrPriv->rrSetConfig = DarwinModeRandRSetConfig; + return TRUE; +} +#endif + /* =========================================================================== @@ -170,6 +196,51 @@ void DarwinModeInitInput( } +#ifdef FAKE_RANDR +extern char *ConnectionInfo; + +static int padlength[4] = {0, 3, 2, 1}; + +static void +RREditConnectionInfo (ScreenPtr pScreen) +{ + xConnSetup *connSetup; + char *vendor; + xPixmapFormat *formats; + xWindowRoot *root; + xDepth *depth; + xVisualType *visual; + int screen = 0; + int d; + + connSetup = (xConnSetup *) ConnectionInfo; + vendor = (char *) connSetup + sizeof (xConnSetup); + formats = (xPixmapFormat *) ((char *) vendor + + connSetup->nbytesVendor + + padlength[connSetup->nbytesVendor & 3]); + root = (xWindowRoot *) ((char *) formats + + sizeof (xPixmapFormat) * screenInfo.numPixmapFormats); + while (screen != pScreen->myNum) + { + depth = (xDepth *) ((char *) root + + sizeof (xWindowRoot)); + for (d = 0; d < root->nDepths; d++) + { + visual = (xVisualType *) ((char *) depth + + sizeof (xDepth)); + depth = (xDepth *) ((char *) visual + + depth->nVisuals * sizeof (xVisualType)); + } + root = (xWindowRoot *) ((char *) depth); + screen++; + } + root->pixWidth = pScreen->width; + root->pixHeight = pScreen->height; + root->mmWidth = pScreen->mmWidth; + root->mmHeight = pScreen->mmHeight; +} +#endif + /* * QuartzUpdateScreens * Adjust for screen arrangement changes. @@ -181,6 +252,7 @@ static void QuartzUpdateScreens(void) int x, y, width, height, sx, sy; xEvent e; + ErrorF("QuartzUpdateScreens()\n"); if (noPseudoramiXExtension || screenInfo.numScreens != 1) { /* FIXME: if not using Xinerama, we have multiple screens, and @@ -202,8 +274,11 @@ static void QuartzUpdateScreens(void) pScreen->mmHeight = pScreen->mmHeight * ((double) height / pScreen->height); pScreen->width = width; pScreen->height = height; - - /* FIXME: should probably do something with RandR here. */ + +#ifndef FAKE_RANDR + if(!DarwinModeRandRInit(pScreen)) + FatalError("Failed to init RandR extension.\n"); +#endif DarwinAdjustScreenOrigins(&screenInfo); quartzProcs->UpdateScreen(pScreen); @@ -231,7 +306,9 @@ static void QuartzUpdateScreens(void) e.u.configureNotify.override = pRoot->overrideRedirect; DeliverEvents(pRoot, &e, 1, NullWindow); - /* FIXME: Should we use RREditConnectionInfo(pScreen)? */ +#ifdef FAKE_RANDR + RREditConnectionInfo(pScreen); +#endif } From 24ba8a985fa9e478f805dca742f4ee8d15ef3d45 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 8 Nov 2007 22:17:38 -0800 Subject: [PATCH 43/74] fix for spurious "Are you sure you want to quit?" message --- hw/darwin/quartz/quartz.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index a0eb4ed8c..34f5e45fa 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -186,6 +186,7 @@ void DarwinModeInitInput( char **argv ) { #ifdef INXQUARTZ + X11ApplicationSetCanQuit(1); X11ApplicationServerReady(); #else QuartzMessageMainThread(kQuartzServerStarted, NULL, 0); From e99a715e54d5c990d976a38020bf78c9dda3fed4 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 9 Nov 2007 03:40:37 -0800 Subject: [PATCH 44/74] fixes to allow Xvfb and Xephyr to be built if you build with --disable-xdarwin --- configure.ac | 2 +- dix/main.c | 2 +- hw/Makefile.am | 2 ++ mi/miinitext.c | 6 +++--- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 22252fb78..083bc2d22 100644 --- a/configure.ac +++ b/configure.ac @@ -1727,7 +1727,7 @@ if test "$KDRIVE" = yes; then KDRIVE_OS_INC='-I$(top_srcdir)/hw/kdrive/linux' KDRIVE_INCS="$KDRIVE_PURE_INCS $KDRIVE_OS_INC" - KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS" + KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS -fno-common" # dix os fb mi extension glx (NOTYET) damage shadow xpstubs #KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \ diff --git a/dix/main.c b/dix/main.c index f3cde189c..586b800d0 100644 --- a/dix/main.c +++ b/dix/main.c @@ -259,7 +259,7 @@ main(int argc, char *argv[], char *envp[]) /* 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. */ -#if defined(__DARWIN__) && defined(DARWIN_WITH_QUARTZ) +#ifdef DARWIN_WITH_QUARTZ DarwinHandleGUI(argc, argv, envp); #endif diff --git a/hw/Makefile.am b/hw/Makefile.am index a1918ab0e..db76977af 100644 --- a/hw/Makefile.am +++ b/hw/Makefile.am @@ -22,7 +22,9 @@ if XPRINT XPRINT_SUBDIRS = xprint endif +if XDARWIN DARWIN_SUBDIRS = darwin +endif SUBDIRS = \ $(XORG_SUBDIRS) \ diff --git a/mi/miinitext.c b/mi/miinitext.c index 87367457a..f15d0c9f4 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -672,10 +672,10 @@ InitVisualWrap() { miResetInitVisuals(); #ifdef GLXEXT -#ifndef __DARWIN__ - GlxWrapInitVisuals(&miInitVisualsProc); -#else +#ifdef INXQUARTZ DarwinGlxWrapInitVisuals(&miInitVisualsProc); +#else + GlxWrapInitVisuals(&miInitVisualsProc); #endif #endif } From 9be5f6c850f1e6684a3c00ee886cbae7da728b77 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 9 Nov 2007 04:13:01 -0800 Subject: [PATCH 45/74] bump to 1.2a8 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 083bc2d22..3a046ceaf 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a7, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a8, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 1033e9521..92d369b22 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a7)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a8)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From 365eeda0bf20c76119f358fba6fe9e7b6cbb872d Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 9 Nov 2007 15:44:30 -0800 Subject: [PATCH 46/74] Fix {/usr/X11,/Applications/Utilities}/X11.app install targets to properly respect $DESTDIR. Credit to Jeremy Huddleston --- hw/darwin/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 45eb08bd6..545ff2f2a 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -302,9 +302,9 @@ uninstall-hook: install-data-hook: $(HOOK_TARGETS) xquartz-install-hook: - cd apple && xcodebuild install - cd launcher && xcodebuild install - + cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=/usr/X11 DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO + cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=/Applications/Utilities DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO + EXTRA_DIST = \ darwin.c \ darwinClut8.h \ From bf15469d6e72765db5d03db0beb12c20ec9d3880 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 11 Nov 2007 04:30:00 -0800 Subject: [PATCH 47/74] Fixed the call to xp_init so that we now receive Motion notifications even if X is not the active application. fixes xeyes dead until window activation --- hw/darwin/quartz/xpr/xprScreen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index d84e64668..589b1725a 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -233,7 +233,7 @@ xprDisplayInit(void) else darwinScreensFound = 1; - if (xp_init(XP_IN_BACKGROUND | XP_NO_DEFERRED_UPDATES) != Success) + if (xp_init(XP_BACKGROUND_EVENTS | XP_NO_DEFERRED_UPDATES) != Success) { FatalError("Could not initialize the Xplugin library."); } From 7baba3f6b8db059ff984afbe23a43d89638ccb0e Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 11 Nov 2007 04:30:34 -0800 Subject: [PATCH 48/74] These changes are necessary, yet not sufficient, to get 8-bit indexed color mode working in Xquartz. --- miext/rootless/rootlessCommon.c | 36 ++++++++++++++++++ miext/rootless/rootlessCommon.h | 18 +++++++++ miext/rootless/rootlessScreen.c | 65 +++++++++++++++++++++++++++++++++ miext/rootless/rootlessWindow.c | 28 ++++++++++++++ 4 files changed, 147 insertions(+) diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c index 8fd922d4a..fc22b1b89 100644 --- a/miext/rootless/rootlessCommon.c +++ b/miext/rootless/rootlessCommon.c @@ -34,6 +34,7 @@ #endif #include "rootlessCommon.h" +#include "colormapst.h" unsigned int rootless_CopyBytes_threshold = 0; unsigned int rootless_FillBytes_threshold = 0; @@ -95,6 +96,41 @@ IsFramedWindow(WindowPtr pWin) return (top && WINREC(top)); } +Bool +RootlessResolveColormap (ScreenPtr pScreen, int first_color, + int n_colors, uint32_t *colors) +{ + int last, i; + ColormapPtr map; + + map = RootlessGetColormap (pScreen); + if (map == NULL || map->class != PseudoColor) return FALSE; + + last = MIN (map->pVisual->ColormapEntries, first_color + n_colors); + for (i = MAX (0, first_color); i < last; i++) { + Entry *ent = map->red + i; + uint16_t red, green, blue; + + if (!ent->refcnt) continue; + if (ent->fShared) { + red = ent->co.shco.red->color; + green = ent->co.shco.green->color; + blue = ent->co.shco.blue->color; + } else { + red = ent->co.local.red; + green = ent->co.local.green; + blue = ent->co.local.blue; + } + + colors[i - first_color] = (0xFF000000UL + | ((uint32_t) red & 0xff00) << 8 + | (green & 0xff00) + | (blue >> 8)); + } + + return TRUE; +} + /* * RootlessStartDrawing diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h index 3bf6af02f..b00221400 100644 --- a/miext/rootless/rootlessCommon.h +++ b/miext/rootless/rootlessCommon.h @@ -32,6 +32,7 @@ #include #endif +#include #ifndef _ROOTLESSCOMMON_H #define _ROOTLESSCOMMON_H @@ -104,13 +105,20 @@ typedef struct _RootlessScreenRec { GlyphsProcPtr Glyphs; #endif + InstallColormapProcPtr InstallColormap; + UninstallColormapProcPtr UninstallColormap; + StoreColorsProcPtr StoreColors; + void *pixmap_data; unsigned int pixmap_data_size; + ColormapPtr colormap; + void *redisplay_timer; unsigned int redisplay_timer_set :1; unsigned int redisplay_queued :1; unsigned int redisplay_expired :1; + unsigned int colormap_changed :1; } RootlessScreenRec, *RootlessScreenPtr; @@ -251,6 +259,16 @@ void RootlessRedisplayScreen(ScreenPtr pScreen); void RootlessQueueRedisplay(ScreenPtr pScreen); +/* Return the colormap currently installed on the given screen. */ +ColormapPtr RootlessGetColormap (ScreenPtr pScreen); + +/* Convert colormap to ARGB. */ +Bool RootlessResolveColormap (ScreenPtr pScreen, int first_color, + int n_colors, uint32_t *colors); + +void RootlessFlushWindowColormap (WindowPtr pWin); +void RootlessFlushScreenColormaps (ScreenPtr pScreen); + // Move a window to its proper location on the screen. void RootlessRepositionWindow(WindowPtr pWin); diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index 356fec798..b3145815d 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -42,6 +42,7 @@ #include "propertyst.h" #include "mivalidate.h" #include "picturestr.h" +#include "colormapst.h" #include #include @@ -469,6 +470,67 @@ RootlessMarkOverlappedWindows(WindowPtr pWin, WindowPtr pFirst, return result; } +ColormapPtr +RootlessGetColormap (ScreenPtr pScreen) +{ + RootlessScreenRec *s = SCREENREC (pScreen); + + return s->colormap; +} + +static void +RootlessInstallColormap (ColormapPtr pMap) +{ + ScreenPtr pScreen = pMap->pScreen; + RootlessScreenRec *s = SCREENREC (pScreen); + + SCREEN_UNWRAP(pScreen, InstallColormap); + + if (s->colormap != pMap) { + s->colormap = pMap; + s->colormap_changed = TRUE; + RootlessQueueRedisplay (pScreen); + } + + pScreen->InstallColormap (pMap); + + SCREEN_WRAP (pScreen, InstallColormap); +} + +static void +RootlessUninstallColormap (ColormapPtr pMap) +{ + ScreenPtr pScreen = pMap->pScreen; + RootlessScreenRec *s = SCREENREC (pScreen); + + SCREEN_UNWRAP(pScreen, UninstallColormap); + + if (s->colormap == pMap) + s->colormap = NULL; + + pScreen->UninstallColormap (pMap); + + SCREEN_WRAP(pScreen, UninstallColormap); +} + +static void +RootlessStoreColors (ColormapPtr pMap, int ndef, xColorItem *pdef) +{ + ScreenPtr pScreen = pMap->pScreen; + RootlessScreenRec *s = SCREENREC (pScreen); + + SCREEN_UNWRAP(pScreen, StoreColors); + + if (s->colormap == pMap && ndef > 0) { + s->colormap_changed = TRUE; + RootlessQueueRedisplay (pScreen); + } + + pScreen->StoreColors (pMap, ndef, pdef); + + SCREEN_WRAP(pScreen, StoreColors); +} + static CARD32 RootlessRedisplayCallback(OsTimerPtr timer, CARD32 time, void *arg) @@ -616,6 +678,9 @@ RootlessWrap(ScreenPtr pScreen) WRAP(MarkOverlappedWindows); WRAP(ValidateTree); WRAP(ChangeWindowAttributes); + WRAP(InstallColormap); + WRAP(UninstallColormap); + WRAP(StoreColors); #ifdef SHAPE WRAP(SetShape); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 84aa91dbf..cf324267a 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -447,6 +447,12 @@ RootlessInitializeFrame(WindowPtr pWin, RootlessWindowRec *winRec) } +Bool +RootlessColormapCallback (void *data, int first_color, int n_colors, uint32_t *colors) +{ + return RootlessResolveColormap (data, first_color, n_colors, colors); +} + /* * RootlessEnsureFrame * Make sure the given window is framed. If the window doesn't have a @@ -505,6 +511,9 @@ RootlessEnsureFrame(WindowPtr pWin) return NULL; } + if (pWin->drawable.depth == 8) + RootlessFlushWindowColormap(pWin); + #ifdef SHAPE if (pShape != NULL) REGION_UNINIT(pScreen, &shape); @@ -1458,6 +1467,25 @@ out: } +void +RootlessFlushWindowColormap (WindowPtr pWin) +{ + RootlessWindowRec *winRec = WINREC (pWin); + xp_window_changes wc; + + if (winRec == NULL) + return; + + RootlessStopDrawing (pWin, FALSE); + + /* This is how we tell xp that the colormap may have changed. */ + + wc.colormap = RootlessColormapCallback; + wc.colormap_data = pWin->drawable.pScreen; + + configure_window (winRec->wid, XP_COLORMAP, &wc); +} + /* * SetPixmapOfAncestors * Set the Pixmaps on all ParentRelative windows up the ancestor chain. From 057b1c0a65f6fb375d7601720247827bb6860446 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 00:27:30 -0800 Subject: [PATCH 49/74] Patch to fix various issues with the launcher, courtesy of Jeremy Huddleston --- hw/darwin/launcher/bundle-main.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/darwin/launcher/bundle-main.c b/hw/darwin/launcher/bundle-main.c index 988c04f68..ca6255307 100644 --- a/hw/darwin/launcher/bundle-main.c +++ b/hw/darwin/launcher/bundle-main.c @@ -37,7 +37,7 @@ int main (int argc, char **argv) { char *command = DEFAULT_APP; - const char *newargv[5]; + const char *newargv[7]; int child; @@ -60,8 +60,10 @@ int main (int argc, char **argv) { newargv[0] = "/usr/bin/login"; newargv[1] = "-fp"; newargv[2] = getlogin(); - newargv[3] = command; - newargv[4] = NULL; + newargv[3] = "/bin/sh"; + newargv[4] = "-c"; + newargv[5] = command; + newargv[6] = NULL; child = fork(); From 0e87a3018681b1fe449ba59292a995737043787c Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 00:44:11 -0800 Subject: [PATCH 50/74] And now we kill XDarwinApp -- credit, Jeremy Huddleston --- configure.ac | 60 +++++++----- hw/darwin/Makefile.am | 185 +++-------------------------------- hw/darwin/quartz/Makefile.am | 14 --- 3 files changed, 48 insertions(+), 211 deletions(-) diff --git a/configure.ac b/configure.ac index 3a046ceaf..a203560e6 100644 --- a/configure.ac +++ b/configure.ac @@ -456,10 +456,10 @@ AC_ARG_WITH(rgb-path, AS_HELP_STRING([--with-rgb-path=PATH], [Path to RG AC_ARG_WITH(dri-driver-path, AS_HELP_STRING([--with-dri-driver-path=PATH], [Path to DRI drivers (default: ${libdir}/dri)]), [ DRI_DRIVER_PATH="$withval" ], [ DRI_DRIVER_PATH="${libdir}/dri" ]) -APPLE_APPLICATIONS_DIR="${bindir}/Applications" -AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: ${bindir}/Applications)]), +APPLE_APPLICATIONS_DIR="/Applications/Utilities" +AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: /Applications/Utilities)]), [ APPLE_APPLICATIONS_DIR="${withval}" ]. - [ APPLE_APPLICATIONS_DIR="${bindir}/Applications" ]) + [ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ]) AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]), [BUILDDOCS=$enableval], @@ -511,9 +511,8 @@ AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (d AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: no)]), [XVFB=$enableval], [XVFB=no]) AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: no)]), [XNEST=$enableval], [XNEST=no]) AC_ARG_ENABLE(xdarwin, AS_HELP_STRING([--enable-xdarwin], [Build XDarwin server (default: auto)]), [XDARWIN=$enableval], [XDARWIN=auto]) -AC_ARG_ENABLE(xdarwinapp, AS_HELP_STRING([--enable-xdarwinapp], [Build XDarwin.app server (default: no)]), [XDARWINAPP=$enableval], [XDARWINAPP=no]) AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--disable-xquartz], [Build Xquartz server on Darwin (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) -AC_ARG_ENABLE(x11app, AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app wrapper for Xquartz (default: no)]), [X11APP=$enableval], [X11APP=no]) +AC_ARG_ENABLE(x11app, AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app wrapper for Xquartz (default: auto)]), [X11APP=$enableval], [X11APP=auto]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) @@ -1479,7 +1478,6 @@ AM_CONDITIONAL(MFB, [test "x$XORG" = xyes]) AM_CONDITIONAL(CFB, [test "x$XORG" = xyes]) AM_CONDITIONAL(AFB, [test "x$XORG" = xyes]) AM_CONDITIONAL([BUILD_DARWIN],[test "X$build_darwin" = Xyes]) -AM_CONDITIONAL([XQUARTZ],[test "X$XQUARTZ" = Xyes]) dnl Xprint DDX @@ -1603,7 +1601,7 @@ AM_CONDITIONAL(XWIN_RANDR, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes]) dnl Darwin / OS X DDX -AC_MSG_CHECKING([whether to build XDarwin (Mac OS X) DDX]) +AC_MSG_CHECKING([whether to build XDarwin/Xquartz]) if test "x$XDARWIN" = xauto; then case $host_os in darwin*) XDARWIN="yes" ;; @@ -1613,25 +1611,33 @@ fi AC_MSG_RESULT([$XDARWIN]) if test "x$XDARWIN" = xyes; then - if test "X$XQUARTZ" = Xauto; then - AC_CACHE_CHECK([for Carbon framework],xorg_cv_Carbon_framework,[ - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -framework Carbon" - AC_LINK_IFELSE([char FSFindFolder(); -int main() { -FSFindFolder(); -return 0;} - ],[xorg_cv_Carbon_framework=yes], - [xorg_cv_Carbon_framework=no]) - LDFLAGS=$save_LDFLAGS]) - if test "X$xorg_cv_Carbon_framework" = Xyes; then - AC_DEFINE([DARWIN_WITH_QUARTZ],[1], - [Have Quartz]) - XQUARTZ=yes - else - XQUARTZ=no - fi - fi + if test "X$XQUARTZ" = Xauto; then + AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[ + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -framework Carbon" + AC_LINK_IFELSE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}], + [xorg_cv_Carbon_framework=yes], + [xorg_cv_Carbon_framework=no]) + LDFLAGS=$save_LDFLAGS]) + + if test "X$xorg_cv_Carbon_framework" = Xyes; then + AC_DEFINE([DARWIN_WITH_QUARTZ],[1],[Have Quartz]) + XQUARTZ=yes + else + XQUARTZ=no + fi + fi + + if test "x$X11APP" = xauto; then + AC_MSG_CHECKING([whether to build X11.app]) + if test "x$XQUARTZ" = xyes ; then + X11APP=yes + else + X11APP=no + fi + AC_MSG_RESULT([$X11APP]) + fi + # glxAGL / glxCGL don't work yet # AC_CACHE_CHECK([for AGL framework],xorg_cv_AGL_framework,[ # save_LDFLAGS=$LDFLAGS @@ -1686,8 +1692,8 @@ _AM_DEPENDENCIES([OBJC]) AM_CONDITIONAL(HAVE_XPLUGIN, [test "x$ac_cv_lib_Xplugin_xp_init" = xyes]) AM_CONDITIONAL(HAVE_AGL_FRAMEWORK, [test "x$xorg_cv_AGL_framework" = xyes]) AM_CONDITIONAL(XDARWIN, [test "x$XDARWIN" = xyes]) -AM_CONDITIONAL(XDARWINAPP, [test "x$XDARWINAPP" = xyes]) AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes]) +AM_CONDITIONAL(X11APP,[test "X$X11APP" = Xyes]) dnl kdrive DDX diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 545ff2f2a..ccaacfde2 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -7,7 +7,7 @@ INCLUDES = @XORG_INCS@ -I../../miext/rootless DEFS = @DEFS@ -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" if XQUARTZ -XQUARTZ_SUBDIRS = bundle quartz +XQUARTZ_SUBDIRS = quartz endif SUBDIRS = \ @@ -16,14 +16,17 @@ SUBDIRS = \ utils \ . -darwinappdir = /Applications/Utilities/XDarwin.app - libdarwinShared_a_SOURCES = darwin.c \ darwinEvents.c \ darwinKeyboard.c \ $(darwin_XINPUT_SRCS) +if XQUARTZ bin_PROGRAMS = Xquartz +else +bin_PROGRAMS = XDarwin +endif + XDarwin_SOURCES = \ $(top_srcdir)/fb/fbcmap.c \ $(top_srcdir)/mi/miinitext.c \ @@ -126,185 +129,27 @@ XDarwin_CFLAGS = -DINXDARWIN Xquartz_CFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API -DHAVE_XORG_CONFIG_H Xquartz_OBJCFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API -DHAVE_XORG_CONFIG_H -if XQUARTZ -macosdir = $(darwinappdir)/Contents/MacOS - -DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server - -macos_PROGRAMS = -macos_SCRIPTS = x11app +if X11APP +bin_SCRIPTS = x11app x11launcher x11app: - cd apple && xcodebuild + cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" -XDarwinApp_SOURCES = \ - $(top_srcdir)/fb/fbcmap.c \ - $(top_srcdir)/mi/miinitext.c \ - $(top_srcdir)/Xi/stubs.c - -XDarwinApp_LDADD = \ - $(top_builddir)/dix/dixfonts.lo \ - $(top_builddir)/dix/libdix.la \ - $(top_builddir)/os/libos.la \ - ./quartz/XApplication.o \ - ./libdarwinShared.a \ - ./quartz/libXQuartz.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 \ - $(XGLX_LIBS) \ - $(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 \ - $(top_builddir)/fb/libfb.la - -XDarwinApp_LDFLAGS = \ - -XCClinker -Objc \ - -Wl,-u,_miDCInitialize \ - -Wl,-framework,Carbon \ - -Wl,-framework,ApplicationServices \ - -Wl,-framework,Cocoa \ - -Wl,-framework,CoreAudio \ - -Wl,-framework,IOKit - -HOOK_TARGETS = xquartz-install-hook - - -crplugindir = $(darwinappdir)/Contents/Resources/cr.bundle/Contents/MacOS -crplugin_LTLIBRARIES = -cr_la_SOURCES = -cr_la_LIBADD = \ - quartz/cr/crAppleWM.o \ - quartz/cr/crFrame.o \ - quartz/cr/crScreen.o \ - quartz/fullscreen/quartzCursor.o \ - quartz/cr/XView.o \ - $(top_builddir)/miext/rootless/librootless.la \ - $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ - $(top_builddir)/miext/rootless/accel/librlAccel.la -cr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ - -Wl,-framework,Cocoa \ - -Wl,-framework,Carbon \ - -XCClinker -ObjC \ - -XCClinker -bundle_loader -XCClinker XDarwinApp \ - -module -avoid-version -no-undefined -cr_la_DEPENDENCIES = XDarwinApp - -fullscreenplugindir = $(darwinappdir)/Contents/Resources/fullscreen.bundle/Contents/MacOS -fullscreenplugin_LTLIBRARIES = -fullscreen_la_SOURCES = -fullscreen_la_LIBADD = \ - quartz/fullscreen/fullscreen.o \ - quartz/fullscreen/quartzCursor.o \ - $(top_builddir)/miext/shadow/libshadow.la - -fullscreen_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ - -XCClinker -bundle_loader -XCClinker XDarwinApp \ - -module -avoid-version -no-undefined -fullscreen_la_DEPENDENCIES = XDarwinApp - -if GLX -glxMesaplugindir = $(darwinappdir)/Contents/Resources/glxMesa.bundle/Contents/MacOS -glxMesaplugin_LTLIBRARIES = -glxMesa_la_SOURCES = -glxMesa_la_LIBADD = \ - $(top_builddir)/GL/glx/libglx.la \ - $(top_builddir)/GL/mesa/libGLcore.la -glxMesa_la_LDFLAGS = -shrext '' \ - -Wl,-framework,AGL \ - -Wl,-framework,OpenGL \ - -XCClinker -ObjC \ - -XCClinker -bundle_loader -XCClinker XDarwinApp \ - -module -avoid-version -no-undefined -glxMesa_la_DEPENDENCIES = XDarwinApp -endif - -endif - -xprplugindir = $(darwinappdir)/Contents/Resources/xpr.bundle/Contents/MacOS -xprplugin_LTLIBRARIES = -xpr_la_SOURCES = -xpr_la_LIBADD = \ - quartz/xpr/appledri.o \ - quartz/xpr/dri.o \ - quartz/xpr/xprAppleWM.o \ - quartz/xpr/xprCursor.o \ - quartz/xpr/xprFrame.o \ - quartz/xpr/xprScreen.o \ - quartz/xpr/x-hash.o \ - quartz/xpr/x-hook.o \ - quartz/xpr/x-list.o \ - $(top_builddir)/miext/rootless/librootless.la \ - $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ - $(top_builddir)/miext/rootless/accel/librlAccel.la -xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ - -lXplugin \ - -XCClinker -bundle_loader -XCClinker XDarwinApp \ - -module -avoid-version -no-undefined -xpr_la_DEPENDENCIES = XDarwinApp - - -if HAVE_AGL_FRAMEWORK -glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS -glxCGLplugin_LTLIBRARIES = -glxCGL_la_SOURCES = -glxCGL_la_LIBADD = \ - $(top_builddir)/GL/glx/glxext.o \ - $(top_builddir)/GL/glx/libglx.a \ - $(top_builddir)/GL/apple/libAGLcore.a -glxCGL_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \ - -Wl,-framework,AGL \ - -Wl,-framework,OpenGL \ - -XCClinker -ObjC \ - -XCClinker -bundle_loader -XCClinker XDarwinApp \ - -module -avoid-version -no-undefined -glxCGL_la_DEPENDENCIES = XDarwinApp - - -glxAGLplugindir = $(darwinappdir)/Contents/Resources/glxAGL.bundle/Contents/MacOS -glxAGLplugin_LTLIBRARIES = -glxAGL_la_SOURCES = -glxAGL_la_LIBADD = \ - $(top_builddir)/GL/glx/glxext.o \ - $(top_builddir)/GL/glx/libglx.a \ - $(top_builddir)/GL/apple/libAGLcore.a -glxAGL_la_LDFLAGS = -shrext '' \ - -Wl,-framework,AGL \ - -Wl,-framework,OpenGL \ - -XCClinker -ObjC \ - -XCClinker -bundle_loader -XCClinker XDarwinApp \ - -module -avoid-version -no-undefined -glxAGL_la_DEPENDENCIES = XDarwinApp +x11launcher: + cd launcher && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" +x11app-install-hook: + cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefixdir) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO + cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO +HOOK_TARGETS = x11app-install-hook endif man1_MANS = XDarwin.man -uninstall-hook: - rm -rf $(DESTDIR)$(macosdir)/XDarwin - install-data-hook: $(HOOK_TARGETS) -xquartz-install-hook: - cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=/usr/X11 DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO - cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=/Applications/Utilities DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO - EXTRA_DIST = \ darwin.c \ darwinClut8.h \ diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am index 0d236be8b..baa7d4404 100644 --- a/hw/darwin/quartz/Makefile.am +++ b/hw/darwin/quartz/Makefile.am @@ -25,20 +25,6 @@ libXQuartz_a_SOURCES = \ quartzStartup.c \ pseudoramiX.c -bin_PROGRAMS = XDarwinStartup - -XDarwinStartup_SOURCES = XDarwinStartup.c -XDarwinStartup_LDFLAGS = -Wl,-framework,CoreFoundation \ - -Wl,-framework,ApplicationServices -XDarwinStartupCFLAGS = -DXBINDIR="${bindir}" -XDARWINROOT = @APPLE_APPLICATIONS_DIR@ -BINDIR = $(bindir) -install-exec-local: - -(cd $(DESTDIR)$(BINDIR); rm X; $(LN_S) XDarwinStartup X) - -man1_MANS = XDarwinStartup.man - - EXTRA_DIST = \ applewmExt.h \ keysym2ucs.h \ From 65b4e4733ffe425c19902af035eb7b49642ed034 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 16:41:13 -0800 Subject: [PATCH 51/74] Fix for stuck modifier keys, attempt 2! --- hw/darwin/darwinEvents.c | 44 ++++++++++++++++++++++++++++++++------ hw/darwin/darwinKeyboard.c | 2 ++ 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index 6293d6b55..c9b30ee28 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -41,7 +41,6 @@ in this Software without prior written authorization from The Open Group. #include "mi.h" #include "scrnintstr.h" #include "mipointer.h" - #include "darwin.h" #include "darwinKeyboard.h" @@ -72,7 +71,8 @@ typedef struct _EventQueue { } EventQueueRec, *EventQueuePtr; static EventQueueRec darwinEventQueue; - +extern KeyClassPtr darwinKeyc; +#define KeyPressed(k) (darwinKeyc->down[k >> 3] & (1 << (k & 7))) /* * DarwinPressModifierMask @@ -150,8 +150,37 @@ static void DarwinUpdateModifiers( * are held down during a "context" switch -- otherwise, we would miss the KeyUp. */ static void DarwinReleaseModifiers(void) { - xEvent e; - DarwinUpdateModifiers(&e, KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1)); + KeySym *map = NULL; + xEvent ke; + int i = 0, j = 0, nevents = 0; + + map = darwinKeyc->curKeySyms.map; + + for (i = darwinKeyc->curKeySyms.minKeyCode, map = darwinKeyc->curKeySyms.map; + i < darwinKeyc->curKeySyms.maxKeyCode; + i++, map += darwinKeyc->curKeySyms.mapWidth) { + if (KeyPressed(i)) { + switch (*map) { + /* Don't release the lock keys */ + case XK_Caps_Lock: + case XK_Shift_Lock: + case XK_Num_Lock: + case XK_Scroll_Lock: + case XK_Kana_Lock: + break; + default: + ke.u.keyButtonPointer.time = GetTimeInMillis(); + ke.u.keyButtonPointer.rootX = 0; + ke.u.keyButtonPointer.rootY = 0; + ke.u.u.type = KeyRelease; + ke.u.u.detail = i; + (*darwinEventQueue.pKbd->processInputProc)(&ke, + (DeviceIntPtr)darwinEventQueue.pKbd, 1); + break; + } + } + } + ProcessInputEvents(); } /* @@ -477,9 +506,10 @@ void ProcessInputEvents(void) break; } - case kXDarwinDeactivate: - DarwinReleaseModifiers(); - // fall through + case kXDarwinDeactivate: + DarwinReleaseModifiers(); + old_flags=0; + // fall through default: // Check for mode specific event DarwinModeProcessEvent(&xe); diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c index 2a10496fd..3685bffff 100644 --- a/hw/darwin/darwinKeyboard.c +++ b/hw/darwin/darwinKeyboard.c @@ -220,6 +220,7 @@ static void DarwinChangeKeyboardControl( DeviceIntPtr device, KeybdCtrl *ctrl ) static darwinKeyboardInfo keyInfo; static FILE *fref = NULL; static char *inBuffer = NULL; +KeyClassPtr darwinKeyc = NULL; //----------------------------------------------------------------------------- // Data Stream Object @@ -835,6 +836,7 @@ InitModMap(register KeyClassPtr keyc) CARD8 keysPerModifier[8]; CARD8 mask; + darwinKeyc = keyc; if (keyc->modifierKeyMap != NULL) xfree (keyc->modifierKeyMap); From 3a532addbd820e1f4420f811f27dfd9dd5b079d5 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 16:42:00 -0800 Subject: [PATCH 52/74] converted some debugging prints to TRACE() statements --- hw/darwin/quartz/quartz.c | 17 ++++++++++------- hw/darwin/quartz/quartz.h | 8 ++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 34f5e45fa..c0666e64f 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -253,7 +253,7 @@ static void QuartzUpdateScreens(void) int x, y, width, height, sx, sy; xEvent e; - ErrorF("QuartzUpdateScreens()\n"); + TRACE("QuartzUpdateScreens()\n"); if (noPseudoramiXExtension || screenInfo.numScreens != 1) { /* FIXME: if not using Xinerama, we have multiple screens, and @@ -421,6 +421,7 @@ void DarwinModeProcessEvent( { switch (xe->u.u.type) { case kXDarwinControllerNotify: + TRACE("kXDarwinControllerNotify\n"); AppleWMSendEvent(AppleWMControllerNotify, AppleWMControllerNotifyMask, xe->u.clientMessage.u.l.longs0, @@ -428,6 +429,7 @@ void DarwinModeProcessEvent( break; case kXDarwinPasteboardNotify: + TRACE("kXDarwinPasteboardNotify\n"); AppleWMSendEvent(AppleWMPasteboardNotify, AppleWMPasteboardNotifyMask, xe->u.clientMessage.u.l.longs0, @@ -435,7 +437,7 @@ void DarwinModeProcessEvent( break; case kXDarwinActivate: - // ErrorF("kXDarwinActivate\n"); + TRACE("kXDarwinActivate\n"); QuartzShow(xe->u.keyButtonPointer.rootX, xe->u.keyButtonPointer.rootY); AppleWMSendEvent(AppleWMActivationNotify, @@ -444,7 +446,7 @@ void DarwinModeProcessEvent( break; case kXDarwinDeactivate: - // ErrorF("kXDarwinDeactivate\n"); + TRACE("kXDarwinDeactivate\n"); AppleWMSendEvent(AppleWMActivationNotify, AppleWMActivationNotifyMask, AppleWMIsInactive, 0); @@ -452,22 +454,23 @@ void DarwinModeProcessEvent( break; case kXDarwinDisplayChanged: - // ErrorF("kXDarwinDisplayChanged\n"); + TRACE("kXDarwinDisplayChanged\n"); QuartzUpdateScreens(); break; case kXDarwinWindowState: - // ErrorF("kXDarwinWindowState\n"); + TRACE("kXDarwinWindowState\n"); RootlessNativeWindowStateChanged(xe->u.clientMessage.u.l.longs0, xe->u.clientMessage.u.l.longs1); break; case kXDarwinWindowMoved: - // ErrorF("kXDarwinWindowMoved\n"); + TRACE("kXDarwinWindowMoved\n"); RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0); break; case kXDarwinToggleFullscreen: + TRACE("kXDarwinToggleFullscreen\n"); #ifdef DARWIN_DDX_MISSING if (quartzEnableRootless) QuartzSetFullscreen(!quartzHasRoot); else if (quartzHasRoot) QuartzHide(); @@ -503,7 +506,7 @@ void DarwinModeProcessEvent( break; case kXDarwinBringAllToFront: - // ErrorF("kXDarwinBringAllToFront\n"); + TRACE("kXDarwinBringAllToFront\n"); RootlessOrderAllWindows(); break; diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h index 172f3239b..febc51a0b 100644 --- a/hw/darwin/quartz/quartz.h +++ b/hw/darwin/quartz/quartz.h @@ -38,6 +38,14 @@ #include "screenint.h" #include "window.h" +//#define DEBUG 1 + +#ifdef DEBUG +#define TRACE(msg, args...) ErrorF("%s:%d: " msg, __FUNCTION__, __LINE__, ##args ) +#else +#define TRACE(msg, args...) +#endif + /*------------------------------------------ Quartz display mode function types ------------------------------------------*/ From 51ac429223b9fa61609b97727cc840b07d49ef5c Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 19:08:40 -0800 Subject: [PATCH 53/74] More build system fixes from Jeremy --- hw/darwin/Makefile.am | 29 ++++++++++++++----- hw/darwin/apple/X11.xcodeproj/project.pbxproj | 19 ++++-------- .../launcher/X11.xcodeproj/project.pbxproj | 17 ++++------- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index ccaacfde2..d41e7cc97 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -13,8 +13,12 @@ endif SUBDIRS = \ iokit \ $(XQUARTZ_SUBDIRS) \ - utils \ - . + utils + +DIST_SUBDIRS = \ + iokit \ + quartz \ + utils libdarwinShared_a_SOURCES = darwin.c \ darwinEvents.c \ @@ -138,18 +142,25 @@ x11app: x11launcher: cd launcher && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" -x11app-install-hook: - cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefixdir) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO +x11app-install: + cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO + +x11launcher-install: cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO -HOOK_TARGETS = x11app-install-hook +x11app-clean: + rm -rf apple/build + +x11launcher-clean: + rm -rf launcher/build + +install-data-hook: x11app-install x11launcher-install +clean-local: x11app-clean x11launcher-clean endif man1_MANS = XDarwin.man -install-data-hook: $(HOOK_TARGETS) - EXTRA_DIST = \ darwin.c \ darwinClut8.h \ @@ -170,4 +181,8 @@ EXTRA_DIST = \ apple/English.lproj/main.nib/info.nib \ apple/English.lproj/main.nib/keyedobjects.nib \ apple/X11.xcodeproj/project.pbxproj \ + launcher/bundle-main.c \ + launcher/Info.plist \ + launcher/X11.icns \ + launcher/X11.xcodeproj/project.pbxproj \ XDarwin.man diff --git a/hw/darwin/apple/X11.xcodeproj/project.pbxproj b/hw/darwin/apple/X11.xcodeproj/project.pbxproj index a47e4d157..217f07e52 100644 --- a/hw/darwin/apple/X11.xcodeproj/project.pbxproj +++ b/hw/darwin/apple/X11.xcodeproj/project.pbxproj @@ -207,38 +207,33 @@ 527F24090B5D8FFC007840A7 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; - SKIP_INSTALL = YES; + INSTALL_MODE_FLAG = "a+rX"; }; name = Development; }; 527F240A0B5D8FFC007840A7 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; - SKIP_INSTALL = YES; + INSTALL_MODE_FLAG = "a+rX"; }; name = Deployment; }; 527F240B0B5D8FFC007840A7 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; - SKIP_INSTALL = YES; + INSTALL_MODE_FLAG = "a+rX"; }; name = Default; }; 527F24230B5D938C007840A7 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(NATIVE_ARCH_32_BIT)"; COPY_PHASE_STRIP = NO; - DSTROOT = "$(DSTROOT)"; FRAMEWORK_SEARCH_PATHS = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = /usr/X11/include; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = $DSTROOT/Applications/Utilties; + INSTALL_PATH = /usr/X11; LIBRARY_SEARCH_PATHS = /usr/X11/lib; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -262,12 +257,11 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; - DSTROOT = "$(DSTROOT)"; FRAMEWORK_SEARCH_PATHS = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = /usr/X11/include; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = $DSTROOT/Applications/Utilties; + INSTALL_PATH = /usr/X11; LIBRARY_SEARCH_PATHS = /usr/X11/lib; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( @@ -290,12 +284,11 @@ 527F24250B5D938C007840A7 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; FRAMEWORK_SEARCH_PATHS = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = /usr/X11/include; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = $DSTROOT/Applications/Utilties; + INSTALL_PATH = /usr/X11; LIBRARY_SEARCH_PATHS = /usr/X11/lib; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( diff --git a/hw/darwin/launcher/X11.xcodeproj/project.pbxproj b/hw/darwin/launcher/X11.xcodeproj/project.pbxproj index f82552ac5..34b76dafb 100644 --- a/hw/darwin/launcher/X11.xcodeproj/project.pbxproj +++ b/hw/darwin/launcher/X11.xcodeproj/project.pbxproj @@ -164,33 +164,28 @@ 527F24090B5D8FFC007840A7 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; - SKIP_INSTALL = YES; + INSTALL_MODE_FLAG = "a+rX"; }; name = Development; }; 527F240A0B5D8FFC007840A7 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; - SKIP_INSTALL = YES; + INSTALL_MODE_FLAG = "a+rX"; }; name = Deployment; }; 527F240B0B5D8FFC007840A7 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; - SKIP_INSTALL = YES; + INSTALL_MODE_FLAG = "a+rX"; }; name = Default; }; 527F24230B5D938C007840A7 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(NATIVE_ARCH_32_BIT)"; COPY_PHASE_STRIP = NO; - DSTROOT = "$(DSTROOT)"; FRAMEWORK_SEARCH_PATHS = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = /usr/X11/include; @@ -219,12 +214,11 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; - DSTROOT = "$(DSTROOT)"; FRAMEWORK_SEARCH_PATHS = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = /usr/X11/include; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = $DSTROOT/Applications/Utilties; + INSTALL_PATH = /Applications/Utilties; LIBRARY_SEARCH_PATHS = /usr/X11/lib; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; @@ -243,12 +237,11 @@ 527F24250B5D938C007840A7 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { - DSTROOT = "$(DSTROOT)"; FRAMEWORK_SEARCH_PATHS = ""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = /usr/X11/include; INFOPLIST_FILE = Info.plist; - INSTALL_PATH = $DSTROOT/Applications/Utilties; + INSTALL_PATH = /Applications/Utilties; LIBRARY_SEARCH_PATHS = /usr/X11/lib; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ( From 80097bafc24e60fffbdb3a5415efc13e26407c46 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 20:10:10 -0800 Subject: [PATCH 54/74] null pointer check --- hw/darwin/darwinEvents.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index c9b30ee28..85ae30543 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -154,6 +154,7 @@ static void DarwinReleaseModifiers(void) { xEvent ke; int i = 0, j = 0, nevents = 0; + if (!darwinKeyc) return; map = darwinKeyc->curKeySyms.map; for (i = darwinKeyc->curKeySyms.minKeyCode, map = darwinKeyc->curKeySyms.map; From 9079b574458832ca2f19a479e14c425445d4c5c3 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 21:32:21 -0800 Subject: [PATCH 55/74] bump to 1.2a9 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index a203560e6..b6d4c1523 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a8, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a9, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 92d369b22..7132186c3 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a8)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a9)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From 45f8601692cf31bc3acdab56fad6688064bbdcb6 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Mon, 12 Nov 2007 21:33:04 -0800 Subject: [PATCH 56/74] Revert "These changes are necessary, yet not sufficient, to get 8-bit indexed" This reverts commit 7baba3f6b8db059ff984afbe23a43d89638ccb0e. This should hopefully prevent the "sunglasses" problem aka "why is my xterm black"? --- miext/rootless/rootlessCommon.c | 36 ------------------ miext/rootless/rootlessCommon.h | 18 --------- miext/rootless/rootlessScreen.c | 65 --------------------------------- miext/rootless/rootlessWindow.c | 28 -------------- 4 files changed, 147 deletions(-) diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c index fc22b1b89..8fd922d4a 100644 --- a/miext/rootless/rootlessCommon.c +++ b/miext/rootless/rootlessCommon.c @@ -34,7 +34,6 @@ #endif #include "rootlessCommon.h" -#include "colormapst.h" unsigned int rootless_CopyBytes_threshold = 0; unsigned int rootless_FillBytes_threshold = 0; @@ -96,41 +95,6 @@ IsFramedWindow(WindowPtr pWin) return (top && WINREC(top)); } -Bool -RootlessResolveColormap (ScreenPtr pScreen, int first_color, - int n_colors, uint32_t *colors) -{ - int last, i; - ColormapPtr map; - - map = RootlessGetColormap (pScreen); - if (map == NULL || map->class != PseudoColor) return FALSE; - - last = MIN (map->pVisual->ColormapEntries, first_color + n_colors); - for (i = MAX (0, first_color); i < last; i++) { - Entry *ent = map->red + i; - uint16_t red, green, blue; - - if (!ent->refcnt) continue; - if (ent->fShared) { - red = ent->co.shco.red->color; - green = ent->co.shco.green->color; - blue = ent->co.shco.blue->color; - } else { - red = ent->co.local.red; - green = ent->co.local.green; - blue = ent->co.local.blue; - } - - colors[i - first_color] = (0xFF000000UL - | ((uint32_t) red & 0xff00) << 8 - | (green & 0xff00) - | (blue >> 8)); - } - - return TRUE; -} - /* * RootlessStartDrawing diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h index b00221400..3bf6af02f 100644 --- a/miext/rootless/rootlessCommon.h +++ b/miext/rootless/rootlessCommon.h @@ -32,7 +32,6 @@ #include #endif -#include #ifndef _ROOTLESSCOMMON_H #define _ROOTLESSCOMMON_H @@ -105,20 +104,13 @@ typedef struct _RootlessScreenRec { GlyphsProcPtr Glyphs; #endif - InstallColormapProcPtr InstallColormap; - UninstallColormapProcPtr UninstallColormap; - StoreColorsProcPtr StoreColors; - void *pixmap_data; unsigned int pixmap_data_size; - ColormapPtr colormap; - void *redisplay_timer; unsigned int redisplay_timer_set :1; unsigned int redisplay_queued :1; unsigned int redisplay_expired :1; - unsigned int colormap_changed :1; } RootlessScreenRec, *RootlessScreenPtr; @@ -259,16 +251,6 @@ void RootlessRedisplayScreen(ScreenPtr pScreen); void RootlessQueueRedisplay(ScreenPtr pScreen); -/* Return the colormap currently installed on the given screen. */ -ColormapPtr RootlessGetColormap (ScreenPtr pScreen); - -/* Convert colormap to ARGB. */ -Bool RootlessResolveColormap (ScreenPtr pScreen, int first_color, - int n_colors, uint32_t *colors); - -void RootlessFlushWindowColormap (WindowPtr pWin); -void RootlessFlushScreenColormaps (ScreenPtr pScreen); - // Move a window to its proper location on the screen. void RootlessRepositionWindow(WindowPtr pWin); diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index b3145815d..356fec798 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -42,7 +42,6 @@ #include "propertyst.h" #include "mivalidate.h" #include "picturestr.h" -#include "colormapst.h" #include #include @@ -470,67 +469,6 @@ RootlessMarkOverlappedWindows(WindowPtr pWin, WindowPtr pFirst, return result; } -ColormapPtr -RootlessGetColormap (ScreenPtr pScreen) -{ - RootlessScreenRec *s = SCREENREC (pScreen); - - return s->colormap; -} - -static void -RootlessInstallColormap (ColormapPtr pMap) -{ - ScreenPtr pScreen = pMap->pScreen; - RootlessScreenRec *s = SCREENREC (pScreen); - - SCREEN_UNWRAP(pScreen, InstallColormap); - - if (s->colormap != pMap) { - s->colormap = pMap; - s->colormap_changed = TRUE; - RootlessQueueRedisplay (pScreen); - } - - pScreen->InstallColormap (pMap); - - SCREEN_WRAP (pScreen, InstallColormap); -} - -static void -RootlessUninstallColormap (ColormapPtr pMap) -{ - ScreenPtr pScreen = pMap->pScreen; - RootlessScreenRec *s = SCREENREC (pScreen); - - SCREEN_UNWRAP(pScreen, UninstallColormap); - - if (s->colormap == pMap) - s->colormap = NULL; - - pScreen->UninstallColormap (pMap); - - SCREEN_WRAP(pScreen, UninstallColormap); -} - -static void -RootlessStoreColors (ColormapPtr pMap, int ndef, xColorItem *pdef) -{ - ScreenPtr pScreen = pMap->pScreen; - RootlessScreenRec *s = SCREENREC (pScreen); - - SCREEN_UNWRAP(pScreen, StoreColors); - - if (s->colormap == pMap && ndef > 0) { - s->colormap_changed = TRUE; - RootlessQueueRedisplay (pScreen); - } - - pScreen->StoreColors (pMap, ndef, pdef); - - SCREEN_WRAP(pScreen, StoreColors); -} - static CARD32 RootlessRedisplayCallback(OsTimerPtr timer, CARD32 time, void *arg) @@ -678,9 +616,6 @@ RootlessWrap(ScreenPtr pScreen) WRAP(MarkOverlappedWindows); WRAP(ValidateTree); WRAP(ChangeWindowAttributes); - WRAP(InstallColormap); - WRAP(UninstallColormap); - WRAP(StoreColors); #ifdef SHAPE WRAP(SetShape); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index cf324267a..84aa91dbf 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -447,12 +447,6 @@ RootlessInitializeFrame(WindowPtr pWin, RootlessWindowRec *winRec) } -Bool -RootlessColormapCallback (void *data, int first_color, int n_colors, uint32_t *colors) -{ - return RootlessResolveColormap (data, first_color, n_colors, colors); -} - /* * RootlessEnsureFrame * Make sure the given window is framed. If the window doesn't have a @@ -511,9 +505,6 @@ RootlessEnsureFrame(WindowPtr pWin) return NULL; } - if (pWin->drawable.depth == 8) - RootlessFlushWindowColormap(pWin); - #ifdef SHAPE if (pShape != NULL) REGION_UNINIT(pScreen, &shape); @@ -1467,25 +1458,6 @@ out: } -void -RootlessFlushWindowColormap (WindowPtr pWin) -{ - RootlessWindowRec *winRec = WINREC (pWin); - xp_window_changes wc; - - if (winRec == NULL) - return; - - RootlessStopDrawing (pWin, FALSE); - - /* This is how we tell xp that the colormap may have changed. */ - - wc.colormap = RootlessColormapCallback; - wc.colormap_data = pWin->drawable.pScreen; - - configure_window (winRec->wid, XP_COLORMAP, &wc); -} - /* * SetPixmapOfAncestors * Set the Pixmaps on all ParentRelative windows up the ancestor chain. From e4edb3504102730058f371a0ea6a2bb8f6837fe9 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Tue, 13 Nov 2007 01:08:02 -0800 Subject: [PATCH 57/74] fix missing -DXFree86Server; this needs to be defined when building fb/fbcmap.c or else you get the "sunglasses effect" --- hw/darwin/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index d41e7cc97..04d996552 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -4,7 +4,7 @@ libdarwin_XINPUT_SRCS = darwinXinput.c AM_CFLAGS = @XORG_CFLAGS@ INCLUDES = @XORG_INCS@ -I../../miext/rootless -DEFS = @DEFS@ -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" +DEFS = @DEFS@ -DUSE_NEW_CLUT -DXFree86Server -DBUILD_DATE=\"$(BUILD_DATE)\" if XQUARTZ XQUARTZ_SUBDIRS = quartz From 8f600d98428ee41468726801e42b8d4f17936e3f Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Tue, 13 Nov 2007 01:09:16 -0800 Subject: [PATCH 58/74] Revert "Revert "These changes are necessary, yet not sufficient, to get 8-bit indexed"" This reverts commit 45f8601692cf31bc3acdab56fad6688064bbdcb6. bah, not needed --- miext/rootless/rootlessCommon.c | 36 ++++++++++++++++++ miext/rootless/rootlessCommon.h | 18 +++++++++ miext/rootless/rootlessScreen.c | 65 +++++++++++++++++++++++++++++++++ miext/rootless/rootlessWindow.c | 28 ++++++++++++++ 4 files changed, 147 insertions(+) diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c index 8fd922d4a..fc22b1b89 100644 --- a/miext/rootless/rootlessCommon.c +++ b/miext/rootless/rootlessCommon.c @@ -34,6 +34,7 @@ #endif #include "rootlessCommon.h" +#include "colormapst.h" unsigned int rootless_CopyBytes_threshold = 0; unsigned int rootless_FillBytes_threshold = 0; @@ -95,6 +96,41 @@ IsFramedWindow(WindowPtr pWin) return (top && WINREC(top)); } +Bool +RootlessResolveColormap (ScreenPtr pScreen, int first_color, + int n_colors, uint32_t *colors) +{ + int last, i; + ColormapPtr map; + + map = RootlessGetColormap (pScreen); + if (map == NULL || map->class != PseudoColor) return FALSE; + + last = MIN (map->pVisual->ColormapEntries, first_color + n_colors); + for (i = MAX (0, first_color); i < last; i++) { + Entry *ent = map->red + i; + uint16_t red, green, blue; + + if (!ent->refcnt) continue; + if (ent->fShared) { + red = ent->co.shco.red->color; + green = ent->co.shco.green->color; + blue = ent->co.shco.blue->color; + } else { + red = ent->co.local.red; + green = ent->co.local.green; + blue = ent->co.local.blue; + } + + colors[i - first_color] = (0xFF000000UL + | ((uint32_t) red & 0xff00) << 8 + | (green & 0xff00) + | (blue >> 8)); + } + + return TRUE; +} + /* * RootlessStartDrawing diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h index 3bf6af02f..b00221400 100644 --- a/miext/rootless/rootlessCommon.h +++ b/miext/rootless/rootlessCommon.h @@ -32,6 +32,7 @@ #include #endif +#include #ifndef _ROOTLESSCOMMON_H #define _ROOTLESSCOMMON_H @@ -104,13 +105,20 @@ typedef struct _RootlessScreenRec { GlyphsProcPtr Glyphs; #endif + InstallColormapProcPtr InstallColormap; + UninstallColormapProcPtr UninstallColormap; + StoreColorsProcPtr StoreColors; + void *pixmap_data; unsigned int pixmap_data_size; + ColormapPtr colormap; + void *redisplay_timer; unsigned int redisplay_timer_set :1; unsigned int redisplay_queued :1; unsigned int redisplay_expired :1; + unsigned int colormap_changed :1; } RootlessScreenRec, *RootlessScreenPtr; @@ -251,6 +259,16 @@ void RootlessRedisplayScreen(ScreenPtr pScreen); void RootlessQueueRedisplay(ScreenPtr pScreen); +/* Return the colormap currently installed on the given screen. */ +ColormapPtr RootlessGetColormap (ScreenPtr pScreen); + +/* Convert colormap to ARGB. */ +Bool RootlessResolveColormap (ScreenPtr pScreen, int first_color, + int n_colors, uint32_t *colors); + +void RootlessFlushWindowColormap (WindowPtr pWin); +void RootlessFlushScreenColormaps (ScreenPtr pScreen); + // Move a window to its proper location on the screen. void RootlessRepositionWindow(WindowPtr pWin); diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index 356fec798..b3145815d 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -42,6 +42,7 @@ #include "propertyst.h" #include "mivalidate.h" #include "picturestr.h" +#include "colormapst.h" #include #include @@ -469,6 +470,67 @@ RootlessMarkOverlappedWindows(WindowPtr pWin, WindowPtr pFirst, return result; } +ColormapPtr +RootlessGetColormap (ScreenPtr pScreen) +{ + RootlessScreenRec *s = SCREENREC (pScreen); + + return s->colormap; +} + +static void +RootlessInstallColormap (ColormapPtr pMap) +{ + ScreenPtr pScreen = pMap->pScreen; + RootlessScreenRec *s = SCREENREC (pScreen); + + SCREEN_UNWRAP(pScreen, InstallColormap); + + if (s->colormap != pMap) { + s->colormap = pMap; + s->colormap_changed = TRUE; + RootlessQueueRedisplay (pScreen); + } + + pScreen->InstallColormap (pMap); + + SCREEN_WRAP (pScreen, InstallColormap); +} + +static void +RootlessUninstallColormap (ColormapPtr pMap) +{ + ScreenPtr pScreen = pMap->pScreen; + RootlessScreenRec *s = SCREENREC (pScreen); + + SCREEN_UNWRAP(pScreen, UninstallColormap); + + if (s->colormap == pMap) + s->colormap = NULL; + + pScreen->UninstallColormap (pMap); + + SCREEN_WRAP(pScreen, UninstallColormap); +} + +static void +RootlessStoreColors (ColormapPtr pMap, int ndef, xColorItem *pdef) +{ + ScreenPtr pScreen = pMap->pScreen; + RootlessScreenRec *s = SCREENREC (pScreen); + + SCREEN_UNWRAP(pScreen, StoreColors); + + if (s->colormap == pMap && ndef > 0) { + s->colormap_changed = TRUE; + RootlessQueueRedisplay (pScreen); + } + + pScreen->StoreColors (pMap, ndef, pdef); + + SCREEN_WRAP(pScreen, StoreColors); +} + static CARD32 RootlessRedisplayCallback(OsTimerPtr timer, CARD32 time, void *arg) @@ -616,6 +678,9 @@ RootlessWrap(ScreenPtr pScreen) WRAP(MarkOverlappedWindows); WRAP(ValidateTree); WRAP(ChangeWindowAttributes); + WRAP(InstallColormap); + WRAP(UninstallColormap); + WRAP(StoreColors); #ifdef SHAPE WRAP(SetShape); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 84aa91dbf..cf324267a 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -447,6 +447,12 @@ RootlessInitializeFrame(WindowPtr pWin, RootlessWindowRec *winRec) } +Bool +RootlessColormapCallback (void *data, int first_color, int n_colors, uint32_t *colors) +{ + return RootlessResolveColormap (data, first_color, n_colors, colors); +} + /* * RootlessEnsureFrame * Make sure the given window is framed. If the window doesn't have a @@ -505,6 +511,9 @@ RootlessEnsureFrame(WindowPtr pWin) return NULL; } + if (pWin->drawable.depth == 8) + RootlessFlushWindowColormap(pWin); + #ifdef SHAPE if (pShape != NULL) REGION_UNINIT(pScreen, &shape); @@ -1458,6 +1467,25 @@ out: } +void +RootlessFlushWindowColormap (WindowPtr pWin) +{ + RootlessWindowRec *winRec = WINREC (pWin); + xp_window_changes wc; + + if (winRec == NULL) + return; + + RootlessStopDrawing (pWin, FALSE); + + /* This is how we tell xp that the colormap may have changed. */ + + wc.colormap = RootlessColormapCallback; + wc.colormap_data = pWin->drawable.pScreen; + + configure_window (winRec->wid, XP_COLORMAP, &wc); +} + /* * SetPixmapOfAncestors * Set the Pixmaps on all ParentRelative windows up the ancestor chain. From 0f6dc7bb2634828c4c0eb93bf0e98c2458de6047 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 14 Nov 2007 04:26:25 -0800 Subject: [PATCH 59/74] Trying to add launchd detection to tell Xtrans to enable launchd support; fix me later. --- configure.ac | 5 ++++- include/dix-config.h.in | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index b6d4c1523..f7d1088cd 100644 --- a/configure.ac +++ b/configure.ac @@ -71,6 +71,9 @@ 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 @@ -1656,7 +1659,7 @@ if test "x$XDARWIN" = xyes; then AC_SUBST([DARWIN_LIBS]) AC_CHECK_LIB([Xplugin],[xp_init],[:]) AC_SUBST([APPLE_APPLICATIONS_DIR]) - CFLAGS="${CFLAGS} -D__DARWIN__ -DDARWIN_WITH_QUARTZ -DROOTLESS_WORKAROUND" + CFLAGS="${CFLAGS} -DHAVE_LAUNCHD -D__DARWIN__ -DDARWIN_WITH_QUARTZ -DROOTLESS_WORKAROUND" PLIST_VERSION_STRING=$PACKAGE_VERSION AC_SUBST([PLIST_VERSION_STRING]) PLIST_VENDOR_WEB=$VENDOR_WEB diff --git a/include/dix-config.h.in b/include/dix-config.h.in index 5efd356b1..6badccab7 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -127,6 +127,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H +/* Define to 1 if launchd is available. */ +#undef HAVE_LAUNCHD + /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM From 481bca387a9104f69d0c36a5ce71f2ba6a2d5f1e Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 14 Nov 2007 21:09:21 -0800 Subject: [PATCH 60/74] bump to 1.2a10 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index f7d1088cd..98ed9e224 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a9, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a10, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index 7132186c3..df42c1b8e 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -156,7 +156,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a9)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a10)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From 64d832f4eb82d5d02d0c91b76d034c731a6d4141 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Wed, 14 Nov 2007 21:25:50 -0800 Subject: [PATCH 61/74] Build system patches to remove XDarwin from the build (since it doesn't work anyway), courtesy of Jeremy Huddleston --- configure.ac | 47 +++----- hw/Makefile.am | 2 +- hw/darwin/Makefile.am | 144 +++++------------------- hw/darwin/quartz/Makefile.am | 27 ++--- hw/darwin/quartz/cr/Makefile.am | 4 +- hw/darwin/quartz/fullscreen/Makefile.am | 2 +- hw/darwin/quartz/xpr/Makefile.am | 5 +- mi/miinitext.c | 12 -- 8 files changed, 60 insertions(+), 183 deletions(-) diff --git a/configure.ac b/configure.ac index 98ed9e224..40d5649de 100644 --- a/configure.ac +++ b/configure.ac @@ -513,9 +513,8 @@ AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no]) AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: no)]), [XVFB=$enableval], [XVFB=no]) AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: no)]), [XNEST=$enableval], [XNEST=no]) -AC_ARG_ENABLE(xdarwin, AS_HELP_STRING([--enable-xdarwin], [Build XDarwin server (default: auto)]), [XDARWIN=$enableval], [XDARWIN=auto]) -AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--disable-xquartz], [Build Xquartz server on Darwin (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) -AC_ARG_ENABLE(x11app, AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app wrapper for Xquartz (default: auto)]), [X11APP=$enableval], [X11APP=auto]) +AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) +AC_ARG_ENABLE(x11app, AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app for Xquartz (default: auto)]), [X11APP=$enableval], [X11APP=auto]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) @@ -1604,33 +1603,24 @@ AM_CONDITIONAL(XWIN_RANDR, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes]) dnl Darwin / OS X DDX -AC_MSG_CHECKING([whether to build XDarwin/Xquartz]) -if test "x$XDARWIN" = xauto; then - case $host_os in - darwin*) XDARWIN="yes" ;; - *) XDARWIN="no" ;; - esac -fi -AC_MSG_RESULT([$XDARWIN]) - -if test "x$XDARWIN" = xyes; then - if test "X$XQUARTZ" = Xauto; then - AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[ - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -framework Carbon" - AC_LINK_IFELSE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}], - [xorg_cv_Carbon_framework=yes], - [xorg_cv_Carbon_framework=no]) - LDFLAGS=$save_LDFLAGS]) - - if test "X$xorg_cv_Carbon_framework" = Xyes; then - AC_DEFINE([DARWIN_WITH_QUARTZ],[1],[Have Quartz]) - XQUARTZ=yes - else - XQUARTZ=no - fi +if test "X$XQUARTZ" = Xauto; then + AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[ + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -framework Carbon" + AC_LINK_IFELSE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}], + [xorg_cv_Carbon_framework=yes], + [xorg_cv_Carbon_framework=no]) + LDFLAGS=$save_LDFLAGS]) + + if test "X$xorg_cv_Carbon_framework" = Xyes; then + AC_DEFINE([DARWIN_WITH_QUARTZ],[1],[Have Quartz]) + XQUARTZ=yes + else + XQUARTZ=no fi +fi +if test "x$XQUARTZ" = xyes; then if test "x$X11APP" = xauto; then AC_MSG_CHECKING([whether to build X11.app]) if test "x$XQUARTZ" = xyes ; then @@ -1694,7 +1684,6 @@ AC_SUBST([OBJCFLAGS]) _AM_DEPENDENCIES([OBJC]) AM_CONDITIONAL(HAVE_XPLUGIN, [test "x$ac_cv_lib_Xplugin_xp_init" = xyes]) AM_CONDITIONAL(HAVE_AGL_FRAMEWORK, [test "x$xorg_cv_AGL_framework" = xyes]) -AM_CONDITIONAL(XDARWIN, [test "x$XDARWIN" = xyes]) AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes]) AM_CONDITIONAL(X11APP,[test "X$X11APP" = Xyes]) diff --git a/hw/Makefile.am b/hw/Makefile.am index db76977af..6a15820f5 100644 --- a/hw/Makefile.am +++ b/hw/Makefile.am @@ -22,7 +22,7 @@ if XPRINT XPRINT_SUBDIRS = xprint endif -if XDARWIN +if XQUARTZ DARWIN_SUBDIRS = darwin endif diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 04d996552..e83f04d11 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -1,98 +1,27 @@ -noinst_LIBRARIES = libdarwinShared.a -libdarwin_XINPUT_SRCS = darwinXinput.c - AM_CFLAGS = @XORG_CFLAGS@ -INCLUDES = @XORG_INCS@ -I../../miext/rootless - -DEFS = @DEFS@ -DUSE_NEW_CLUT -DXFree86Server -DBUILD_DATE=\"$(BUILD_DATE)\" - -if XQUARTZ -XQUARTZ_SUBDIRS = quartz -endif - -SUBDIRS = \ - iokit \ - $(XQUARTZ_SUBDIRS) \ - utils - -DIST_SUBDIRS = \ - iokit \ - quartz \ - utils - -libdarwinShared_a_SOURCES = darwin.c \ - darwinEvents.c \ - darwinKeyboard.c \ - $(darwin_XINPUT_SRCS) - -if XQUARTZ +AM_CPPFLAGS = @XORG_INCS@ -I../../miext/rootless -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" -DHAVE_XORG_CONFIG_H -DXFree86Server + +SUBDIRS = quartz utils + bin_PROGRAMS = Xquartz -else -bin_PROGRAMS = XDarwin -endif +man1_MANS = apple/Xquartz.man + +Xquartz_SOURCES = darwin.c \ + darwinEvents.c \ + darwinKeyboard.c \ + darwinXinput.c \ + $(top_srcdir)/fb/fbcmap.c \ + $(top_srcdir)/mi/miinitext.c -XDarwin_SOURCES = \ - $(top_srcdir)/fb/fbcmap.c \ - $(top_srcdir)/mi/miinitext.c \ - $(top_srcdir)/Xi/stubs.c +# We should probably add these once they're working, or are these obsolete and to be removed? +# ./quartz/cr/libcr.a +# ./quartz/fullscreen/libfullscreen.a -Xquartz_SOURCES = \ - $(top_srcdir)/fb/fbcmap.c \ - $(top_srcdir)/mi/miinitext.c \ - $(top_srcdir)/Xi/stubs.c \ - apple/X11Application.m \ - apple/X11Controller.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 = \ +Xquartz_LDADD = ./quartz/libXquartz.a \ + ./quartz/xpr/libxpr.a \ $(top_builddir)/dix/dixfonts.lo \ $(top_builddir)/dix/libdix.la \ $(top_builddir)/os/libos.la \ - ./libdarwinShared.a \ - ./iokit/libiokit.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 \ - $(XGLX_LIBS) \ - $(top_builddir)/miext/rootless/librootless.la \ - $(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \ - $(top_builddir)/miext/rootless/accel/librlAccel.la \ - $(XSERVER_LIBS) -lXplugin - -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 \ @@ -114,33 +43,24 @@ Xquartz_LDADD = \ $(top_builddir)/miext/rootless/accel/librlAccel.la \ $(DARWIN_LIBS) $(XSERVER_LIBS) -lXplugin -XDarwin_LDFLAGS = \ - -XCClinker -Objc \ - -Wl,-u,_miDCInitialize \ - -Wl,-framework,IOKit -Xquartz_LDFLAGS = \ - -XCClinker -Objc \ - -Wl,-u,_miDCInitialize \ - -Wl,-framework,Carbon \ - -L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL \ - -Wl,-framework,OpenGL \ - -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 -Xquartz_OBJCFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API -DHAVE_XORG_CONFIG_H +Xquartz_LDFLAGS = -XCClinker -Objc \ + -Wl,-u,_miDCInitialize \ + -Wl,-framework,Carbon \ + -L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL \ + -Wl,-framework,OpenGL \ + -Wl,-framework,Cocoa \ + -Wl,-framework,CoreAudio \ + -Wl,-framework,IOKit if X11APP bin_SCRIPTS = x11app x11launcher x11app: - cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" + cd apple && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" x11launcher: - cd launcher && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" + cd launcher && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" x11app-install: cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO @@ -156,19 +76,12 @@ x11launcher-clean: install-data-hook: x11app-install x11launcher-install clean-local: x11app-clean x11launcher-clean - endif -man1_MANS = XDarwin.man - EXTRA_DIST = \ - darwin.c \ darwinClut8.h \ - darwinEvents.c \ darwin.h \ - darwinKeyboard.c \ darwinKeyboard.h \ - darwinXinput.c \ apple/X11Application.h \ apple/X11Controller.h \ apple/Info.plist \ @@ -184,5 +97,4 @@ EXTRA_DIST = \ launcher/bundle-main.c \ launcher/Info.plist \ launcher/X11.icns \ - launcher/X11.xcodeproj/project.pbxproj \ - XDarwin.man + launcher/X11.xcodeproj/project.pbxproj diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am index baa7d4404..5a78bfbcf 100644 --- a/hw/darwin/quartz/Makefile.am +++ b/hw/darwin/quartz/Makefile.am @@ -2,41 +2,30 @@ 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 -INCLUDES = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ -AM_DEFS = -DHAS_CG_MACH_PORT -DHAS_KL_API -AM_DEFS += -DBUILD_XPR -XPR = xpr - -DEFS = @DEFS@ $(AM_DEFS) -DXBINDIR=\"${bindir}\" -SUBDIRS = cr fullscreen $(XPR) +SUBDIRS = cr fullscreen xpr libXQuartz_a_SOURCES = \ - Preferences.m \ - XApplication.m \ - XServer.m \ + ../apple/X11Application.m \ + ../apple/X11Controller.m \ applewm.c \ keysym2ucs.c \ + pseudoramiX.c \ quartz.c \ quartzAudio.c \ quartzCocoa.m \ - quartzPasteboard.c \ quartzKeyboard.c \ - quartzStartup.c \ - pseudoramiX.c + quartzPasteboard.c \ + quartzStartup.c EXTRA_DIST = \ applewmExt.h \ keysym2ucs.h \ - Preferences.h \ pseudoramiX.h \ quartzAudio.h \ quartzCommon.h \ quartzCursor.c \ quartzCursor.h \ quartz.h \ - quartzPasteboard.h \ - XApplication.h \ - XDarwin.pbproj/project.pbxproj \ - XServer.h \ - XDarwinStartup.man + quartzPasteboard.h diff --git a/hw/darwin/quartz/cr/Makefile.am b/hw/darwin/quartz/cr/Makefile.am index abfac991c..ff6043d46 100644 --- a/hw/darwin/quartz/cr/Makefile.am +++ b/hw/darwin/quartz/cr/Makefile.am @@ -1,8 +1,8 @@ noinst_LIBRARIES = libcr.a AM_CFLAGS = @XORG_CFLAGS@ AM_OBJCFLAGS = @XORG_CFLAGS@ -DEFS = @DEFS@ -DDEFER_NSWINDOW -INCLUDES = @XORG_INCS@ \ +AM_CPPFLAGS = -DDEFER_NSWINDOW \ + @XORG_INCS@ \ -I../fullscreen \ -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \ -I$(top_srcdir)/miext/rootless \ diff --git a/hw/darwin/quartz/fullscreen/Makefile.am b/hw/darwin/quartz/fullscreen/Makefile.am index 37c767c35..5e471ad30 100644 --- a/hw/darwin/quartz/fullscreen/Makefile.am +++ b/hw/darwin/quartz/fullscreen/Makefile.am @@ -1,6 +1,6 @@ noinst_LIBRARIES = libfullscreen.a AM_CFLAGS = @XORG_CFLAGS@ -INCLUDES = @XORG_INCS@ -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. +AM_CPPFLAGS = @XORG_INCS@ -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. libfullscreen_a_SOURCES = fullscreen.c \ quartzCursor.c diff --git a/hw/darwin/quartz/xpr/Makefile.am b/hw/darwin/quartz/xpr/Makefile.am index 7ebcba7bb..1f19fe90b 100644 --- a/hw/darwin/quartz/xpr/Makefile.am +++ b/hw/darwin/quartz/xpr/Makefile.am @@ -1,6 +1,7 @@ noinst_LIBRARIES = libxpr.a AM_CFLAGS = @XORG_CFLAGS@ -INCLUDES = @XORG_INCS@ \ +AM_CPPFLAGS = @XORG_INCS@ \ + -DHAVE_XORG_CONFIG_H \ -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../.. \ -I$(top_srcdir)/miext/rootless \ -I$(top_srcdir)/miext/rootless/safeAlpha \ @@ -17,8 +18,6 @@ libxpr_a_SOURCES = \ x-hook.c \ x-list.c -xprbundledir = @APPLE_APPLICATIONS_DIR@/Resources/xpr.bundle/Contents/MacOS - EXTRA_DIST = \ dri.h \ dristruct.h \ diff --git a/mi/miinitext.c b/mi/miinitext.c index f15d0c9f4..3ccd4565e 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -338,18 +338,11 @@ extern void XFree86DGAExtensionInit(INITARGS); #endif #ifdef GLXEXT typedef struct __GLXprovider __GLXprovider; -#if defined(__DARWIN__) && defined(INXDARWINAPP) -extern __GLXprovider* __DarwinglXMesaProvider; -extern void DarwinGlxPushProvider(__GLXprovider *impl); -extern void DarwinGlxExtensionInit(INITARGS); -extern void DarwinGlxWrapInitVisuals(miInitVisualsProcPtr *); -#else extern __GLXprovider __glXMesaProvider; extern void GlxPushProvider(__GLXprovider *impl); extern void GlxExtensionInit(INITARGS); extern void GlxWrapInitVisuals(miInitVisualsProcPtr *); #endif -#endif #ifdef XF86DRI extern void XFree86DRIExtensionInit(INITARGS); #endif @@ -632,14 +625,9 @@ InitExtensions(argc, argv) #endif #endif #ifdef GLXEXT -#if defined(__DARWIN__) && defined(INXDARWINAPP) - DarwinGlxPushProvider(__DarwinglXMesaProvider); - if (!noGlxExtension) DarwinGlxExtensionInit(); -#else GlxPushProvider(&__glXMesaProvider); if (!noGlxExtension) GlxExtensionInit(); #endif -#endif #ifdef XFIXES /* must be before Render to layer DisplayCursor correctly */ if (!noXFixesExtension) XFixesExtensionInit(); From 04334015960efe50d4875b6938c9ae2e175c24cb Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 15 Nov 2007 00:56:54 -0800 Subject: [PATCH 62/74] Patch to avert (some) damage / rootless crashes, courtesy of Ken Thomases --- miext/rootless/rootless.h | 1 - miext/rootless/rootlessCommon.c | 45 ++++++++++++++++++++++++++++++--- miext/rootless/rootlessCommon.h | 1 + miext/rootless/rootlessScreen.c | 5 ++++ miext/rootless/rootlessWindow.c | 1 + 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/miext/rootless/rootless.h b/miext/rootless/rootless.h index b4a5b2a3d..5224dca2b 100644 --- a/miext/rootless/rootless.h +++ b/miext/rootless/rootless.h @@ -66,7 +66,6 @@ typedef struct _RootlessWindowRec { int bytesPerRow; PixmapPtr pixmap; - PixmapPtr oldPixmap; #ifdef ROOTLESS_TRACK_DAMAGE RegionRec damage; diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c index fc22b1b89..9771ac9b1 100644 --- a/miext/rootless/rootlessCommon.c +++ b/miext/rootless/rootlessCommon.c @@ -169,8 +169,24 @@ void RootlessStartDrawing(WindowPtr pWindow) winRec->is_drawing = TRUE; } - winRec->oldPixmap = pScreen->GetWindowPixmap(pWindow); - pScreen->SetWindowPixmap(pWindow, winRec->pixmap); + PixmapPtr curPixmap = pScreen->GetWindowPixmap(pWindow); + if (curPixmap == winRec->pixmap) + { + RL_DEBUG_MSG("Window %p already has winRec->pixmap %p; not pushing\n", pWindow, winRec->pixmap); + } + else + { + PixmapPtr oldPixmap = pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr; + if (oldPixmap != NULL) + { + if (oldPixmap == curPixmap) + RL_DEBUG_MSG("Window %p's curPixmap %p is the same as its oldPixmap; strange\n", pWindow, curPixmap); + else + RL_DEBUG_MSG("Window %p's existing oldPixmap %p being lost!\n", pWindow, oldPixmap); + } + pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr = curPixmap; + pScreen->SetWindowPixmap(pWindow, winRec->pixmap); + } } @@ -179,6 +195,29 @@ void RootlessStartDrawing(WindowPtr pWindow) * Stop drawing to a window's backing buffer. If flush is true, * damaged regions are flushed to the screen. */ +static int RestorePreDrawingPixmapVisitor(WindowPtr pWindow, pointer data) +{ + RootlessWindowRec *winRec = (RootlessWindowRec*)data; + ScreenPtr pScreen = pWindow->drawable.pScreen; + PixmapPtr exPixmap = pScreen->GetWindowPixmap(pWindow); + PixmapPtr oldPixmap = pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr; + if (oldPixmap == NULL) + { + if (exPixmap == winRec->pixmap) + RL_DEBUG_MSG("Window %p appears to be in drawing mode (ex-pixmap %p equals winRec->pixmap, which is being freed) but has no oldPixmap!\n", pWindow, exPixmap); + } + else + { + if (exPixmap != winRec->pixmap) + RL_DEBUG_MSG("Window %p appears to be in drawing mode (oldPixmap %p) but ex-pixmap %p not winRec->pixmap %p!\n", pWindow, oldPixmap, exPixmap, winRec->pixmap); + if (oldPixmap == winRec->pixmap) + RL_DEBUG_MSG("Window %p's oldPixmap %p is winRec->pixmap, which has just been freed!\n", pWindow, oldPixmap); + pScreen->SetWindowPixmap(pWindow, oldPixmap); + pWindow->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr = NULL; + } + return WT_WALKCHILDREN; +} + void RootlessStopDrawing(WindowPtr pWindow, Bool flush) { ScreenPtr pScreen = pWindow->drawable.pScreen; @@ -195,7 +234,7 @@ void RootlessStopDrawing(WindowPtr pWindow, Bool flush) SCREENREC(pScreen)->imp->StopDrawing(winRec->wid, flush); FreeScratchPixmapHeader(winRec->pixmap); - pScreen->SetWindowPixmap(pWindow, winRec->oldPixmap); + TraverseTree(top, RestorePreDrawingPixmapVisitor, (pointer)winRec); winRec->pixmap = NULL; winRec->is_drawing = FALSE; diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h index b00221400..d3f242e3f 100644 --- a/miext/rootless/rootlessCommon.h +++ b/miext/rootless/rootlessCommon.h @@ -56,6 +56,7 @@ extern int rootlessGCPrivateIndex; extern int rootlessScreenPrivateIndex; extern int rootlessWindowPrivateIndex; +extern int rootlessWindowOldPixmapPrivateIndex; // RootlessGCRec: private per-gc data diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index b3145815d..4af395ee6 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -65,6 +65,7 @@ extern Bool RootlessCreateGC(GCPtr pGC); int rootlessGCPrivateIndex = -1; int rootlessScreenPrivateIndex = -1; int rootlessWindowPrivateIndex = -1; +int rootlessWindowOldPixmapPrivateIndex = -1; /* @@ -618,6 +619,8 @@ RootlessAllocatePrivates(ScreenPtr pScreen) if (rootlessGCPrivateIndex == -1) return FALSE; rootlessWindowPrivateIndex = AllocateWindowPrivateIndex(); if (rootlessWindowPrivateIndex == -1) return FALSE; + rootlessWindowOldPixmapPrivateIndex = AllocateWindowPrivateIndex(); + if (rootlessWindowOldPixmapPrivateIndex == -1) return FALSE; rootlessGeneration = serverGeneration; } @@ -627,6 +630,8 @@ RootlessAllocatePrivates(ScreenPtr pScreen) return FALSE; if (!AllocateWindowPrivate(pScreen, rootlessWindowPrivateIndex, 0)) return FALSE; + if (!AllocateWindowPrivate(pScreen, rootlessWindowOldPixmapPrivateIndex, 0)) + return FALSE; s = xalloc(sizeof(RootlessScreenRec)); if (! s) return FALSE; diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index cf324267a..82f54d63d 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -198,6 +198,7 @@ RootlessCreateWindow(WindowPtr pWin) RegionRec saveRoot; WINREC(pWin) = NULL; + pWin->devPrivates[rootlessWindowOldPixmapPrivateIndex].ptr = NULL; SCREEN_UNWRAP(pWin->drawable.pScreen, CreateWindow); From 6ee982abcea164d5bc4472714aebb5b85d10f868 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 15 Nov 2007 01:49:33 -0800 Subject: [PATCH 63/74] More XDarwin cleanup / dead code removal from Jeremy --- configure.ac | 39 +++++++------- dix/main.c | 7 ++- hw/darwin/Makefile.am | 2 +- hw/darwin/darwin.c | 5 +- hw/darwin/quartz/Makefile.am | 2 +- hw/darwin/quartz/applewm.c | 18 ------- hw/darwin/quartz/quartz.c | 7 --- hw/darwin/quartz/quartzCocoa.m | 64 ---------------------- hw/darwin/quartz/quartzStartup.c | 93 -------------------------------- include/dix-config.h.in | 3 ++ 10 files changed, 33 insertions(+), 207 deletions(-) diff --git a/configure.ac b/configure.ac index 40d5649de..facca682f 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)' @@ -1999,17 +2013,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 From b1feff2824d8da297c7553aef42b8817db376435 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 15 Nov 2007 02:25:50 -0800 Subject: [PATCH 64/74] Added a lightweight debugging facility to support troubleshooting (for example) the stuck modifier key issue --- hw/darwin/darwin.c | 18 ++++++++++++++++++ hw/darwin/darwin.h | 10 ++++++++++ 2 files changed, 28 insertions(+) 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 */ From faab78376322f8a0d929fca07b917a0c8ae75865 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Thu, 15 Nov 2007 02:41:07 -0800 Subject: [PATCH 65/74] a first stab at DEBUG_LOG --- hw/darwin/apple/X11Controller.m | 2 -- hw/darwin/darwin.c | 1 + hw/darwin/darwinEvents.c | 7 +++++++ hw/darwin/quartz/quartz.c | 20 ++++++++++---------- hw/darwin/quartz/quartz.h | 8 -------- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/hw/darwin/apple/X11Controller.m b/hw/darwin/apple/X11Controller.m index a6a75d0ab..df90049cf 100644 --- a/hw/darwin/apple/X11Controller.m +++ b/hw/darwin/apple/X11Controller.m @@ -54,8 +54,6 @@ #include #include -#define TRACE() fprintf (stderr, "%s\n", __FUNCTION__) - @implementation X11Controller - (void) awakeFromNib diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index ada29c435..789b0e284 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -667,6 +667,7 @@ void OsVendorInit(void) } #endif } + // DEBUG_LOG("Xquartz started at %s\n", ctime(time(NULL))); // Find the full path to the keymapping file. if ( darwinKeymapFile ) { diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index 85ae30543..798413099 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -84,6 +84,7 @@ static void DarwinPressModifierMask( { int key = DarwinModifierNXMaskToNXKey(mask); + DEBUG_LOG("DarwinPressModifierMask(%p, %x, %d)\n", xe, mask, key); if (key != -1) { int keycode = DarwinModifierNXKeyToNXKeycode(key, 0); if (keycode != 0) { @@ -127,6 +128,7 @@ static void DarwinUpdateModifiers( int pressed, // KeyPress or KeyRelease int flags ) // modifier flags that have changed { + DEBUG_LOG("DarwinUpdateModifiers(%p, %d, %x)\n", xe, pressed, flags); xe->u.u.type = pressed; if (flags & NX_COMMANDMASK) DarwinPressModifierMask(xe, COMMAND_MASK(flags)); if (flags & NX_CONTROLMASK) DarwinPressModifierMask(xe, CONTROL_MASK(flags)); @@ -154,6 +156,7 @@ static void DarwinReleaseModifiers(void) { xEvent ke; int i = 0, j = 0, nevents = 0; + DEBUG_LOG("DarwinReleaseModifiers(%p)\n", darwinKeyc); if (!darwinKeyc) return; map = darwinKeyc->curKeySyms.map; @@ -170,6 +173,7 @@ static void DarwinReleaseModifiers(void) { case XK_Kana_Lock: break; default: + DEBUG_LOG("DarwinReleaseModifiers: releasing key %d\n", i); ke.u.keyButtonPointer.time = GetTimeInMillis(); ke.u.keyButtonPointer.rootX = 0; ke.u.keyButtonPointer.rootY = 0; @@ -201,6 +205,7 @@ static void DarwinSimulateMouseClick( int whichButton, // mouse button to be pressed int modifierMask) // modifiers used for the fake click { + DEBUG_LOG("DarwinSimulateMouseClick(%p, %d, %x)\n", xe, whichButton, modifierMask); // first fool X into forgetting about the keys // for some reason, it's not enough to tell X we released the Command key -- // it has to be the *left* Command key. @@ -448,6 +453,7 @@ void ProcessInputEvents(void) // Update modifier state. // Any amount of modifiers may have changed. int flags = xe.u.clientMessage.u.l.longs0; + DEBUG_LOG("kxDarwinUpdateModifiers(%x, %x)\n", old_flags, flags); DarwinUpdateModifiers(&xe, KeyRelease, old_flags & ~flags); DarwinUpdateModifiers(&xe, KeyPress, @@ -508,6 +514,7 @@ void ProcessInputEvents(void) } case kXDarwinDeactivate: + DEBUG_LOG("kxDarwinDeactivate\n"); DarwinReleaseModifiers(); old_flags=0; // fall through diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 7ba452cec..fcd78ae34 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -249,7 +249,7 @@ static void QuartzUpdateScreens(void) int x, y, width, height, sx, sy; xEvent e; - TRACE("QuartzUpdateScreens()\n"); + DEBUG_LOG("QuartzUpdateScreens()\n"); if (noPseudoramiXExtension || screenInfo.numScreens != 1) { /* FIXME: if not using Xinerama, we have multiple screens, and @@ -414,7 +414,7 @@ void DarwinModeProcessEvent( { switch (xe->u.u.type) { case kXDarwinControllerNotify: - TRACE("kXDarwinControllerNotify\n"); + DEBUG_LOG("kXDarwinControllerNotify\n"); AppleWMSendEvent(AppleWMControllerNotify, AppleWMControllerNotifyMask, xe->u.clientMessage.u.l.longs0, @@ -422,7 +422,7 @@ void DarwinModeProcessEvent( break; case kXDarwinPasteboardNotify: - TRACE("kXDarwinPasteboardNotify\n"); + DEBUG_LOG("kXDarwinPasteboardNotify\n"); AppleWMSendEvent(AppleWMPasteboardNotify, AppleWMPasteboardNotifyMask, xe->u.clientMessage.u.l.longs0, @@ -430,7 +430,7 @@ void DarwinModeProcessEvent( break; case kXDarwinActivate: - TRACE("kXDarwinActivate\n"); + DEBUG_LOG("kXDarwinActivate\n"); QuartzShow(xe->u.keyButtonPointer.rootX, xe->u.keyButtonPointer.rootY); AppleWMSendEvent(AppleWMActivationNotify, @@ -439,7 +439,7 @@ void DarwinModeProcessEvent( break; case kXDarwinDeactivate: - TRACE("kXDarwinDeactivate\n"); + DEBUG_LOG("kXDarwinDeactivate\n"); AppleWMSendEvent(AppleWMActivationNotify, AppleWMActivationNotifyMask, AppleWMIsInactive, 0); @@ -447,23 +447,23 @@ void DarwinModeProcessEvent( break; case kXDarwinDisplayChanged: - TRACE("kXDarwinDisplayChanged\n"); + DEBUG_LOG("kXDarwinDisplayChanged\n"); QuartzUpdateScreens(); break; case kXDarwinWindowState: - TRACE("kXDarwinWindowState\n"); + DEBUG_LOG("kXDarwinWindowState\n"); RootlessNativeWindowStateChanged(xe->u.clientMessage.u.l.longs0, xe->u.clientMessage.u.l.longs1); break; case kXDarwinWindowMoved: - TRACE("kXDarwinWindowMoved\n"); + DEBUG_LOG("kXDarwinWindowMoved\n"); RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0); break; case kXDarwinToggleFullscreen: - TRACE("kXDarwinToggleFullscreen\n"); + DEBUG_LOG("kXDarwinToggleFullscreen\n"); #ifdef DARWIN_DDX_MISSING if (quartzEnableRootless) QuartzSetFullscreen(!quartzHasRoot); else if (quartzHasRoot) QuartzHide(); @@ -499,7 +499,7 @@ void DarwinModeProcessEvent( break; case kXDarwinBringAllToFront: - TRACE("kXDarwinBringAllToFront\n"); + DEBUG_LOG("kXDarwinBringAllToFront\n"); RootlessOrderAllWindows(); break; diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h index febc51a0b..172f3239b 100644 --- a/hw/darwin/quartz/quartz.h +++ b/hw/darwin/quartz/quartz.h @@ -38,14 +38,6 @@ #include "screenint.h" #include "window.h" -//#define DEBUG 1 - -#ifdef DEBUG -#define TRACE(msg, args...) ErrorF("%s:%d: " msg, __FUNCTION__, __LINE__, ##args ) -#else -#define TRACE(msg, args...) -#endif - /*------------------------------------------ Quartz display mode function types ------------------------------------------*/ From 92024f2ed001e9a8e71d9afbddddbec4dd183d09 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 16 Nov 2007 04:37:58 -0800 Subject: [PATCH 66/74] added a bunch of debugging code to help troubleshoot the stuck modifier key issue; much of it may be taken out later. Also, hopefully fixed a race condition that may have prevented ReleaseModifiers from working in some cases. --- hw/darwin/darwinEvents.c | 187 ++++++++++++++++++++++++++----------- hw/darwin/darwinKeyboard.c | 58 +++++++++++- 2 files changed, 187 insertions(+), 58 deletions(-) diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index 798413099..0fb5c9a08 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -71,29 +71,8 @@ typedef struct _EventQueue { } EventQueueRec, *EventQueuePtr; static EventQueueRec darwinEventQueue; -extern KeyClassPtr darwinKeyc; -#define KeyPressed(k) (darwinKeyc->down[k >> 3] & (1 << (k & 7))) - -/* - * DarwinPressModifierMask - * Press or release the given modifier key, specified by its mask. - */ -static void DarwinPressModifierMask( - xEvent *xe, // must already have type, time and mouse location - int mask) // one of NX_*MASK constants -{ - int key = DarwinModifierNXMaskToNXKey(mask); - - DEBUG_LOG("DarwinPressModifierMask(%p, %x, %d)\n", xe, mask, key); - if (key != -1) { - int keycode = DarwinModifierNXKeyToNXKeycode(key, 0); - if (keycode != 0) { - xe->u.u.detail = keycode + MIN_KEYCODE; - (*darwinEventQueue.pKbd->processInputProc)(xe, - (DeviceIntPtr)darwinEventQueue.pKbd, 1); - } - } -} +extern darwinKeyboardInfo keyInfo; +#define KeyPressed(k) (((DeviceIntPtr)darwinEventQueue.pKbd)->key->down[k >> 3] & (1 << (k & 7))) #ifdef NX_DEVICELCTLKEYMASK #define CONTROL_MASK(flags) (flags & (NX_DEVICELCTLKEYMASK|NX_DEVICERCTLKEYMASK)) @@ -119,6 +98,104 @@ static void DarwinPressModifierMask( #define ALTERNATE_MASK(flags) (NX_ALTERNATEMASK) #endif /* NX_DEVICELALTKEYMASK */ +#define KEYBOARD_MASK (NX_COMMANDMASK | NX_CONTROLMASK | NX_ALTERNATEMASK | NX_SHIFTMASK | \ + NX_SECONDARYFNMASK | NX_ALPHASHIFTMASK | NX_NUMERICPADMASK | \ + NX_HELPMASK | NX_DEVICELCTLKEYMASK | NX_DEVICELSHIFTKEYMASK | \ + NX_DEVICERSHIFTKEYMASK | NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK | \ + NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK | NX_DEVICERCTLKEYMASK) + +char * decode_event_flags(unsigned int modifiers) { + char buf[1024]; + buf[0]='\0'; + if (modifiers & NX_DEVICELCTLKEYMASK) strcat(buf, "NX_DEVICELCTLKEYMASK | "); + if (modifiers & NX_DEVICELSHIFTKEYMASK) strcat(buf, "NX_DEVICELSHIFTKEYMASK | "); + if (modifiers & NX_DEVICERSHIFTKEYMASK) strcat(buf, "NX_DEVICERSHIFTKEYMASK | "); + if (modifiers & NX_DEVICELCMDKEYMASK) strcat(buf, "NX_DEVICELCMDKEYMASK | "); + if (modifiers & NX_DEVICERCMDKEYMASK) strcat(buf, "NX_DEVICERCMDKEYMASK | "); + if (modifiers & NX_DEVICELALTKEYMASK) strcat(buf, "NX_DEVICELALTKEYMASK | "); + if (modifiers & NX_DEVICERALTKEYMASK) strcat(buf, "NX_DEVICERALTKEYMASK | "); + if (modifiers & NX_DEVICERCTLKEYMASK) strcat(buf, "NX_DEVICERCTLKEYMASK | "); + + if (modifiers & NX_ALPHASHIFTMASK) strcat(buf, "NX_ALPHASHIFTMASK | "); + if (modifiers & NX_SHIFTMASK) strcat(buf, "NX_SHIFTMASK | "); + if (modifiers & NX_CONTROLMASK) strcat(buf, "NX_CONTROLMASK | "); + if (modifiers & NX_ALTERNATEMASK) strcat(buf, "NX_ALTERNATEMASK | "); + if (modifiers & NX_COMMANDMASK) strcat(buf, "NX_COMMANDMASK | "); + if (modifiers & NX_NUMERICPADMASK) strcat(buf, "NX_NUMERICPADMASK | "); + if (modifiers & NX_HELPMASK) strcat(buf, "NX_HELPMASK | "); + if (modifiers & NX_SECONDARYFNMASK) strcat(buf, "NX_SECONDARYFNMASK | "); + + if (modifiers & NX_STYLUSPROXIMITYMASK) strcat(buf, "NX_STYLUSPROXIMITYMASK | "); + if (modifiers & NX_NONCOALSESCEDMASK) strcat(buf, "NX_NONCOALSESCEDMASK | "); + if (modifiers & NX_NULLEVENTMASK) strcat(buf, "NX_NULLEVENTMASK | "); + // if (modifiers & NX_LMOUSEDOWNMASK) strcat(buf, "NX_LMOUSEDOWNMASK | "); + // if (modifiers & NX_LMOUSEUPMASK) strcat(buf, "NX_LMOUSEUPMASK | "); + // if (modifiers & NX_RMOUSEDOWNMASK) strcat(buf, "NX_RMOUSEDOWNMASK | "); + // if (modifiers & NX_RMOUSEUPMASK) strcat(buf, "NX_RMOUSEUPMASK | "); + // if (modifiers & NX_OMOUSEDOWNMASK) strcat(buf, "NX_OMOUSEDOWNMASK | "); + // if (modifiers & NX_OMOUSEUPMASK) strcat(buf, "NX_OMOUSEUPMASK | "); + // if (modifiers & NX_MOUSEMOVEDMASK) strcat(buf, "NX_MOUSEMOVEDMASK | "); + // if (modifiers & NX_LMOUSEDRAGGEDMASK) strcat(buf, "NX_LMOUSEDRAGGEDMASK | "); + //if (modifiers & NX_RMOUSEDRAGGEDMASK) strcat(buf, "NX_RMOUSEDRAGGEDMASK | "); + //if (modifiers & NX_OMOUSEDRAGGEDMASK) strcat(buf, "NX_OMOUSEDRAGGEDMASK | "); + //if (modifiers & NX_MOUSEENTEREDMASK) strcat(buf, "NX_MOUSEENTEREDMASK | "); + //if (modifiers & NX_MOUSEEXITEDMASK) strcat(buf, "NX_MOUSEEXITEDMASK | "); + if (modifiers & NX_KEYDOWNMASK) strcat(buf, "NX_KEYDOWNMASK | "); + if (modifiers & NX_KEYUPMASK) strcat(buf, "NX_KEYUPMASK | "); + if (modifiers & NX_FLAGSCHANGEDMASK) strcat(buf, "NX_FLAGSCHANGEDMASK | "); + if (modifiers & NX_KITDEFINEDMASK) strcat(buf, "NX_KITDEFINEDMASK | "); + if (modifiers & NX_SYSDEFINEDMASK) strcat(buf, "NX_SYSDEFINEDMASK | "); + if (modifiers & NX_APPDEFINEDMASK) strcat(buf, "NX_APPDEFINEDMASK | "); + + if (strlen(buf) < 5) strcpy(buf, "(empty)"); + else buf[strlen(buf)-3]='\0'; + return strdup(buf); +} + +char * get_keysym_name(int ks) { + switch(ks) { + case XK_Alt_L: return "XK_Alt_L"; + case XK_Alt_R: return "XK_Alt_R"; + case XK_Meta_L: return "XK_Meta_L"; + case XK_Meta_R: return "XK_Meta_R"; + case XK_Control_L: return "XK_Control_L"; + case XK_Control_R: return "XK_Control_R"; + case XK_Shift_L: return "XK_Shift_L"; + case XK_Shift_R: return "XK_Shift_R"; + case XK_Mode_switch: return "XK_Mode_switch"; + case XK_Caps_Lock: return "XK_Caps_Lock"; + } + return "???"; +} + +/* + * DarwinPressModifierMask + * Press or release the given modifier key, specified by its mask. + */ +static void DarwinPressModifierMask( + xEvent *xe, // must already have type, time and mouse location + int mask) // one of NX_*MASK constants +{ + int key, keycode; + key = DarwinModifierNXMaskToNXKey(mask); + if (key == -1) { + ErrorF("DarwinPressModifierMask: can't find key for mask %x\n", mask); + return; + } + keycode = DarwinModifierNXKeyToNXKeycode(key, 0); + if (keycode == 0) { + ErrorF("DarwinPressModifierMask: can't find keycode for mask %x\n", mask); + return; + } + + DEBUG_LOG("%x: %s %s\n", mask, xe->u.u.type==KeyPress?"pressing":"releasing", + decode_event_flags(mask)); + + xe->u.u.detail = keycode + MIN_KEYCODE; + (*darwinEventQueue.pKbd->processInputProc)(xe, + (DeviceIntPtr)darwinEventQueue.pKbd, 1); +} + /* * DarwinUpdateModifiers * Send events to update the modifier state. @@ -126,23 +203,27 @@ static void DarwinPressModifierMask( static void DarwinUpdateModifiers( xEvent *xe, // event template with time and mouse position set int pressed, // KeyPress or KeyRelease - int flags ) // modifier flags that have changed + unsigned int flags ) // modifier flags that have changed { - DEBUG_LOG("DarwinUpdateModifiers(%p, %d, %x)\n", xe, pressed, flags); - xe->u.u.type = pressed; - if (flags & NX_COMMANDMASK) DarwinPressModifierMask(xe, COMMAND_MASK(flags)); - if (flags & NX_CONTROLMASK) DarwinPressModifierMask(xe, CONTROL_MASK(flags)); - if (flags & NX_ALTERNATEMASK) DarwinPressModifierMask(xe, ALTERNATE_MASK(flags)); - if (flags & NX_SHIFTMASK) DarwinPressModifierMask(xe, SHIFT_MASK(flags)); - if (flags & NX_SECONDARYFNMASK) DarwinPressModifierMask(xe, NX_SECONDARYFNMASK); - if (flags & NX_ALPHASHIFTMASK) { - // Alpha shift only sees KeyDown when enabled and KeyUp when disabled, - // but X11 wants to see a up/down pair to enable, and again to disable - xe->u.u.type = KeyPress; - DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); - xe->u.u.type = KeyRelease; - DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); - } + int i; + DEBUG_LOG("DarwinUpdateModifiers(%p, %d, %x, %s)\n", xe, pressed, flags, decode_event_flags(flags)); + xe->u.u.type = pressed; + /* If we have "device specific" flags -- meaning, left or right -- then strip out the generic flag */ + if (flags & (NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK)) flags &= ~NX_CONTROLMASK; + if (flags & (NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK)) flags &= ~NX_ALTERNATEMASK; + if (flags & (NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK)) flags &= ~NX_COMMANDMASK; + if (flags & (NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK)) flags &= ~NX_SHIFTMASK; + if (flags == NX_ALPHASHIFTMASK) { + // Alpha shift only sees KeyDown when enabled and KeyUp when disabled, + // but X11 wants to see a up/down pair to enable, and again to disable + xe->u.u.type = KeyPress; + DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); + xe->u.u.type = KeyRelease; + DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); + flags &= ~NX_ALPHASHIFTMASK; + } + for(i=0; i < (sizeof(flags)*8); i++) + if (flags & (1 << i)) DarwinPressModifierMask(xe, flags & (1 << i)); } /* @@ -151,18 +232,16 @@ static void DarwinUpdateModifiers( * is deactivated (kXDarwinDeactivate) to prevent modifiers from getting stuck if they * are held down during a "context" switch -- otherwise, we would miss the KeyUp. */ -static void DarwinReleaseModifiers(void) { +void DarwinReleaseModifiers(void) { KeySym *map = NULL; xEvent ke; int i = 0, j = 0, nevents = 0; - DEBUG_LOG("DarwinReleaseModifiers(%p)\n", darwinKeyc); - if (!darwinKeyc) return; - map = darwinKeyc->curKeySyms.map; + DEBUG_LOG("DarwinReleaseModifiers(%p)\n", &keyInfo.keyMap); - for (i = darwinKeyc->curKeySyms.minKeyCode, map = darwinKeyc->curKeySyms.map; - i < darwinKeyc->curKeySyms.maxKeyCode; - i++, map += darwinKeyc->curKeySyms.mapWidth) { + for (i = MIN_KEYCODE, map =keyInfo.keyMap; + i < MAX_KEYCODE; + i++, map += GLYPHS_PER_KEY) { if (KeyPressed(i)) { switch (*map) { /* Don't release the lock keys */ @@ -173,7 +252,7 @@ static void DarwinReleaseModifiers(void) { case XK_Kana_Lock: break; default: - DEBUG_LOG("DarwinReleaseModifiers: releasing key %d\n", i); + DEBUG_LOG("DarwinReleaseModifiers: releasing key %d (%s)\n", i, get_keysym_name(*map)); ke.u.keyButtonPointer.time = GetTimeInMillis(); ke.u.keyButtonPointer.rootX = 0; ke.u.keyButtonPointer.rootY = 0; @@ -452,12 +531,14 @@ void ProcessInputEvents(void) { // Update modifier state. // Any amount of modifiers may have changed. - int flags = xe.u.clientMessage.u.l.longs0; - DEBUG_LOG("kxDarwinUpdateModifiers(%x, %x)\n", old_flags, flags); - DarwinUpdateModifiers(&xe, KeyRelease, - old_flags & ~flags); - DarwinUpdateModifiers(&xe, KeyPress, - ~old_flags & flags); + unsigned int flags = xe.u.clientMessage.u.l.longs0 & ~NX_NONCOALSESCEDMASK; // ignore that one + DEBUG_LOG("kxDarwinUpdateModifiers(%x, %x, %s)\n", old_flags, flags, decode_event_flags(flags)); + // DEBUG_LOG("Ignoring these flags: %x %s\n", flags & ~KEYBOARD_MASK, decode_event_flags(flags & ~KEYBOARD_MASK)); + flags &= KEYBOARD_MASK; + if (old_flags & ~flags) DarwinUpdateModifiers(&xe, KeyRelease, + old_flags & ~flags); + if (~old_flags & flags) DarwinUpdateModifiers(&xe, KeyPress, + ~old_flags & flags); old_flags = flags; break; } diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c index 3685bffff..111c98abf 100644 --- a/hw/darwin/darwinKeyboard.c +++ b/hw/darwin/darwinKeyboard.c @@ -217,10 +217,9 @@ static void DarwinChangeKeyboardControl( DeviceIntPtr device, KeybdCtrl *ctrl ) // keyclick, bell volume / pitch, autorepead, LED's } -static darwinKeyboardInfo keyInfo; +darwinKeyboardInfo keyInfo; static FILE *fref = NULL; static char *inBuffer = NULL; -KeyClassPtr darwinKeyc = NULL; //----------------------------------------------------------------------------- // Data Stream Object @@ -817,7 +816,7 @@ void DarwinKeyboardInit( assert( darwinParamConnect = NXOpenEventStatus() ); DarwinLoadKeyboardMapping(&keySyms); - + // DarwinKeyboardReload(pDev); /* Initialize the seed, so we don't reload the keymap unnecessarily (and possibly overwrite xinitrc changes) */ DarwinModeSystemKeymapSeed(); @@ -836,7 +835,7 @@ InitModMap(register KeyClassPtr keyc) CARD8 keysPerModifier[8]; CARD8 mask; - darwinKeyc = keyc; + // darwinKeyc = keyc; if (keyc->modifierKeyMap != NULL) xfree (keyc->modifierKeyMap); @@ -888,7 +887,7 @@ DarwinKeyboardReload(DeviceIntPtr pDev) memmove(pDev->key->modifierMap, keyInfo.modMap, MAP_LENGTH); InitModMap(pDev->key); - } + } else DEBUG_LOG("SetKeySymsMap=0\n"); SendMappingNotify(MappingKeyboard, MIN_KEYCODE, NUM_KEYCODES, 0); SendMappingNotify(MappingModifier, 0, 0, 0); @@ -937,6 +936,32 @@ int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) return key; } +/* + * DarwinModifierNXMaskToNXKeyCode + * Returns 0 if mask is not a known modifier mask. + */ +int DarwinModifierNXMaskToNXKeyCode(int mask) +{ + switch (mask) { + case NX_ALPHASHIFTMASK: return XK_Caps_Lock; + case NX_SHIFTMASK: ErrorF("Warning: Received NX_SHIFTMASK, treating as NX_DEVICELSHIFTKEYMASK\n"); + case NX_DEVICELSHIFTKEYMASK: return NX_MODIFIERKEY_SHIFT; //XK_Shift_L; + case NX_DEVICERSHIFTKEYMASK: return NX_MODIFIERKEY_RSHIFT; //XK_Shift_R; + case NX_CONTROLMASK: ErrorF("Warning: Received NX_CONTROLMASK, treating as NX_DEVICELCTLKEYMASK\n"); + case NX_DEVICELCTLKEYMASK: return XK_Control_L; + case NX_DEVICERCTLKEYMASK: return XK_Control_R; + case NX_ALTERNATEMASK: ErrorF("Warning: Received NX_ALTERNATEMASK, treating as NX_DEVICELALTKEYMASK\n"); + case NX_DEVICELALTKEYMASK: return XK_Alt_L; + case NX_DEVICERALTKEYMASK: return XK_Alt_R; + case NX_COMMANDMASK: ErrorF("Warning: Received NX_COMMANDMASK, treating as NX_DEVICELCMDKEYMASK\n"); + case NX_DEVICELCMDKEYMASK: return XK_Meta_L; + case NX_DEVICERCMDKEYMASK: return XK_Meta_R; + case NX_NUMERICPADMASK: return XK_Num_Lock; + case NX_HELPMASK: return XK_Help; + case NX_SECONDARYFNMASK: return XK_Control_L; // this seems very wrong, but is what the old code did + } +} + /* * DarwinModifierNXMaskToNXKey * Returns -1 if mask is not a known modifier mask. @@ -972,6 +997,29 @@ int DarwinModifierNXMaskToNXKey(int mask) return -1; } +char * DarwinModifierNXMaskTostring(int mask) +{ + switch (mask) { + case NX_ALPHASHIFTMASK: return "NX_ALPHASHIFTMASK"; + case NX_SHIFTMASK: return "NX_SHIFTMASK"; + case NX_DEVICELSHIFTKEYMASK: return "NX_DEVICELSHIFTKEYMASK"; + case NX_DEVICERSHIFTKEYMASK: return "NX_DEVICERSHIFTKEYMASK"; + case NX_CONTROLMASK: return "NX_CONTROLMASK"; + case NX_DEVICELCTLKEYMASK: return "NX_DEVICELCTLKEYMASK"; + case NX_DEVICERCTLKEYMASK: return "NX_DEVICERCTLKEYMASK"; + case NX_ALTERNATEMASK: return "NX_ALTERNATEMASK"; + case NX_DEVICELALTKEYMASK: return "NX_DEVICELALTKEYMASK"; + case NX_DEVICERALTKEYMASK: return "NX_DEVICERALTKEYMASK"; + case NX_COMMANDMASK: return "NX_COMMANDMASK"; + case NX_DEVICELCMDKEYMASK: return "NX_DEVICELCMDKEYMASK"; + case NX_DEVICERCMDKEYMASK: return "NX_DEVICERCMDKEYMASK"; + case NX_NUMERICPADMASK: return "NX_NUMERICPADMASK"; + case NX_HELPMASK: return "NX_HELPMASK"; + case NX_SECONDARYFNMASK: return "NX_SECONDARYFNMASK"; + } + return "unknown mask"; +} + /* * DarwinModifierNXKeyToNXMask * Returns 0 if key is not a known modifier key. From 6050c012359964e1b1dae141001ea162b2e77a76 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 16 Nov 2007 05:04:54 -0800 Subject: [PATCH 67/74] From Jeremy Huddleston: 1) Fixed a bug where XQUARTZ was #defined when auto but not when --enable-xquartz 2) Cleaned up missing #includes and function prototypes. 3) Fixed some invalid C syntax problems 4) Removed a bunch of dead code 5) Cleaned up code to prevent some warnings 6) Bugfix in xpr/x-hook.c - looks like someone just forgot to finish writing code for hook_remove()... I only noticed it because gcc -Wall complained about reaching the end of a non-void function... lucky for us gcc is smarter than we are. --- configure.ac | 21 ++--- dix/main.c | 5 -- hw/darwin/Makefile.am | 2 +- hw/darwin/apple/X11Application.m | 6 +- hw/darwin/darwin.c | 37 ++++++-- hw/darwin/darwin.h | 1 - hw/darwin/darwinEvents.c | 2 +- hw/darwin/quartz/Makefile.am | 2 +- hw/darwin/quartz/applewm.c | 1 + hw/darwin/quartz/quartz.c | 7 +- hw/darwin/quartz/quartz.h | 2 - hw/darwin/quartz/quartzStartup.c | 140 +------------------------------ hw/darwin/quartz/xpr/appledri.c | 2 +- hw/darwin/quartz/xpr/x-hook.c | 10 ++- hw/darwin/quartz/xpr/xprCursor.c | 3 +- hw/darwin/quartz/xpr/xprScreen.c | 3 + mi/miinitext.c | 4 - miext/rootless/rootlessWindow.h | 3 + 18 files changed, 79 insertions(+), 172 deletions(-) diff --git a/configure.ac b/configure.ac index facca682f..052f827e5 100644 --- a/configure.ac +++ b/configure.ac @@ -1610,7 +1610,6 @@ if test "X$XQUARTZ" = Xauto; then LDFLAGS=$save_LDFLAGS]) if test "X$xorg_cv_Carbon_framework" = Xyes; then - AC_DEFINE([XQUARTZ],[1],[Have Quartz]) XQUARTZ=yes else XQUARTZ=no @@ -1618,15 +1617,7 @@ if test "X$XQUARTZ" = Xauto; then fi if test "x$XQUARTZ" = xyes; then - if test "x$X11APP" = xauto; then - AC_MSG_CHECKING([whether to build X11.app]) - if test "x$XQUARTZ" = xyes ; then - X11APP=yes - else - X11APP=no - fi - AC_MSG_RESULT([$X11APP]) - fi + AC_DEFINE([XQUARTZ],[1],[Have Quartz]) # glxAGL / glxCGL don't work yet # AC_CACHE_CHECK([for AGL framework],xorg_cv_AGL_framework,[ @@ -1669,6 +1660,16 @@ if test "x$XQUARTZ" = xyes; then fi fi +if test "x$X11APP" = xauto; then + AC_MSG_CHECKING([whether to build X11.app]) + if test "x$XQUARTZ" = xyes ; then + X11APP=yes + else + X11APP=no + fi + AC_MSG_RESULT([$X11APP]) +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]) diff --git a/dix/main.c b/dix/main.c index 50dbb6767..7f7b0944d 100644 --- a/dix/main.c +++ b/dix/main.c @@ -260,11 +260,6 @@ main(int argc, char *argv[], char *envp[]) /* 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. */ - - /* 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 e23a3d143..0d3ee0257 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 -DINXQUARTZ +AM_CPPFLAGS = @XORG_INCS@ -I$(top_srcdir)/Xext -I$(top_srcdir)/miext/rootless -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" -DHAVE_XORG_CONFIG_H -DXFree86Server -DINXQUARTZ SUBDIRS = quartz utils diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index df42c1b8e..f36a5e2ba 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -47,6 +47,10 @@ #include #include +#include "rootlessCommon.h" + +WindowPtr xprGetXWindowFromAppKit(int windowNumber); // xpr/xprFrame.c + #define DEFAULTS_FILE "/usr/X11/lib/X11/xserver/Xquartz.plist" int X11EnableKeyEquivalents = TRUE; @@ -577,7 +581,7 @@ cfarray_to_nsarray (CFArrayRef in) ret = CFBooleanGetValue (value); else if (CFGetTypeID (value) == CFStringGetTypeID ()) { - const char *tem = [(NSString *) value lossyCString]; + const char *tem = [(NSString *) value UTF8String]; if (strcasecmp (tem, "true") == 0 || strcasecmp (tem, "yes") == 0) ret = YES; else diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c index 789b0e284..c721ca112 100644 --- a/hw/darwin/darwin.c +++ b/hw/darwin/darwin.c @@ -69,6 +69,11 @@ #include #include +#ifdef MITSHM +#define _XSHM_SERVER_ +#include +#endif + #include "darwin.h" #include "darwinClut8.h" @@ -186,7 +191,9 @@ static Bool DarwinAddScreen( // allocate space for private per screen storage dfb = xalloc(sizeof(DarwinFramebufferRec)); - SCREEN_PRIV(pScreen) = dfb; + + // SCREEN_PRIV(pScreen) = dfb; + pScreen->devPrivates[darwinScreenIndex].ptr = dfb; // setup hardware/mode specific details ret = DarwinModeAddScreen(foundIndex, pScreen); @@ -342,7 +349,7 @@ static int DarwinMouseProc( DeviceIntPtr pPointer, int what ) { - char map[6]; + CARD8 map[6]; switch (what) { @@ -699,10 +706,30 @@ void ddxInitGlobals(void) */ int ddxProcessArgument( int argc, char *argv[], int i ) { - int numDone; + if ( !strcmp( argv[i], "-fullscreen" ) ) { + ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" ); + return 1; + } - if ((numDone = DarwinModeProcessArgument( argc, argv, i ))) - return numDone; + if ( !strcmp( argv[i], "-rootless" ) ) { + ErrorF( "Running rootless inside Mac OS X window server.\n" ); + return 1; + } + + if ( !strcmp( argv[i], "-quartz" ) ) { + ErrorF( "Running in parallel with Mac OS X Quartz window server.\n" ); + return 1; + } + + // The Mac OS X front end uses this argument, which we just ignore here. + if ( !strcmp( argv[i], "-nostartx" ) ) { + return 1; + } + + // This command line arg is passed when launched from the Aqua GUI. + if ( !strncmp( argv[i], "-psn_", 5 ) ) { + return 1; + } if ( !strcmp( argv[i], "-fakebuttons" ) ) { darwinFakeButtons = TRUE; diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h index 25bba20e8..14443b94f 100644 --- a/hw/darwin/darwin.h +++ b/hw/darwin/darwin.h @@ -72,7 +72,6 @@ Bool DarwinModeAddScreen(int index, ScreenPtr pScreen); Bool DarwinModeSetupScreen(int index, ScreenPtr pScreen); void DarwinModeInitOutput(int argc,char **argv); void DarwinModeInitInput(int argc, char **argv); -int DarwinModeProcessArgument(int argc, char *argv[], int i); void DarwinModeProcessEvent(xEvent *xe); void DarwinModeGiveUp(void); void DarwinModeBell(int volume, DeviceIntPtr pDevice, pointer ctrl, int class); diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c index 0fb5c9a08..4201e0e06 100644 --- a/hw/darwin/darwinEvents.c +++ b/hw/darwin/darwinEvents.c @@ -235,7 +235,7 @@ static void DarwinUpdateModifiers( void DarwinReleaseModifiers(void) { KeySym *map = NULL; xEvent ke; - int i = 0, j = 0, nevents = 0; + int i = 0; DEBUG_LOG("DarwinReleaseModifiers(%p)\n", &keyInfo.keyMap); diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am index 26bc8ebb9..838af2989 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}\" -DHAS_KL_API -DHAVE_XORG_CONFIG_H +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../apple -I$(top_srcdir)/miext/rootless @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 2272a70c1..11cec4aaf 100644 --- a/hw/darwin/quartz/applewm.c +++ b/hw/darwin/quartz/applewm.c @@ -47,6 +47,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define _APPLEWM_SERVER_ #include "X11/extensions/applewmstr.h" #include "applewmExt.h" +#include "X11Application.h" #define DEFINE_ATOM_HELPER(func,atom_name) \ static Atom func (void) { \ diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index fcd78ae34..615ea8d29 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -40,11 +40,14 @@ #include "X11/extensions/applewm.h" #include "applewmExt.h" +#include "X11Application.h" + // X headers #include "scrnintstr.h" #include "windowstr.h" #include "colormapst.h" #include "globals.h" +#include "rootlessWindow.h" // System headers #include @@ -111,7 +114,9 @@ Bool DarwinModeAddScreen( { // allocate space for private per screen Quartz specific storage QuartzScreenPtr displayInfo = xcalloc(sizeof(QuartzScreenRec), 1); - QUARTZ_PRIV(pScreen) = displayInfo; + + // QUARTZ_PRIV(pScreen) = displayInfo; + pScreen->devPrivates[quartzScreenIndex].ptr = displayInfo; // do Quartz mode specific initialization return quartzProcs->AddScreen(index, pScreen); diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h index 172f3239b..e74a1082b 100644 --- a/hw/darwin/quartz/quartz.h +++ b/hw/darwin/quartz/quartz.h @@ -124,6 +124,4 @@ typedef struct _QuartzModeProcs { extern QuartzModeProcsPtr quartzProcs; extern int quartzHasRoot, quartzEnableRootless; -Bool QuartzLoadDisplayBundle(const char *dpyBundleName); - #endif diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c index 583941d08..3c8412f2a 100644 --- a/hw/darwin/quartz/quartzStartup.c +++ b/hw/darwin/quartz/quartzStartup.c @@ -40,14 +40,10 @@ char **envpGlobal; // argcGlobal and argvGlobal // are from dix/globals.c -void X11ControllerMain(int argc, char *argv[], - void (*server_thread) (void *), void *server_arg); -void GlxExtensionInit(void); -void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr); +void X11ControllerMain(int argc, char *argv[], void (*server_thread) (void *), void *server_arg); static void server_thread (void *arg) { extern int main(int argc, char **argv, char **envp); - exit (main (argcGlobal, argvGlobal, envpGlobal)); } @@ -65,7 +61,7 @@ void DarwinHandleGUI( char *envp[] ) { static Bool been_here = FALSE; - int main_exit, i; + int i; int fd[2]; if (been_here) { @@ -107,135 +103,5 @@ void DarwinHandleGUI( _InitHLTB(); X11ControllerMain(argc, argv, server_thread, NULL); - exit(main_exit); -} - -/* - * QuartzLoadDisplayBundle - * Try to load the appropriate bundle containing the back end display code. - */ -Bool QuartzLoadDisplayBundle( - const char *dpyBundleName) -{ - return TRUE; -} - - -/* - * LoadGlxBundle - * The Quartz mode X server needs to dynamically load the appropriate - * bundle before initializing GLX. - */ -static void LoadGlxBundle(void) -{ - CFBundleRef mainBundle; - CFStringRef bundleName; - CFURLRef bundleURL; - CFBundleRef glxBundle; - - // Get the main bundle for the application - mainBundle = CFBundleGetMainBundle(); - - // Choose the bundle to load - ErrorF("Loading GLX bundle "); - if (/*quartzUseAGL*/0) { - bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - quartzOpenGLBundle, - kCFStringEncodingASCII, - kCFAllocatorNull); - ErrorF("%s (using Apple's OpenGL)\n", quartzOpenGLBundle); - } else { - bundleName = CFSTR("glxMesa.bundle"); - CFRetain(bundleName); // so we can release later - ErrorF("glxMesa.bundle (using Mesa)\n"); - } - - // Look for the appropriate GLX bundle in the main bundle by name - bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName, - NULL, NULL); - if (!bundleURL) { - FatalError("Could not find GLX bundle."); - } - - // Make a bundle instance using the URLRef - glxBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL); - - if (!CFBundleLoadExecutable(glxBundle)) { - FatalError("Could not load GLX bundle."); - } - - // Find the GLX init functions - if (!GlxExtensionInit || !GlxWrapInitVisuals) { - FatalError("Could not initialize GLX bundle."); - } - - // Release the CF objects - CFRelease(bundleName); - CFRelease(bundleURL); -} - - -/* - * DarwinGlxExtensionInit - * Initialize the GLX extension. - */ -void DarwinGlxPushProvider(void *impl) -{ - GlxPushProvider(impl); -} - -/* - * DarwinGlxExtensionInit - * Initialize the GLX extension. - */ -void DarwinGlxExtensionInit(void) -{ - GlxExtensionInit(); -} - - -/* - * DarwinGlxWrapInitVisuals - */ -void DarwinGlxWrapInitVisuals( - miInitVisualsProcPtr *procPtr) -{ - if (!GlxWrapInitVisuals) - LoadGlxBundle(); - GlxWrapInitVisuals(procPtr); -} - - -int DarwinModeProcessArgument( int argc, char *argv[], int i ) -{ - // fullscreen: CoreGraphics full-screen mode - // rootless: Cocoa rootless mode - // quartz: Default, either fullscreen or rootless - - if ( !strcmp( argv[i], "-fullscreen" ) ) { - ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" ); - return 1; - } - - if ( !strcmp( argv[i], "-rootless" ) ) { - ErrorF( "Running rootless inside Mac OS X window server.\n" ); - return 1; - } - - if ( !strcmp( argv[i], "-quartz" ) ) { - ErrorF( "Running in parallel with Mac OS X Quartz window server.\n" ); - return 1; - } - - // The Mac OS X front end uses this argument, which we just ignore here. - if ( !strcmp( argv[i], "-nostartx" ) ) { - return 1; - } - - // This command line arg is passed when launched from the Aqua GUI. - if ( !strncmp( argv[i], "-psn_", 5 ) ) { - return 1; - } - - return 0; + exit(0); } diff --git a/hw/darwin/quartz/xpr/appledri.c b/hw/darwin/quartz/xpr/appledri.c index c38157dde..792523988 100644 --- a/hw/darwin/quartz/xpr/appledri.c +++ b/hw/darwin/quartz/xpr/appledri.c @@ -175,7 +175,7 @@ ProcAppleDRIAuthConnection( rep.authenticated = 1; if (!DRIAuthConnection( screenInfo.screens[stuff->screen], stuff->magic)) { - ErrorF("Failed to authenticate %u\n", stuff->magic); + ErrorF("Failed to authenticate %u\n", (unsigned int)stuff->magic); rep.authenticated = 0; } WriteToClient(client, sizeof(xAppleDRIAuthConnectionReply), (char *)&rep); diff --git a/hw/darwin/quartz/xpr/x-hook.c b/hw/darwin/quartz/xpr/x-hook.c index 323e3739d..2d9a564d6 100644 --- a/hw/darwin/quartz/xpr/x-hook.c +++ b/hw/darwin/quartz/xpr/x-hook.c @@ -50,12 +50,19 @@ X_PFX (hook_remove) (x_list *lst, x_hook_function *fun, void *data) { x_list *node, *cell; x_list *to_delete = NULL; + x_list *prev = NULL; - for (node = lst; node != NULL; node = node->next) + for (node = lst; node != NULL; prev = node, node = node->next) { cell = node->data; if (CELL_FUN (cell) == fun && CELL_DATA (cell) == data) + { to_delete = X_PFX (list_prepend) (to_delete, cell); + if(lst == node) + lst = node->next; + else + prev->next = node->next; + } } for (node = to_delete; node != NULL; node = node->next) @@ -66,6 +73,7 @@ X_PFX (hook_remove) (x_list *lst, x_hook_function *fun, void *data) } X_PFX (list_free) (to_delete); + return lst; } X_EXTERN void diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c index 02260bd43..e45bd1fb3 100644 --- a/hw/darwin/quartz/xpr/xprCursor.c +++ b/hw/darwin/quartz/xpr/xprCursor.c @@ -381,7 +381,8 @@ QuartzInitCursor(ScreenPtr pScreen) if (ScreenPriv == NULL) return FALSE; - CURSOR_PRIV(pScreen) = ScreenPriv; + /* CURSOR_PRIV(pScreen) = ScreenPriv; */ + pScreen->devPrivates[darwinCursorScreenIndex].ptr = ScreenPriv; /* override some screen procedures */ ScreenPriv->QueryBestSize = pScreen->QueryBestSize; diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 589b1725a..49cd1c168 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -42,6 +42,9 @@ #include "Xplugin.h" #include "quartz/applewmExt.h" +// From xprFrame.c +WindowPtr xprGetXWindow(xp_window_id wid); + #ifdef DAMAGE # include "damage.h" #endif diff --git a/mi/miinitext.c b/mi/miinitext.c index 3ccd4565e..f6aa9bd1b 100644 --- a/mi/miinitext.c +++ b/mi/miinitext.c @@ -660,12 +660,8 @@ InitVisualWrap() { miResetInitVisuals(); #ifdef GLXEXT -#ifdef INXQUARTZ - DarwinGlxWrapInitVisuals(&miInitVisualsProc); -#else GlxWrapInitVisuals(&miInitVisualsProc); #endif -#endif } #else /* XFree86LOADER */ diff --git a/miext/rootless/rootlessWindow.h b/miext/rootless/rootlessWindow.h index 093a2b384..ad876e53f 100644 --- a/miext/rootless/rootlessWindow.h +++ b/miext/rootless/rootlessWindow.h @@ -36,6 +36,7 @@ #include "rootlessCommon.h" +#include Bool RootlessCreateWindow(WindowPtr pWin); Bool RootlessDestroyWindow(WindowPtr pWin); @@ -59,5 +60,7 @@ void RootlessPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, void RootlessPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what); void RootlessChangeBorderWidth(WindowPtr pWin, unsigned int width); +void RootlessNativeWindowMoved (WindowPtr pWin); +void RootlessNativeWindowStateChanged (xp_window_id id, unsigned int state); #endif From 0560544a9a7b6f102a6d47b11b979479efba787c Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 16 Nov 2007 05:36:51 -0800 Subject: [PATCH 68/74] More correctness fixes to fix compiler warnings. --- hw/darwin/quartz/quartz.c | 2 +- hw/darwin/quartz/quartzCocoa.m | 10 +++++----- hw/darwin/quartz/quartzCommon.h | 5 +++-- hw/darwin/quartz/xpr/xprScreen.c | 8 +------- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c index 615ea8d29..d1eb72431 100644 --- a/hw/darwin/quartz/quartz.c +++ b/hw/darwin/quartz/quartz.c @@ -464,7 +464,7 @@ void DarwinModeProcessEvent( case kXDarwinWindowMoved: DEBUG_LOG("kXDarwinWindowMoved\n"); - RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0); + RootlessNativeWindowMoved ((WindowPtr)xe->u.clientMessage.u.l.longs0); break; case kXDarwinToggleFullscreen: diff --git a/hw/darwin/quartz/quartzCocoa.m b/hw/darwin/quartz/quartzCocoa.m index c5e6e5c86..46c61dc8e 100644 --- a/hw/darwin/quartz/quartzCocoa.m +++ b/hw/darwin/quartz/quartzCocoa.m @@ -123,9 +123,9 @@ int QuartzFSUseQDCursor( * Clean out any autoreleased objects. */ void QuartzBlockHandler( - void *blockData, - void *pTimeout, - void *pReadmask) + pointer blockData, + OSTimePtr pTimeout, + pointer pReadmask) { static NSAutoreleasePool *aPool = nil; @@ -138,9 +138,9 @@ void QuartzBlockHandler( * QuartzWakeupHandler */ void QuartzWakeupHandler( - void *blockData, + pointer blockData, int result, - void *pReadmask) + pointer pReadmask) { // nothing here } diff --git a/hw/darwin/quartz/quartzCommon.h b/hw/darwin/quartz/quartzCommon.h index f5dff662c..f0d5a7a08 100644 --- a/hw/darwin/quartz/quartzCommon.h +++ b/hw/darwin/quartz/quartzCommon.h @@ -46,6 +46,7 @@ #undef Cursor #undef WindowPtr #undef Picture +#include // Quartz specific per screen storage structure typedef struct { @@ -87,8 +88,8 @@ void QuartzSetWindowMenu(int nitems, const char **items, void QuartzFSCapture(void); void QuartzFSRelease(void); int QuartzFSUseQDCursor(int depth); -void QuartzBlockHandler(void *blockData, void *pTimeout, void *pReadmask); -void QuartzWakeupHandler(void *blockData, int result, void *pReadmask); +void QuartzBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask); +void QuartzWakeupHandler(pointer blockData, int result, pointer pReadmask); // Messages that can be sent to the main thread. enum { diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 49cd1c168..25f491aac 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -88,13 +88,7 @@ eventHandler(unsigned int type, const void *arg, { xp_window_id id = * (xp_window_id *) arg; WindowPtr pWin = xprGetXWindow(id); - BoxRec box; - xp_error retval = xp_get_window_bounds(id, &box); - if (retval != Success) { - ErrorF("Unable to find new bounds for window\n"); - break; - } - QuartzMessageServerThread(kXDarwinWindowMoved, 3, pWin, box.x1, box.y1); + QuartzMessageServerThread(kXDarwinWindowMoved, 1, pWin); } break; From 841e715d6bf00661be62abb16723bab42d91131b Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 16 Nov 2007 06:02:54 -0800 Subject: [PATCH 69/74] 1.2a11 --- configure.ac | 2 +- hw/darwin/apple/X11Application.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 052f827e5..7232bf43a 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) dnl This is the not the Xorg version number, it's the server version number. dnl Yes, that's weird. -AC_INIT([xorg-server], 1.2a10, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +AC_INIT([xorg-server], 1.2a11, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index f36a5e2ba..38359e6cc 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -160,7 +160,7 @@ message_kit_thread (SEL selector, NSObject *arg) tem = [infoDict objectForKey:@"CFBundleShortVersionString"]; - [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a10)", + [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2 (xorg-server-1.2a11)", tem] forKey:@"ApplicationVersion"]; [self orderFrontStandardAboutPanelWithOptions: dict]; From 2abc2b27d76397df0db1f56b04c1f5e8bd5b0f7e Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Fri, 16 Nov 2007 16:07:17 -0800 Subject: [PATCH 70/74] From Jeremy: In my previous patch, I "overfixed" hook.c. This patch removes the changes I made to the searching for loop since those are extraneous due to the remove function call in the delete for loop. --- hw/darwin/quartz/xpr/x-hook.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/hw/darwin/quartz/xpr/x-hook.c b/hw/darwin/quartz/xpr/x-hook.c index 2d9a564d6..84bf44416 100644 --- a/hw/darwin/quartz/xpr/x-hook.c +++ b/hw/darwin/quartz/xpr/x-hook.c @@ -50,19 +50,12 @@ X_PFX (hook_remove) (x_list *lst, x_hook_function *fun, void *data) { x_list *node, *cell; x_list *to_delete = NULL; - x_list *prev = NULL; - for (node = lst; node != NULL; prev = node, node = node->next) + for (node = lst; node != NULL; node = node->next) { cell = node->data; if (CELL_FUN (cell) == fun && CELL_DATA (cell) == data) - { to_delete = X_PFX (list_prepend) (to_delete, cell); - if(lst == node) - lst = node->next; - else - prev->next = node->next; - } } for (node = to_delete; node != NULL; node = node->next) From 4375ddfa40a77e30c065c63f83a9f3e52364741d Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sun, 18 Nov 2007 03:03:39 -0800 Subject: [PATCH 71/74] Added --with-x11app-archs configure option This configure option's value is passed to xcodebuild in ARCHS, so we can easily choose architecture targets for X11.app --- configure.ac | 2 ++ hw/darwin/Makefile.am | 15 +++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index 7232bf43a..4121fee88 100644 --- a/configure.ac +++ b/configure.ac @@ -512,6 +512,8 @@ AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: no)]), [XNEST=$enableval], [XNEST=no]) AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) AC_ARG_ENABLE(x11app, AS_HELP_STRING([--enable-x11app], [Build Apple's X11.app for Xquartz (default: auto)]), [X11APP=$enableval], [X11APP=auto]) +AC_ARG_WITH(x11app-archs, AS_HELP_STRING([--with-x11app-archs=ARCHS], [Architectures to build X11.app for, space delimeted (default: "ppc i386")]), [X11APP_ARCHS=$enableval], [X11APP_ARCHS="ppc i386"]) +AC_SUBST([X11APP_ARCHS]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 0d3ee0257..f82ed0273 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -1,11 +1,11 @@ AM_CFLAGS = @XORG_CFLAGS@ AM_CPPFLAGS = @XORG_INCS@ -I$(top_srcdir)/Xext -I$(top_srcdir)/miext/rootless -DUSE_NEW_CLUT -DBUILD_DATE=\"$(BUILD_DATE)\" -DHAVE_XORG_CONFIG_H -DXFree86Server -DINXQUARTZ - + SUBDIRS = quartz utils - + bin_PROGRAMS = Xquartz man1_MANS = apple/Xquartz.man - + Xquartz_SOURCES = darwin.c \ darwinEvents.c \ darwinKeyboard.c \ @@ -43,7 +43,6 @@ Xquartz_LDADD = ./quartz/libXquartz.a \ $(top_builddir)/miext/rootless/accel/librlAccel.la \ $(DARWIN_LIBS) $(XSERVER_LIBS) -lXplugin - Xquartz_LDFLAGS = -XCClinker -Objc \ -Wl,-u,_miDCInitialize \ -Wl,-framework,Carbon \ @@ -57,16 +56,16 @@ if X11APP bin_SCRIPTS = x11app x11launcher x11app: - cd apple && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" + cd apple && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)" x11launcher: - cd launcher && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" + cd launcher && xcodebuild CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ARCHS="$(X11APP_ARCHS)" x11app-install: - cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO + cd apple && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(prefix) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)" x11launcher-install: - cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO + cd launcher && xcodebuild install DSTROOT=$(DESTDIR) INSTALL_PATH=$(APPLE_APPLICATIONS_DIR) DEPLOYMENT_LOCATION=YES SKIP_INSTALL=NO ARCHS="$(X11APP_ARCHS)" x11app-clean: rm -rf apple/build From 920265a927984dd508992f2ed050c4c8c7dd4805 Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 18 Nov 2007 17:43:40 -0800 Subject: [PATCH 72/74] Disabled ALT_IS_MODE_SWITCH (just for joke, nothing more) --- hw/darwin/darwinKeyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c index 111c98abf..efa12b7b7 100644 --- a/hw/darwin/darwinKeyboard.c +++ b/hw/darwin/darwinKeyboard.c @@ -61,7 +61,7 @@ #undef DUMP_DARWIN_KEYMAP /* Define this to use Alt for Mode_switch. */ -#define ALT_IS_MODE_SWITCH 1 +//#define ALT_IS_MODE_SWITCH 1 #include #include From 3208298149296228d3aebe2fb2fd8b05e931708a Mon Sep 17 00:00:00 2001 From: Ben Byer Date: Sun, 18 Nov 2007 17:44:12 -0800 Subject: [PATCH 73/74] Added some DEBUG_LOG sauce to the XP_EVENT handling code --- hw/darwin/quartz/xpr/xprScreen.c | 68 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c index 25f491aac..739cefcba 100644 --- a/hw/darwin/quartz/xpr/xprScreen.c +++ b/hw/darwin/quartz/xpr/xprScreen.c @@ -64,49 +64,49 @@ static void eventHandler(unsigned int type, const void *arg, unsigned int arg_size, void *data) { - switch (type) - { + switch (type) { case XP_EVENT_DISPLAY_CHANGED: - // ErrorF("XP_EVENT_DISPLAY_MOVED\n"); - QuartzMessageServerThread(kXDarwinDisplayChanged, 0); - break; + DEBUG_LOG("XP_EVENT_DISPLAY_CHANGED\n"); + QuartzMessageServerThread(kXDarwinDisplayChanged, 0); + break; case XP_EVENT_WINDOW_STATE_CHANGED: - // ErrorF("XP_EVENT_WINDOW_STATE_CHANGED\n"); - if (arg_size >= sizeof(xp_window_state_event)) - { - const xp_window_state_event *ws_arg = arg; - - QuartzMessageServerThread(kXDarwinWindowState, 2, - ws_arg->id, ws_arg->state); - } - break; + DEBUG_LOG("XP_EVENT_WINDOW_STATE_CHANGED\n"); + if (arg_size >= sizeof(xp_window_state_event)) { + const xp_window_state_event *ws_arg = arg; + + QuartzMessageServerThread(kXDarwinWindowState, 2, + ws_arg->id, ws_arg->state); + } + break; case XP_EVENT_WINDOW_MOVED: - // ErrorF("XP_EVENT_WINDOW_MOVED\n"); - if (arg_size == sizeof(xp_window_id)) - { - xp_window_id id = * (xp_window_id *) arg; - WindowPtr pWin = xprGetXWindow(id); - QuartzMessageServerThread(kXDarwinWindowMoved, 1, pWin); - } - break; - + DEBUG_LOG("XP_EVENT_WINDOW_MOVED\n"); + if (arg_size == sizeof(xp_window_id)) { + xp_window_id id = * (xp_window_id *) arg; + WindowPtr pWin = xprGetXWindow(id); + QuartzMessageServerThread(kXDarwinWindowMoved, 1, pWin); + } + break; + case XP_EVENT_SURFACE_DESTROYED: + DEBUG_LOG("XP_EVENT_SURFACE_DESTROYED\n"); case XP_EVENT_SURFACE_CHANGED: - // ErrorF("XP_EVENT_SURFACE_MOVED\n"); - if (arg_size == sizeof(xp_surface_id)) - { - int kind; - - if (type == XP_EVENT_SURFACE_DESTROYED) - kind = AppleDRISurfaceNotifyDestroyed; - else - kind = AppleDRISurfaceNotifyChanged; - - DRISurfaceNotify(*(xp_surface_id *) arg, kind); + DEBUG_LOG("XP_EVENT_SURFACE_CHANGED\n"); + if (arg_size == sizeof(xp_surface_id)) { + int kind; + + if (type == XP_EVENT_SURFACE_DESTROYED) + kind = AppleDRISurfaceNotifyDestroyed; + else + kind = AppleDRISurfaceNotifyChanged; + + DRISurfaceNotify(*(xp_surface_id *) arg, kind); } break; + default: + ErrorF("Unknown XP_EVENT type (%d) in xprScreen:eventHandler\n", + type); } } From 848c19a9a22b0ff026929b7edbfdd2975a7ba923 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 19 Nov 2007 02:17:44 -0800 Subject: [PATCH 74/74] XDarwin dead code removal Removed unused code from the tree Moved some files to more appropriate locations --- hw/darwin/Makefile.am | 2 +- hw/darwin/XDarwin.man | 204 -- hw/darwin/{apple => }/Xquartz.man | 0 hw/darwin/bundle/Dutch.lproj/Credits.rtf | 168 -- .../bundle/Dutch.lproj/Localizable.strings | Bin 1422 -> 0 bytes .../Dutch.lproj/MainMenu.nib/classes.nib | 72 - .../Dutch.lproj/MainMenu.nib/objects.nib | Bin 22024 -> 0 bytes hw/darwin/bundle/Dutch.lproj/Makefile.am | 39 - .../bundle/Dutch.lproj/XDarwinHelp.html.cpp | 101 - hw/darwin/bundle/English.lproj/Credits.rtf | 168 -- .../English.lproj/InfoPlist.strings.cpp | 4 - .../bundle/English.lproj/Localizable.strings | Bin 1424 -> 0 bytes .../English.lproj/MainMenu.nib/classes.nib | 72 - .../English.lproj/MainMenu.nib/objects.nib | Bin 20829 -> 0 bytes hw/darwin/bundle/English.lproj/Makefile.am | 39 - .../bundle/English.lproj/XDarwinHelp.html.cpp | 94 - hw/darwin/bundle/French.lproj/Credits.rtf | 166 -- .../bundle/French.lproj/Localizable.strings | Bin 1492 -> 0 bytes .../French.lproj/MainMenu.nib/classes.nib | 72 - .../French.lproj/MainMenu.nib/objects.nib | Bin 21114 -> 0 bytes hw/darwin/bundle/French.lproj/Makefile.am | 41 - .../bundle/French.lproj/XDarwinHelp.html.cpp | 99 - hw/darwin/bundle/German.lproj/Credits.rtf | 168 -- .../bundle/German.lproj/Localizable.strings | Bin 1458 -> 0 bytes .../German.lproj/MainMenu.nib/classes.nib | 72 - .../German.lproj/MainMenu.nib/objects.nib | Bin 21182 -> 0 bytes hw/darwin/bundle/German.lproj/Makefile.am | 39 - .../bundle/German.lproj/XDarwinHelp.html.cpp | 94 - hw/darwin/bundle/Info.plist | 66 - hw/darwin/bundle/Japanese.lproj/Credits.rtf | 193 -- .../bundle/Japanese.lproj/Localizable.strings | Bin 1152 -> 0 bytes .../Japanese.lproj/MainMenu.nib/classes.nib | 72 - .../Japanese.lproj/MainMenu.nib/objects.nib | Bin 21854 -> 0 bytes hw/darwin/bundle/Japanese.lproj/Makefile.am | 40 - .../Japanese.lproj/XDarwinHelp.html.cpp | 141 - hw/darwin/bundle/Makefile.am | 39 - hw/darwin/bundle/Portuguese.lproj/Credits.rtf | 171 -- .../Portuguese.lproj/Localizable.strings | Bin 1504 -> 0 bytes .../Portuguese.lproj/MainMenu.nib/classes.nib | 72 - .../Portuguese.lproj/MainMenu.nib/objects.nib | Bin 21112 -> 0 bytes hw/darwin/bundle/Portuguese.lproj/Makefile.am | 39 - .../Portuguese.lproj/XDarwinHelp.html.cpp | 209 -- hw/darwin/bundle/Spanish.lproj/Credits.rtf | 168 -- .../bundle/Spanish.lproj/Localizable.strings | Bin 1480 -> 0 bytes .../Spanish.lproj/MainMenu.nib/classes.nib | 72 - .../Spanish.lproj/MainMenu.nib/objects.nib | Bin 20952 -> 0 bytes hw/darwin/bundle/Spanish.lproj/Makefile.am | 39 - .../bundle/Spanish.lproj/XDarwinHelp.html.cpp | 109 - hw/darwin/bundle/Swedish.lproj/Credits.rtf | 168 -- .../bundle/Swedish.lproj/Localizable.strings | Bin 1464 -> 0 bytes .../Swedish.lproj/MainMenu.nib/classes.nib | 72 - .../Swedish.lproj/MainMenu.nib/objects.nib | Bin 20858 -> 0 bytes hw/darwin/bundle/Swedish.lproj/Makefile.am | 39 - .../bundle/Swedish.lproj/XDarwinHelp.html.cpp | 101 - hw/darwin/bundle/XDarwin.icns | Bin 69465 -> 0 bytes hw/darwin/bundle/ko.lproj/Credits.rtf | 168 -- hw/darwin/bundle/ko.lproj/Localizable.strings | Bin 1332 -> 0 bytes .../bundle/ko.lproj/MainMenu.nib/classes.nib | 72 - .../bundle/ko.lproj/MainMenu.nib/objects.nib | Bin 21433 -> 0 bytes hw/darwin/bundle/ko.lproj/Makefile.am | 40 - .../bundle/ko.lproj/XDarwinHelp.html.cpp | 94 - hw/darwin/bundle/startXClients.cpp | 22 - hw/darwin/iokit/Makefile.am | 17 - hw/darwin/iokit/xfIOKit.c | 774 ----- hw/darwin/iokit/xfIOKit.h | 56 - hw/darwin/iokit/xfIOKitCursor.c | 737 ----- hw/darwin/iokit/xfIOKitStartup.c | 133 - hw/darwin/quartz/Makefile.am | 6 +- hw/darwin/quartz/Preferences.h | 137 - hw/darwin/quartz/Preferences.m | 599 ---- hw/darwin/{apple => quartz}/X11Application.h | 0 hw/darwin/{apple => quartz}/X11Application.m | 0 hw/darwin/{apple => quartz}/X11Controller.h | 0 hw/darwin/{apple => quartz}/X11Controller.m | 0 hw/darwin/quartz/XApplication.h | 46 - hw/darwin/quartz/XApplication.m | 46 - .../quartz/XDarwin.pbproj/project.pbxproj | 2519 ----------------- hw/darwin/quartz/XDarwinStartup.c | 166 -- hw/darwin/quartz/XDarwinStartup.man | 74 - hw/darwin/quartz/XServer.h | 136 - hw/darwin/quartz/XServer.m | 1539 ---------- 81 files changed, 4 insertions(+), 10901 deletions(-) delete mode 100644 hw/darwin/XDarwin.man rename hw/darwin/{apple => }/Xquartz.man (100%) delete mode 100644 hw/darwin/bundle/Dutch.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/Dutch.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/Dutch.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/English.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp delete mode 100644 hw/darwin/bundle/English.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/English.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/English.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/French.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/French.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/French.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/French.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/German.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/German.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/German.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/Info.plist delete mode 100644 hw/darwin/bundle/Japanese.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/Japanese.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/Japanese.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/Japanese.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/Makefile.am delete mode 100644 hw/darwin/bundle/Portuguese.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/Portuguese.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/Portuguese.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/Portuguese.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/Spanish.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/Spanish.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/Spanish.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/Swedish.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/Swedish.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/Swedish.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/Swedish.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/XDarwin.icns delete mode 100644 hw/darwin/bundle/ko.lproj/Credits.rtf delete mode 100644 hw/darwin/bundle/ko.lproj/Localizable.strings delete mode 100644 hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib delete mode 100644 hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib delete mode 100644 hw/darwin/bundle/ko.lproj/Makefile.am delete mode 100644 hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp delete mode 100644 hw/darwin/bundle/startXClients.cpp delete mode 100644 hw/darwin/iokit/Makefile.am delete mode 100644 hw/darwin/iokit/xfIOKit.c delete mode 100644 hw/darwin/iokit/xfIOKit.h delete mode 100644 hw/darwin/iokit/xfIOKitCursor.c delete mode 100644 hw/darwin/iokit/xfIOKitStartup.c delete mode 100644 hw/darwin/quartz/Preferences.h delete mode 100644 hw/darwin/quartz/Preferences.m rename hw/darwin/{apple => quartz}/X11Application.h (100%) rename hw/darwin/{apple => quartz}/X11Application.m (100%) rename hw/darwin/{apple => quartz}/X11Controller.h (100%) rename hw/darwin/{apple => quartz}/X11Controller.m (100%) delete mode 100644 hw/darwin/quartz/XApplication.h delete mode 100644 hw/darwin/quartz/XApplication.m delete mode 100644 hw/darwin/quartz/XDarwin.pbproj/project.pbxproj delete mode 100644 hw/darwin/quartz/XDarwinStartup.c delete mode 100644 hw/darwin/quartz/XDarwinStartup.man delete mode 100644 hw/darwin/quartz/XServer.h delete mode 100644 hw/darwin/quartz/XServer.m diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index f82ed0273..a77c006ac 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -4,7 +4,7 @@ AM_CPPFLAGS = @XORG_INCS@ -I$(top_srcdir)/Xext -I$(top_srcdir)/miext/rootless -D SUBDIRS = quartz utils bin_PROGRAMS = Xquartz -man1_MANS = apple/Xquartz.man +man1_MANS = Xquartz.man Xquartz_SOURCES = darwin.c \ darwinEvents.c \ diff --git a/hw/darwin/XDarwin.man b/hw/darwin/XDarwin.man deleted file mode 100644 index 143fb7c6d..000000000 --- a/hw/darwin/XDarwin.man +++ /dev/null @@ -1,204 +0,0 @@ -.\" -.TH XDARWIN 1 __vendorversion__ -.SH NAME -XDarwin \- X window system server for Darwin operating system -.SH SYNOPSIS -.B XDarwin -[ options ] ... -.SH DESCRIPTION -#ifdef DARWIN_WITH_QUARTZ -.I XDarwin -is the X window server for Mac OS X and the Darwin operating system -provided by the X.Org Foundation. -.I XDarwin -can run in three different modes. On Mac OS X, -.I XDarwin -runs in parallel with Aqua in full screen or rootless modes. These modes -are called Quartz modes, named after the Quartz 2D compositing engine used -by Aqua. XDarwin can also be run from the Darwin text console in IOKit mode. -.PP -When running from the console, -.I XDarwin -acts as the window server and uses IOKit services to access the display -framebuffer, mouse and keyboard and to provide a layer of hardware -abstraction. In console mode, -.I XDarwin -will normally be started by the \fIxdm(1)\fP display manager or by a script -that runs the program \fIxinit(1)\fP. -.PP -When running with the Mac OS X Aqua GUI, -.I XDarwin -will normally be started by launching from the Finder, but it may also be -started from the command line with the \fB\-quartz\fP, \fB\-fullscreen\fP, or -\fB\-rootless\fP options. Note that the defaults for various command line -options are set by the -.I XDarwin -application preferences in the Quartz modes. -.PP -In full screen Quartz mode, when the X Window System is active, it takes over -the entire screen. CoreGraphics is used to capture and draw to the screen. The -.I XDarwin -application allows easy switching between the Mac OS X and X window -desktops. More information is available in the Help menu of the -.I XDarwin -application. -.PP -In rootless mode, the X window system and Aqua share your display. The root -window of the X11 display is the size of the screen and contains all the -other windows. The X11 root window is not displayed in rootless mode as Aqua -handles the desktop background. -#else -.I XDarwin -is the X window server for Mac OS X and the Darwin operating system -provided by the X.Org Foundation. This version of -.I XDarwin -can only be started from the Darwin text console. The Mac OS X Aqua GUI, if -present, must be shut down. -.I XDarwin -uses IOKit services to access the display -framebuffer, mouse and keyboard and to provide a layer of hardware -abstraction. -.I XDarwin -will normally be started by the \fIxdm(1)\fP display manager or by a script -that runs the program \fIxinit(1)\fP. -#endif -.SH OPTIONS -.PP -In addition to the normal server options described in the \fIXserver(1)\fP -manual page, \fIXDarwin\fP accepts the following command line switches: -.TP 8 -.B \-fakebuttons -Emulates a 3 button mouse using modifier keys. By default, the Command modifier -is used to emulate button 2 and Option is used for button 3. Thus, clicking the -first mouse button while holding down Command will act like clicking -button 2. Holding down Option will simulate button 3. -.TP 8 -.B \-nofakebuttons -Do not emulate a 3 button mouse. This is the default. -.TP 8 -.B "\-fakemouse2 \fImodifiers\fP" -Change the modifier keys used to emulate the second mouse button. By default, -Command is used to emulate the second button. Any combination of the following -modifier names may be used: Shift, Option, Control, Command, Fn. For example, -.B \-fakemouse2 """Option,Shift"" -will set holding Option, Shift and clicking on button one as equivalent to -clicking the second mouse button. -.TP 8 -.B "\-fakemouse3 \fImodifiers\fP" -Change the modifier keys used to emulate the third mouse button. By default, -Option is used to emulate the third button. Any combination of the following -modifier names may be used: Shift, Option, Control, Command, Fn. For example, -.B \-fakemouse3 """Control,Shift"" -will set holding Control, Shift and clicking on button one as equivalent to -clicking the third mouse button. -.TP 8 -.B "\-keymap \fIfile\fP" -On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap. -The default is to read this keymapping from USA.keymapping. With this option -the keymapping will be read from \fIfile\fP instead. If the file's path is -not specified, it will be searched for in Library/Keyboards/ underneath the -following directories (in order): ~, /, /Network, /System. -.TP 8 -.B \-nokeymap -On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap. -With this option XDarwin queries the kernel for the current keymapping -instead of reading it from a file. This will often fail on newer kernels. -#ifdef DARWIN_WITH_QUARTZ -.TP 8 -.B "\-size \fIwidth\fP \fIheight\fP" -Sets the screen resolution for the X server to use. -Ignored in rootless mode. -.TP 8 -.B "\-depth \fIdepth\fP" -Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits -per pixel are supported. -Ignored in rootless mode. -.TP 8 -.B "\-refresh \fIrate\fP" -Gives the refresh rate to use in Hz. For LCD displays this should be 0. -Ignored in rootless mode. -.TP 8 -.B \-fullscreen -Run full screen in parallel with Mac OS X Aqua GUI. -.TP 8 -.B \-rootless -Run rootless inside Mac OS X Aqua GUI. -.TP 8 -.B \-quartz -Run in parallel with the Mac OS X Aqua GUI using the default mode. -#else -.TP 8 -.B "\-size \fIwidth\fP \fIheight\fP" -Sets the screen resolution for the X server to use. -.TP 8 -.B "\-depth \fIdepth\fP" -Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits -per pixel are supported. -.TP 8 -.B "\-refresh \fIrate\fP" -Gives the refresh rate to use in Hz. For LCD displays this should be 0. -#endif -.TP 8 -.B \-showconfig -Print out the server version and patchlevel. -.TP 8 -.B \-version -Same as \fB\-showconfig\fP. -.SH "SEE ALSO" -.PP -X(__miscmansuffix__), Xorg(1), Xserver(1), xdm(1), xinit(1) -.SH BUGS -.I XDarwin -and this man page still have many limitations. Some of the more obvious -ones are: -.br -- The display mode cannot be changed once the X server has started. -.br -- A screen saver is not supported. -.PP -.SH AUTHORS -XFree86 was originally ported to Mac OS X Server by John Carmack. Dave -Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0. -Torrey T. Lyons improved and integrated this code into the XFree86 -Project's mainline for the 4.0.2 release. -.PP -The following members of the XonX Team contributed to the following -releases (in alphabetical order): -.TP 4 -XFree86 4.1.0: -.br -Rob Braun - Darwin x86 support -.br -Torrey T. Lyons - Project Lead -.br -Andreas Monitzer - Cocoa version of XDarwin front end -.br -Gregory Robert Parker - Original Quartz implementation -.br -Christoph Pfisterer - Dynamic shared X libraries -.br -Toshimitsu Tanaka - Japanese localization -.TP 4 -XFree86 4.2.0: -.br -Rob Braun - Darwin x86 support -.br -Pablo Di Noto - Spanish localization -.br -Paul Edens - Dutch localization -.br -Kyunghwan Kim - Korean localization -.br -Mario Klebsch - Non-US keyboard support -.br -Torrey T. Lyons - Project Lead -.br -Andreas Monitzer - German localization -.br -Patrik Montgomery - Swedish localization -.br -Greg Parker - Rootless support -.br -Toshimitsu Tanaka - Japanese localization -.br -Olivier Verdier - French localization diff --git a/hw/darwin/apple/Xquartz.man b/hw/darwin/Xquartz.man similarity index 100% rename from hw/darwin/apple/Xquartz.man rename to hw/darwin/Xquartz.man diff --git a/hw/darwin/bundle/Dutch.lproj/Credits.rtf b/hw/darwin/bundle/Dutch.lproj/Credits.rtf deleted file mode 100644 index 5858e5933..000000000 --- a/hw/darwin/bundle/Dutch.lproj/Credits.rtf +++ /dev/null @@ -1,168 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww9000\viewh9000\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Spanish localization -\f0\i0 \ -Paul Edens\ - -\f2\i Dutch localization -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Korean localization -\f0\i0 \ -Mario Klebsch\ - -\f2\i Non-US keyboard support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i German localization -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Swedish localization -\f0\i0 \ -Greg Parker\ - -\f2\i Rootless support -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -Olivier Verdier\ - -\f2\i French localization -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Installer -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Cocoa version of XDarwin front end -\f0\i0 \ -Greg Parker\ - -\f2\i Original Quartz implementation -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Dynamic shared libraries -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i XDarwin icon -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 History: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Original XFree86 port to Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i XFree86 4.0 port to Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/Dutch.lproj/Localizable.strings b/hw/darwin/bundle/Dutch.lproj/Localizable.strings deleted file mode 100644 index 4fe16b355438d41c73a9a500e7462adcee91999c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1422 zcmb7^TW`}q5QXQNUtvX+kSZECMTM#eq0qt;h@yb#s~bDvk~o&*5ZWJ4`<>l5yQWb^ zW!bx)oy$3A#{PS2sqI^0=eDxO#`c~4%ogl2)*p6bh2_|Ov(~o6vapghVV&??5>;a@ zZR)Hmo<8Ert~qbWSg?L1-nGs82D827RGj6bn|=&;X-l7FB4 zG1F&MN^F3Az)B_xDaLCXYw^Z9v`VN_xXRK`8c7{_t+?fLzZXI8hRNw_9XjY|A@nr# zZ$uqc>qeeAwZ>G8CnC0n3`2A+L8xicJasdjW1Emo=VJ7W_iJ>`s99}$Fkz?oc4~X} zl`afnw97x#e%LFXyMJ*k-8bC+pW-huU^oM3ZU_8f)Qtl$hswLo;(Bjk+&FDZSZR9O kuW#-CU$W}osHvQ8b?Bn<+ykBq)YW`wBK%pvv+E2zcX|Kig#Z8m diff --git a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 77f345a4e..000000000 --- a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,72 +0,0 @@ -{ - IBClasses = ( - { - ACTIONS = {showHelp = id; }; - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; - CLASS = Preferences; - LANGUAGE = ObjC; - OUTLETS = { - addToPathButton = id; - addToPathField = id; - button2ModifiersMatrix = id; - button3ModifiersMatrix = id; - depthButton = id; - displayField = id; - dockSwitchButton = id; - fakeButton = id; - keymapFileField = id; - modeMatrix = id; - modeWindowButton = id; - mouseAccelChangeButton = id; - startupHelpButton = id; - switchKeyButton = id; - systemBeepButton = id; - useDefaultShellMatrix = id; - useOtherShellField = id; - useXineramaButton = id; - window = id; - }; - SUPERCLASS = NSObject; - }, - { - CLASS = XApplication; - LANGUAGE = ObjC; - OUTLETS = {preferences = id; xserver = id; }; - SUPERCLASS = NSApplication; - }, - { - ACTIONS = { - bringAllToFront = id; - closeHelpAndShow = id; - itemSelected = id; - nextWindow = id; - previousWindow = id; - showAction = id; - showSwitchPanel = id; - startFullScreen = id; - startRootless = id; - }; - CLASS = XServer; - LANGUAGE = ObjC; - OUTLETS = { - dockMenu = NSMenu; - helpWindow = NSWindow; - modeWindow = NSWindow; - startFullScreenButton = NSButton; - startRootlessButton = NSButton; - startupHelpButton = NSButton; - startupModeButton = NSButton; - switchWindow = NSPanel; - windowMenu = NSMenu; - windowSeparator = NSMenuItem; - }; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib deleted file mode 100644 index 8e9224cb66b4c29ce8d967d9098ceaed13c18c14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22024 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 RI=uD?IAN+`9Tndy{cmPB$kG4+ diff --git a/hw/darwin/bundle/Dutch.lproj/Makefile.am b/hw/darwin/bundle/Dutch.lproj/Makefile.am deleted file mode 100644 index 49a3ec557..000000000 --- a/hw/darwin/bundle/Dutch.lproj/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Dutchlprojdir = $(resourcesdir)/Dutch.lproj - -Dutchlproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings Localizable.strings - -Dutchlprojnibdir = $(Dutchlprojdir)/MainMenu.nib -Dutchlprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index 4b8e6f5cb..000000000 --- a/hw/darwin/bundle/Dutch.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,101 +0,0 @@ - - -XDarwin Help - - -
-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Release Date: X_REL_DATE -
-

Inhoud

-
    -
  1. Belangrijke Informatie
  2. -
  3. Gebruik
  4. -
  5. Instellen van het Path
  6. -
  7. Voorkeursinstellingen
  8. -
  9. Licentie
  10. -
-
-

Belangrijke Informatie

-
-
-#if X_PRE_RELEASE -Dit is een pre-release van XDarwin, waarvoor geen ondersteuning beschikbaar is. Rapporteren van bugs en aanleveren van patches kan op de XonX project pagina bij SourceForge. Kijk alvorens een bug te rapporteren in een pre-release eerst of een nieuwe versie beschikbaar is bij XonX of de X_VENDOR_LINK. -#else -Als de server ouder is dan 6-12 maanden, of als uw hardware nieuwer is dan de bovenstaande datum, kijk dan of een nieuwe versie beschikbaar is voor u een probleem aanmeldt. Rapporteren van bugs en aanleveren van patches kan op de XonX project pagina bij SourceForge. -#endif -
-
-Deze software is beschikbaar gesteld onder de voorwaarden van de MIT X11 / X Consortium Licentie en is beschikbaar 'AS IS',zonder enige garantie. Lees s.v.p. de Licentie voor gebruik.
- -

Gebruik

-

XDarwin is een open-source X server van het X Window Systeem. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin werkt op Mac OS X in schermvullende of rootless modus.

-

Het X window systeem in schermvullende modus neemt het hele beeldscherm in beslag. U schakelt terug naar de Mac OS X desktop door de toesten Command-Option-A in te drukken. Deze toetsencombinatie kunt u veranderen in de Voorkeuren. Op de Mac OS X desktop klikt u op de XDarwin icoon in de Dock om weer naar het X window systeem te schakelen. (In de Voorkeuren kunt er voor kiezen om een apart XDarwin schakelpaneel te gebruiken op de Mac OS X desktop.)

-

In rootless modus verschijnen het X window systeem en Aqua (de Mac OS X desktop) tegelijk op het scherm. Het achtergrondscherm van X11, waarbinnen alle X11 vensters vallen, is net zo groot als het gehele scherm, maar het achtergrondscherm zelf is onzichtbaar.

- -

Meerknopsmuis emulatie

-

Voor veel X11 programma's hebt u een 3-knops muis nodig. Met een 1-knops muis kunt u een 3-knops muis nabootsen door een toets in te drukken terwijl u klikt met de muis. Het instellen hiervan kan bij Voorkeuren, "Meerknopsmuis emulatie" in "Algemeen". Emulatie is standaard ingeschakeld: ingedrukt houden van de "command" toets terwijl u klikt emuleert knop 2, ingedrukt houden van "option" emuleert knop 3. Deze toetsen kunt u dus wijzigen in de Voorkeuren. Let op: als u xmodmap gebruikt om de indeling van het toetsenbord te wijzigen, moet u toch de oorspronkelijke toetsen op het toetsenbord gebruiken voor deze functie.

- -

Instellen van het Path

-

Het path is de lijst van directories waarin gezocht wordt naar commando's. De X11 commando's staan in de directory /usr/X11R6/bin, die dus aan uw path moet worden toegevoegd. XDarwin doet dit automatisch voor u en kan extra directories toevoegen waarin u commando's hebt geïnstalleerd.

- -

Ervaren gebruikers zullen het path al correct hebben ingesteld in de configuratiebestanden voor hun shell. In dat geval kunt u XDarwin via de Voorkeuren vertellen het path niet te wijzigen. XDarwin start de eerste X11 clients binnen de standaard login shell van de gebruiker (bij de Voorkeuren kunt u een afwijkende shell opgeven). Het instellen van het path is afhankelijk van de shell. Zie hiervoor de man pages voor de shell.

- -

Het kan handig zijn de manualpages voor X11 toe te voegen aan de lijst waarin gezocht wordt als u documentatie opvraagt. De manualpages voor X11 staan in /usr/X11R6/man en de MANPATH environment variable bevat de lijst van directories waarin naar documentatie wordt gezocht.

- -

Voorkeursinstellingen

-

Een aantal instellingen kan worden gewijzigd door "Voorkeuren..." te kiezen in het "XDarwin" menu. Wijzigingen van de instellingen genoemd onder "Start" gaan pas in als u XDarwin opnieuw hebt gestart. Een wijziging van de overige instellingen is direct effectief. Hier onder vindt u de verschillende mogelijkheden beschreven:

- -

Algemeen

-
    -
  • Gebruik systeempiep voor X11: Als u dit inschakelt wordt het Mac OS X waarschuwingssignaal ook gebruikt door X11, anders gebruikt X11 een simpele pieptoon (dit is de standaardinstelling).
  • -
  • Wijzigen muis-versnelling door X11 mogelijk: In een standaard X window systeem kan de window manager de muis-versnelling aanpassen. Dit kan verwarrend zijn omdat de snelheid onder X11 dan verschillend kan zijn van de snelheid die u in Mac OS X bij Systeemvoorkeuren hebt ingesteld. Om verwarring te voorkomen is de standaardinstelling dat X11 de versnelling niet kan wijzigen.
  • -
  • Meerknopsmuis emulatie: Dit is hierboven beschreven bij Gebruik. Als emulatie is ingeschakeld moet u de gekozen toetsen ingedrukt houden terwijl u met de muis klikt om de tweede en derde muisknop na te bootsen.
  • -
- -

Start

-
    -
  • Standaard modus: Hier kiest u de standaard scherm-modus: schermvullend of rootless (hierboven beschreven bij Gebruik). U kunt ook kiezen tijdens het starten van XDarwin, zie de optie hieronder.
  • -
  • Kies scherm-modus tijdens start: Dit is standaard ingeschakeld zodat u tijdens het starten van XDarwin kunt kiezen tussen schermvullend en rootless scherm-modus. Als u dit uitschakelt start XDarwin in de standaard modus zonder u iets te vragen.
  • -
  • X11 scherm nummer: Met X11 kunnen meerdere schermen worden aangestuurd door verschillende X servers op dezelfde computer. Als u meerdere X servers tegelijk wilt gebruiken stelt u hier het scherm nummer in dat door XDarwin wordt gebruikt.
  • -
  • Xinerama multi-monitor ondersteuning mogelijk: XDarwin ondersteunt het gebruik van meerdere monitoren met Xinerama, waarbij elke monitor wordt gezien als deel van één groot rechthoekig scherm. U kunt Xinerama hier uitschakelen, maar XDarwin werkt op dit moment zonder Xinerama niet goed met meerdere monitoren. Als u maar 1 monitor gebruikt is deze instelling automatisch uitgeschakeld.
  • -
  • Toetsenbordindeling-bestand: Een toetsenbordindeling-bestand wordt bij het starten geladen en omgezet naar een X11 toetsenbordindeling. Voor verschillende talen vindt u toetsenbordindelingen in de directory /System/Library/Keyboards.
  • -
  • Bij starten eerste X11 clients: Als XDarwin start, wordt xinit uitgevoerd om de X window manager en andere X clients te starten (zie "man xinit"). Voordat XDarwin xinit uitvoert voegt het de opgegeven directories toe aan het path. Standaard wordt alleen /usr/X11R6/bin toegevoegd. U kunt meerdere directories opgeven, gescheiden door een dubbelepunt. X clients worden gestart met de standaard login shell van de gebruiker met gebruik van de configuratiebestanden voor die shell. U kunt een afwijkende shell opgeven.
  • -
- -

Schermvullend

-
    -
  • Toetscombinatie knop: Klik op deze knop om de toetscombinatie te wijzigen waarmee u tussen de Mac OS X desktop en X11 schakelt. Als toetscombinatie kunt u elke combinatie gebruiken van de shift, control, command en option toetsen samen met één normale toets.
  • -
  • Klikken op icoon in Dock schakelt naar X11: Hiermee is een klik op de XDarwin icoon in de Dock voldoende om naar X11 te schakelen. In sommige versies van Mac OS X verdwijnt soms de cursor als u deze mogelijkheid gebruikt en daarna terugkeert naar de Mac OS X desktop.
  • -
  • Toon help bij schermvullend starten: Hiermee wordt een inleidend scherm getoond als XDarwin schermvullend start.
  • -
  • Kleurdiepte: In de schermvullende modus kan X11 een andere kleurdiepte gebruiken dan Aqua (en de Mac OS X desktop). Als u "Huidig" kiest, neemt XDarwin bij het starten de kleurdiepte over van Aqua. U kunt ook kiezen voor 8, 15 of 24 bits.
  • -
- -

Licentie

-The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code. -

X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - - diff --git a/hw/darwin/bundle/English.lproj/Credits.rtf b/hw/darwin/bundle/English.lproj/Credits.rtf deleted file mode 100644 index 34408e78c..000000000 --- a/hw/darwin/bundle/English.lproj/Credits.rtf +++ /dev/null @@ -1,168 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5160\viewh6300\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Spanish localization -\f0\i0 \ -Paul Edens\ - -\f2\i Dutch localization -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Korean localization -\f0\i0 \ -Mario Klebsch\ - -\f2\i Non-US keyboard support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i German localization -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Swedish localization -\f0\i0 \ -Greg Parker\ - -\f2\i Rootless support -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -Olivier Verdier\ - -\f2\i French localization -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Installer -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Cocoa version of XDarwin front end -\f0\i0 \ -Greg Parker\ - -\f2\i Original Quartz implementation -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Dynamic shared libraries -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i XDarwin icon -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 History: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Original XFree86 port to Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i XFree86 4.0 port to Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp b/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp deleted file mode 100644 index 268b80091..000000000 --- a/hw/darwin/bundle/English.lproj/InfoPlist.strings.cpp +++ /dev/null @@ -1,4 +0,0 @@ -/* English versions of the Info.plist keys; used by most localizations. */ -/* Most of these are set in the target application settings. */ - -NSHumanReadableCopyright = __quote__ X_VENDOR_NAME X_VERSION __quote__; diff --git a/hw/darwin/bundle/English.lproj/Localizable.strings b/hw/darwin/bundle/English.lproj/Localizable.strings deleted file mode 100644 index f2e8e3c238ea22879f195a9af3ad9c3667f34a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 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 diff --git a/hw/darwin/bundle/English.lproj/Makefile.am b/hw/darwin/bundle/English.lproj/Makefile.am deleted file mode 100644 index 8d6f7e52a..000000000 --- a/hw/darwin/bundle/English.lproj/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Englishlprojdir = $(resourcesdir)/English.lproj -Englishlproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings - -Englishlprojnibdir = $(Englishlprojdir)/MainMenu.nib -Englishlprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp \ - InfoPlist.strings.cpp - diff --git a/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index db33670d9..000000000 --- a/hw/darwin/bundle/English.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,94 +0,0 @@ - - -XDarwin Help - - -
-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Release Date: X_REL_DATE -
-

Contents

-
    -
  1. Important Notice
  2. -
  3. Usage
  4. -
  5. Setting Your Path
  6. -
  7. User Preferences
  8. -
  9. License
  10. -
-
-

Important Notice

-
-
-#if X_PRE_RELEASE -This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the XonX project page at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from XonX or the X_VENDOR_LINK. -#else -If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the XonX project page at SourceForge. -#endif -
-
-This software is distributed under the terms of the MIT X11 / X Consortium License and is provided AS IS, with no warranty. Please read the License before using.
- -

Usage

-

XDarwin is a freely redistributable open-source X server for the X Window System. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.

-

In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)

-

In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.

-

Multi-Button Mouse Emulation

-

Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.

- -

Setting Your Path

-

Your path is the list of directories to be searched for executable commands. The X11 commands are located in /usr/X11R6/bin, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.

-

More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.

-

In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in /usr/X11R6/man and the MANPATH environment variable contains the list of directories to search.

- -

User Preferences

-

A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:

-

General

-
    -
  • Use System beep for X11: When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.
  • -
  • Allow X11 to change mouse acceleration: In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.
  • -
  • Multi-Button Mouse Emulation: This is described above under Usage. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.
  • -
-

Start Up

-
    -
  • Default Mode: If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.
  • -
  • Show mode pick panel on startup: By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.
  • -
  • X11 Display number: X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.
  • -
  • Allow Xinerama multiple monitor support: XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.
  • -
  • Keymapping File: A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in /System/Library/Keyboards.
  • -
  • Starting First X11 Clients: When XDarwin is started from the Finder, it will run xinit to launch the X window manager and other X clients. (See "man xinit" for more information.) Before XDarwin runs xinit it will add the specified directories to the user's path. By default only /usr/X11R6/bin is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.
  • -
-

Full Screen

-
    -
  • Key combination button: Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.
  • -
  • Click on icon in Dock switches to X11: Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.
  • -
  • Show help on startup: This will show an introductory splash screen when XDarwin is started in full screen mode.
  • -
  • Color bit depth: In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.
  • -
- -

License

-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code. -

X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - diff --git a/hw/darwin/bundle/French.lproj/Credits.rtf b/hw/darwin/bundle/French.lproj/Credits.rtf deleted file mode 100644 index 17e0a0d70..000000000 --- a/hw/darwin/bundle/French.lproj/Credits.rtf +++ /dev/null @@ -1,166 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5160\viewh4480\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 \ -Participants \'88 XonX pour XFree86 4.2 : -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Version pour Darwin x86 -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Traduction en espagnol -\f0\i0 \ -Paul Edens\ - -\f2\i Traduction en allemand -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Traduction en cor\'8een -\f0\i0 \ -Mario Klebsch\ - -\f2\i Claviers non-US -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Direction du projet -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Traduction en allemand -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Traduction en su\'8edois -\f0\i0 \ -Greg Parker\ - -\f2\i Version \'c7 rootless \'c8 -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Traduction en japonais -\f0\i0 \ -Olivier Verdier\ - -\f2\i Traduction en fran\'8dais -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Remerciements : -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman et Zero G Software, Inc.\ - -\f2\i Installeur -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Participants \'88 XonX pour XFree86 4.2 : -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Version pour Darwin x86 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Direction du projet -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Version Cocoa de l'interface de XDarwin -\f0\i0 \ -Greg Parker\ - -\f2\i Impl\'8ementation initiale sur Quartz -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Librairies partag\'8ees dynamiquement -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Traduction en japonais -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Remerciements : -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - Ic\'99ne -\f2\i XDarwin -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Historique : -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Premi\'8fre adaptation de XFree86 sur Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i Adaptation de Free86 4.0 pour Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Int\'8egration dans le projet XFree86 pour la version 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/French.lproj/Localizable.strings b/hw/darwin/bundle/French.lproj/Localizable.strings deleted file mode 100644 index 21c4a99c166c844ba08c7e1b29fb9985a8c3638e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1492 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 diff --git a/hw/darwin/bundle/French.lproj/Makefile.am b/hw/darwin/bundle/French.lproj/Makefile.am deleted file mode 100644 index 4dca9342f..000000000 --- a/hw/darwin/bundle/French.lproj/Makefile.am +++ /dev/null @@ -1,41 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit - -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Frenchlprojdir = $(resourcesdir)/French.lproj - -Frenchlproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings - -Frenchlprojnibdir = $(Frenchlprojdir)/MainMenu.nib -Frenchlprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index 512416b1b..000000000 --- a/hw/darwin/bundle/French.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,99 +0,0 @@ - - -XDarwin Help - - -

-

XDarwin X Server pour Mac OS X

- X_VENDOR_NAME X_VERSION
- Date : X_REL_DATE -
-

Sommaire

-
    -
  1. Avertissement
  2. -
  3. Utilisation
  4. -
  5. Chemins d'accès
  6. -
  7. Préférences
  8. -
  9. Licence
  10. -
-
-

Avertissement

-
-
-#if PRE_RELEASE -Ceci est une pré-version de XDarwin et ne fait par conséquent l'objet d'aucun support client. Les bogues peuvent être signalés et des patches peuvent être soumis sur la -page du projet XonX chez SourceForge. Veuillez prendre connaissance de la dernière version sur XonX ou le X_VENDOR_LINK avant de signaler un bogue d'une pré-version. -#else -Si le serveur date de plus de 6-12 mois ou si votre matériel est plus récent que la date indiquée ci-dessus, veuillez vous procurer une version plus récente avant de signaler toute anomalie. Les bogues peuvent être signalés et des patches peuvent être soumis sur la page du projet XonX chez SourceForge. -#endif -
-
-Ce logiciel est distribué sous la -Licence du Consortium X/X11 du MIT et est fourni TEL QUEL, sans garanties. Veuillez prendre connaissance de la Licence avant toute utilisation.
- -

Utilisation

-

XDarwin est une X server libre et distribuable sans contrainte du X Window System. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin fonctionne sous Mac OS X en mode « rootless » ou plein écran.

-

Lorsque le système X window est actif en mode plein écran, il prend en charge la totalité de l'écran. Il est possible de revenir sur le bureau de Mac OS X en appuyant sur Commande-Option-A. Cette combinaison de touches peut être modifiée dans les préférences. Pour revenir dans X window, cliquer sur l'icône de XDarwin dans le Dock de Mac OS X. (Un réglage des préférences permet d'effectuer cette opération en cliquant dans une fenêtre flottante au lieu de l'icône du Dock)

-

En mode « rootless », X window system et Aqua utilisent le même affichage. La fenêtre-mère de l'affichage X11 est de la taille de l'écran et contient toutes les autre fenêtres. En mode « rootless » cette fenêtre-mère n'est pas affichée car Aqua gère le fond d'écran.

-

Émulation de souris à plusieurs boutons

-

Le fonctionnement de la plupart des applications X11 repose sur l'utilisation d'une souris à 3 boutons. Il est possible d'émuler une souris à 3 boutons avec un seul bouton en appuyant sur des touches de modification. Ceci est réglé dans la section "Émulation de souris à plusieurs boutons" de l'onglet "Général" des préférences. L'émulation est activée par défaut. Dans ce cas, cliquer en appuyant simultanément sur la touche "commande" simulera le bouton du milieu. Cliquer en appuyant simultanément sur la touche "option" simulera le bouton de droite. Les préférences permettent de régler n'importe quelle combinaison de touches de modification pour émuler les boutons du milieu et de droite. Notez que même si les touches de modifications sont mises en correspondance avec d'autres touches par xmodmap, ce sont les touches originelles spécifiées dans les préférences qui assureront l'émulation d'une souris à plusieurs boutons. - -

Réglage du chemin d'accès

-

Le chemin d'accès est une liste de répertoires utilisés pour la recherche d'exécutables. Les commandes X11 sont situées dans /usr/X11R6/bin, qui doit être ajouté à votre chemin d'accès. XDarwin fait cela par défaut, et peut également ajouter d'autres répertoires dans lesquels vous auriez installé d'autre commandes unix.

-

Les utilisateurs plus expérimentés auront déjà réglé leur chemin d'accès correctement par le biais des fichiers d'initialisation de leur shell. Dans ce cas, il est possible de demander à XDarwin de ne pas modifier le chemin d'accès initial. XDarwin lance les premiers clients X11 dans le shell d'ouverture de session par défaut. (Un shell de remplacement peut être spécifié dans les préférences.) La façon de régler le chemin d'accès dépend du shell utilisé. Ceci est documenté dans les pages "man" du shell.

-

De plus, il est possible d'ajouter les pages "man" de X11 à la liste des pages recherchées pour la documentation "man". Les pages "man" X11 se trouvent dans /usr/X11R6/man et la variable d'environnement MANPATH contient la liste des répertoires dans lesquels chercher.

- - -

Préférences

-

Un certain nombre d'options peuvent être réglées dans les préférences. On accède aux préférences en choisissant "Préférences..." dans le menu "XDarwin". Les options décrites comme options de démarrage ne prendront pas effet avant le redémarrage de XDarwin. Les autres options prennent immédiatement effet. Les différentes options sont détaillées ci-après :

-

Général

-
    -
  • Utiliser le bip d'alerte Système dans X11 : Cocher cette option pour que le son d'alerte standard de Mac OS X soit utilisé à la place du son d'alerte de X11. L'option n'est pas cochée ar défaut. Dans ce cas, un simple signal sonore est utilisé.
  • -
  • Autoriser X11 à changer la vitesse de la souris : Dans une implémentation classique du sytème X window, le gestionnaire de fenêtres peut modifier la vitesse de la souris. Cela peut s'avérer déroutant puisque le réglage de la vitesse de la souris peut être différent dans les préférences de Mac OS X et dans le gestionnaire X window. Par défaut, X11 n'est pas autorisé à changer la vitesse de la souris.
  • -
  • Émulation de souris à plusieurs boutons : Ceci est décrit ci-dessus à la rubrique Usage. Lorsque l'émulation est activée, il suffit d'appuyer simultanément sur les touches modificatrices sélectionnées et sur le bouton de la souris afin d'émuler les boutons du milieu et de droite.
  • -
-

Démarrage

-
    -
  • Mode par défaut : Le mode spécifié à cet endroit sera utilisé si l'utilisateur ne l'indique pas au démarrage.
  • -
  • Choix du mode d'affichage au démarrage Par défaut, une fenêtre de dialogue est affichée au démarrage de XDarwin pour permettre à l'utilisateur de choisir entre le mode plein écran et le mode « rootless ». Si cette option est désactivée, le mode par défaut sera automatiquement utilisé.
  • -
  • Numéro d'affichage (Display) X11 offre la possibilité de plusieurs serveurs X sur un ordinateur. L'utilisateur doit spécifier ici le numéro d'affichage utilisé par XDarwin dans le cas où plusieurs serveurs X seraient en service simultanément.
  • -
  • Autoriser la prise en charge Xinerama de plusieurs moniteurs : XDarwin peut être utilisé avec plusieurs moniteur avec Xinerama, qui considère les différents moniteurs comme des parties d'un écran rectugulaire plus grand. Cette option permet de désactiver Xinerama mais XDarwin ne prend alors pour l'instant pas correctement en charge l'affichage sur plusieurs écrans. Si il n'y a qu'un seul moniteur, Xinerama est automatiquement désactivé.
  • -
  • Fichier clavier : Un fichier de correspondance de clavier est lu au démarrage puis transformé en un fihcier de correspondance clavier pour X11. Les fichiers de correspondance clavier, disponibles pour de nombreuses langues, se trouvent dans /System/Library/Keyboards.
  • -
  • Démarrage des premiers clients X11 : Lorsque XDarwin est démarré à partir du Finder, il lance xinit qui lance à son tour le gestionnaire X window ainsi que d'autres clients X. (Voir "man xinit" pour plus d'informations.) Avant de lancer xinit, XDarwin ajoute les répertoires ainsi spécifiés au chemin d'accès de l'utilisateur. Par défaut, seul /usr/X11R6/bin est ajouté. Il est possible d'ajouter d'autres répertoires en les séparants à l'aide de deux points (:). Les clients X sont démarrés à partir du shell par défaut de l'utilisateur. Ainsi, le fichier d'initialisation de shell de l'utilisateur est lu. Un autre shell peut éventuellement être spécifié.
  • -
-

Plein écran

-
    -
  • Combinaison de touches : Appuyer sur ce bouton, puis appuyer sur une ou plusieurs touches modificatrices suivies d'une touche ordinaire. Cette combinaison de touche servira à commuter entre Aqua et X11.
  • -
  • Basculer dans X11 en cliquant sur l'icône du Dock : Cette option permet de passer dans X11 en cliquant dans l'icône de XDarwin dans le Dock. Sur certaines versions de Mac OS X, la commutation en utilisant le Dock peut faire disparaître le curseur lors du retour dans Aqua.
  • -
  • Afficher l'aide du mode plein écran au démarrage : Permet l'affichage d'une fenêtre d'introduction lorsque XDarwin est démarré en mode plein écran.
  • -
  • Profondeur de couleur : En mode plein écran, l'affichage X11 peut utiliser une autre profondeur de couleur que celle employée par Aqua. Si "Actuelle" est choisi, XDarwin utilisera la même profondeur de couleur qu'Aqua. Les autres choix sont 8 (256 couleurs), 15 (milliers de couleurs) et 24 bits (millions de couleurs).
  • -
- -

Licence

-The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code. -

X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - - diff --git a/hw/darwin/bundle/German.lproj/Credits.rtf b/hw/darwin/bundle/German.lproj/Credits.rtf deleted file mode 100644 index 34408e78c..000000000 --- a/hw/darwin/bundle/German.lproj/Credits.rtf +++ /dev/null @@ -1,168 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5160\viewh6300\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Spanish localization -\f0\i0 \ -Paul Edens\ - -\f2\i Dutch localization -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Korean localization -\f0\i0 \ -Mario Klebsch\ - -\f2\i Non-US keyboard support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i German localization -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Swedish localization -\f0\i0 \ -Greg Parker\ - -\f2\i Rootless support -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -Olivier Verdier\ - -\f2\i French localization -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Installer -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Cocoa version of XDarwin front end -\f0\i0 \ -Greg Parker\ - -\f2\i Original Quartz implementation -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Dynamic shared libraries -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i XDarwin icon -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 History: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Original XFree86 port to Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i XFree86 4.0 port to Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/German.lproj/Localizable.strings b/hw/darwin/bundle/German.lproj/Localizable.strings deleted file mode 100644 index 5db6306ec3bd77993bc49f3b2fc37deff236e60f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcma)+TW`}q5QXQNUtvXks%YF$K&S|zwp?C71r+QudRdi6;H?BVAqWMcETj0PePaCS#!{; zn3qf<;wiwY>|yTzi>BIYBPv0&Z=y?lK2z_dazrza$*3mfs8cCv<#ZK zpIZ24;1I$l=W(Jz8*#>Qo^1r}_$%jbNam(an%0=-g82_XRB*p^W9NHVq?-}>*5r~3 zezL#ye~cwehx;#%CfGtaONY(Z2+-&(uytdRj-to~!6*!1^q=15+rLJ%m898(Y Fo_}D~>>B_8 diff --git a/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 77f345a4e..000000000 --- a/hw/darwin/bundle/German.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,72 +0,0 @@ -{ - IBClasses = ( - { - ACTIONS = {showHelp = id; }; - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; - CLASS = Preferences; - LANGUAGE = ObjC; - OUTLETS = { - addToPathButton = id; - addToPathField = id; - button2ModifiersMatrix = id; - button3ModifiersMatrix = id; - depthButton = id; - displayField = id; - dockSwitchButton = id; - fakeButton = id; - keymapFileField = id; - modeMatrix = id; - modeWindowButton = id; - mouseAccelChangeButton = id; - startupHelpButton = id; - switchKeyButton = id; - systemBeepButton = id; - useDefaultShellMatrix = id; - useOtherShellField = id; - useXineramaButton = id; - window = id; - }; - SUPERCLASS = NSObject; - }, - { - CLASS = XApplication; - LANGUAGE = ObjC; - OUTLETS = {preferences = id; xserver = id; }; - SUPERCLASS = NSApplication; - }, - { - ACTIONS = { - bringAllToFront = id; - closeHelpAndShow = id; - itemSelected = id; - nextWindow = id; - previousWindow = id; - showAction = id; - showSwitchPanel = id; - startFullScreen = id; - startRootless = id; - }; - CLASS = XServer; - LANGUAGE = ObjC; - OUTLETS = { - dockMenu = NSMenu; - helpWindow = NSWindow; - modeWindow = NSWindow; - startFullScreenButton = NSButton; - startRootlessButton = NSButton; - startupHelpButton = NSButton; - startupModeButton = NSButton; - switchWindow = NSPanel; - windowMenu = NSMenu; - windowSeparator = NSMenuItem; - }; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib deleted file mode 100644 index 28fff8920ea44119c220f947d734caeac56c97ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21182 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

^>u>r~FZR`{m&LJ+Gm!;r> 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 a%y?vZ$&~REg5IEKGVWk%jY0ZpuKxlgZzR6} diff --git a/hw/darwin/bundle/German.lproj/Makefile.am b/hw/darwin/bundle/German.lproj/Makefile.am deleted file mode 100644 index fcb5dd24f..000000000 --- a/hw/darwin/bundle/German.lproj/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Germanlprojdir = $(resourcesdir)/German.lproj - -Germanlproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings Localizable.strings - -Germanlprojnibdir = $(Germanlprojdir)/MainMenu.nib -Germanlprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index db33670d9..000000000 --- a/hw/darwin/bundle/German.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,94 +0,0 @@ - - -XDarwin Help - - -

-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Release Date: X_REL_DATE -
-

Contents

-
    -
  1. Important Notice
  2. -
  3. Usage
  4. -
  5. Setting Your Path
  6. -
  7. User Preferences
  8. -
  9. License
  10. -
-
-

Important Notice

-
-
-#if X_PRE_RELEASE -This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the XonX project page at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from XonX or the X_VENDOR_LINK. -#else -If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the XonX project page at SourceForge. -#endif -
-
-This software is distributed under the terms of the MIT X11 / X Consortium License and is provided AS IS, with no warranty. Please read the License before using.
- -

Usage

-

XDarwin is a freely redistributable open-source X server for the X Window System. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.

-

In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)

-

In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.

-

Multi-Button Mouse Emulation

-

Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.

- -

Setting Your Path

-

Your path is the list of directories to be searched for executable commands. The X11 commands are located in /usr/X11R6/bin, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.

-

More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.

-

In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in /usr/X11R6/man and the MANPATH environment variable contains the list of directories to search.

- -

User Preferences

-

A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:

-

General

-
    -
  • Use System beep for X11: When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.
  • -
  • Allow X11 to change mouse acceleration: In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.
  • -
  • Multi-Button Mouse Emulation: This is described above under Usage. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.
  • -
-

Start Up

-
    -
  • Default Mode: If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.
  • -
  • Show mode pick panel on startup: By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.
  • -
  • X11 Display number: X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.
  • -
  • Allow Xinerama multiple monitor support: XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.
  • -
  • Keymapping File: A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in /System/Library/Keyboards.
  • -
  • Starting First X11 Clients: When XDarwin is started from the Finder, it will run xinit to launch the X window manager and other X clients. (See "man xinit" for more information.) Before XDarwin runs xinit it will add the specified directories to the user's path. By default only /usr/X11R6/bin is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.
  • -
-

Full Screen

-
    -
  • Key combination button: Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.
  • -
  • Click on icon in Dock switches to X11: Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.
  • -
  • Show help on startup: This will show an introductory splash screen when XDarwin is started in full screen mode.
  • -
  • Color bit depth: In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.
  • -
- -

License

-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code. -

X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - diff --git a/hw/darwin/bundle/Info.plist b/hw/darwin/bundle/Info.plist deleted file mode 100644 index 7e1770819..000000000 --- a/hw/darwin/bundle/Info.plist +++ /dev/null @@ -1,66 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - x11app - - CFBundleTypeName - X11 Application - CFBundleTypeOSTypes - - **** - - CFBundleTypeRole - Viewer - - - CFBundleTypeExtensions - - tool - * - - CFBundleTypeName - UNIX Application - CFBundleTypeOSTypes - - **** - - CFBundleTypeRole - Viewer - - - CFBundleExecutable - XDarwin - CFBundleGetInfoString - XDarwin 1.4.0, X.Org Foundation - CFBundleIconFile - XDarwin.icns - CFBundleIdentifier - org.x.X11 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - XDarwin - CFBundlePackageType - APPL - CFBundleShortVersionString - 2.0.0 - CFBundleSignature - ???? - CFBundleVersion - - NSHelpFile - XDarwinHelp.html - NSMainNibFile - MainMenu - NSPrincipalClass - XApplication - - diff --git a/hw/darwin/bundle/Japanese.lproj/Credits.rtf b/hw/darwin/bundle/Japanese.lproj/Credits.rtf deleted file mode 100644 index cf9eae207..000000000 --- a/hw/darwin/bundle/Japanese.lproj/Credits.rtf +++ /dev/null @@ -1,193 +0,0 @@ -{\rtf1\mac\ansicpg10001\cocoartf102 -{\fonttbl\f0\fnil\fcharset78 HiraKakuPro-W3;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Bold; -\f3\fswiss\fcharset77 Helvetica-Oblique;} -{\colortbl;\red255\green255\blue255;} -\vieww13980\viewh11160\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 \'82\'b1\'82\'cc\'90\'bb\'95\'69\'82\'cd -\f1 XFree86 -\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 -\f1 (http://www.xfree86.org/) -\f0 \'82\'a8\'82\'e6\'82\'d1\'82\'bb\'82\'cc\'8d\'76\'8c\'a3\'8e\'d2\'82\'c9\'82\'e6\'82\'c1\'82\'c4\'8a\'4a\'94\'ad\'82\'b3\'82\'ea\'82\'bd\'83\'5c\'83\'74\'83\'67\'83\'45\'83\'46\'83\'41\'82\'f0\'8a\'dc\'82\'f1\'82\'c5\'82\'a2\'82\'dc\'82\'b7\'81\'42\'8e\'9f\'82\'cc\'90\'6c\'81\'58\'82\'cd Darwin -\f1 /Mac OS X -\f0 \'82\'cc\'83\'54\'83\'7c\'81\'5b\'83\'67\'82\'c9\'8d\'76\'8c\'a3\'82\'b5\'82\'dc\'82\'b5\'82\'bd\'81\'42 -\f1 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f2\b \cf0 Contributors to Xorg Foundation Release: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f0 \'8d\'b6\'89\'45\'82\'cc Ctrl,Alt(Option),Meta(Command) \'82\'a8\'82\'e6\'82\'d1 Shift \'83\'4c\'81\'5b\'82\'cc\'93\'ae\'8d\'ec -\f1 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Contributors to XFree86 4.4: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper -\f3\i \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\i0 \cf0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'41\'83\'4e\'83\'5a\'83\'89\'83\'8c\'81\'5b\'83\'56\'83\'87\'83\'93 \'82\'a8\'82\'e6\'82\'d1 Apple-WM \'8a\'67\'92\'a3 -\f1 \ -Torrey T. Lyons\ - -\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f0 \'83\'7c\'83\'8b\'83\'67\'83\'4b\'83\'8b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Michael Oland\ - -\f0 \'90\'56\'82\'b5\'82\'a2 -\f1 XDarwin -\f0 \'83\'41\'83\'43\'83\'52\'83\'93 -\f1 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - Darwin x86 -\f3\i -\f0\i0 \'83\'54\'83\'7c\'81\'5b\'83\'67 -\f1 \ -Pablo Di Noto\ - -\f3\i -\f0\i0 \'83\'58\'83\'79\'83\'43\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Paul Edens\ - -\f3\i -\f0\i0 \'83\'49\'83\'89\'83\'93\'83\'5f\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Kyunghwan Kim\ - -\f3\i -\f0\i0 \'8a\'d8\'8d\'91\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Mario Klebsch\ - -\f0 \'94\'f1US\'83\'4c\'81\'5b\'83\'7b\'81\'5b\'83\'68 \'83\'54\'83\'7c\'81\'5b\'83\'67 -\f1 \ -Torrey T. Lyons\ - -\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b -\f1 \ -Andreas Monitzer\ - -\f0 \'83\'68\'83\'43\'83\'63\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Patrik Montgomery\ - -\f3\i -\f0\i0 \'83\'58\'83\'45\'83\'46\'81\'5b\'83\'66\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Greg Parker\ - -\f0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'54\'83\'7c\'81\'5b\'83\'67 -\f1 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5 -\f1 \ - -\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -Olivier Verdier\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f3\i \cf0 -\f0\i0 \'83\'74\'83\'89\'83\'93\'83\'58\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f3\i -\f0\i0 \'83\'43\'83\'93\'83\'58\'83\'67\'81\'5b\'83\'89 -\f1 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f2\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - Darwin x86 -\f0 \'83\'54\'83\'7c\'81\'5b\'83\'67 -\f1 \ -Torrey T. Lyons\ - -\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b -\f1 \ -Andreas Monitzer\ - Cocoa -\f0 \'94\'c5 XDarwin \'83\'74\'83\'8d\'83\'93\'83\'67\'83\'47\'83\'93\'83\'68 -\f1 \ -Greg Parker\ - -\f0 \'8d\'c5\'8f\'89\'82\'cc Quartz \'83\'43\'83\'93\'83\'76\'83\'8a\'83\'81\'83\'93\'83\'67 -\f1 \ -Christoph Pfisterer\ - -\f0 \'8b\'a4\'97\'4c\'83\'89\'83\'43\'83\'75\'83\'89\'83\'8a -\f1 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5 -\f1 \ - -\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59 -\f1 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f2\b \cf0 Special Thanks: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - XDarwin -\f0 \'83\'41\'83\'43\'83\'52\'83\'93 -\f1 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f2\b \cf0 History: -\f1\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f0 XFree86 \'82\'cc Mac OS X Server \'82\'d6\'82\'cc\'8d\'c5\'8f\'89\'82\'cc\'88\'da\'90\'41 -\f1 \ -Dave Zarzycki\ - XFree86 4.0 -\f0 \'82\'f0 Darwin 1.0 \'82\'c9\'88\'da\'90\'41 -\f1 \ -Torrey T. Lyons\ - XFree86 4.0.2 -\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67\'82\'d6\'82\'cc\'93\'9d\'8d\'87} \ No newline at end of file diff --git a/hw/darwin/bundle/Japanese.lproj/Localizable.strings b/hw/darwin/bundle/Japanese.lproj/Localizable.strings deleted file mode 100644 index c5c26d61a29501613b8879fcad648cb985433a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 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 Z*}1UIu)#wd7KeE#K3Za(?w}*d{{adv^j81? diff --git a/hw/darwin/bundle/Japanese.lproj/Makefile.am b/hw/darwin/bundle/Japanese.lproj/Makefile.am deleted file mode 100644 index 8d891edb5..000000000 --- a/hw/darwin/bundle/Japanese.lproj/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Japaneselprojdir = $(resourcesdir)/Japanese.lproj - -Japaneselproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings - -Japaneselprojnibdir = $(Japaneselprojdir)/MainMenu.nib -Japaneselprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index 6653f5bea..000000000 --- a/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - -XDarwin Help - -
-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Release Date: X_REL_DATE -
-

Ìܼ¡

-
    -
  1. Ãí°Õ»ö¹à
  2. -
  3. »ÈÍÑË¡
  4. -
  5. ¥Ñ¥¹¤ÎÀßÄê
  6. -
  7. ´Ä¶­ÀßÄê
  8. -
  9. ¥é¥¤¥»¥ó¥¹
  10. -
-
-

Ãí°Õ»ö¹à

-
-
-#if X_PRE_RELEASE -¤³¤ì¤Ï¡¤XDarwin ¤Î¥×¥ì¥ê¥ê¡¼¥¹¥Ð¡¼¥¸¥ç¥ó¤Ç¤¢¤ê¡¤¤¤¤«¤Ê¤ë¾ì¹ç¤Ë¤ª¤¤¤Æ¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó¡£ -¥Ð¥°¤ÎÊó¹ð¤ä¥Ñ¥Ã¥Á¤¬ SourceForge ¤Î XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸¤ËÄó½Ð¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ -¥×¥ì¥ê¥ê¡¼¥¹¥Ð¡¼¥¸¥ç¥ó¤Î¥Ð¥°¤òÊó¹ð¤¹¤ëÁ°¤Ë¡¤XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸¤Þ¤¿¤Ï X_VENDOR_LINK¤ÇºÇ¿·ÈǤΥÁ¥§¥Ã¥¯¤ò¤·¤Æ²¼¤µ¤¤¡£ -#else -¤â¤·¡¤¥µ¡¼¥Ð¡¼¤¬ 6 -12 ¥ö·î°Ê¾åÁ°¤Î¤â¤Î¤«¡¤¤Þ¤¿¤Ï¤¢¤Ê¤¿¤Î¥Ï¡¼¥É¥¦¥§¥¢¤¬¾åµ­¤ÎÆüÉÕ¤è¤ê¤â¿·¤·¤¤¤â¤Î¤Ê¤é¤Ð¡¤ÌäÂê¤òÊó¹ð¤¹¤ëÁ°¤Ë¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤òõ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£ -¥Ð¥°¤ÎÊó¹ð¤ä¥Ñ¥Ã¥Á¤¬ SourceForge ¤Î XonX ¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸¤ËÄó½Ð¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ -#endif -
-
-ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¤MIT X11/X Consortium License ¤Î¾ò·ï¤Ë´ð¤Å¤­¡¤ÌµÊݾڤǡ¤¡Ö¤½¤Î¤Þ¤Þ¡×¤Î·Á¤Ç¶¡µë¤µ¤ì¤Þ¤¹¡£ -¤´»ÈÍѤˤʤëÁ°¤Ë¡¤¥é¥¤¥»¥ó¥¹¾ò·ï¤ò¤ªÆÉ¤ß²¼¤µ¤¤¡£ -
- -

»ÈÍÑË¡

-

XDarwin ¤Ï¡¤ºÆÇÛÉÛ²Äǽ¤Ê¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î X Window System ¤Î¤¿¤á¤Î X ¥µ¡¼¥Ð¡¼¤Î¼ÂÁõ¤Ç¤¹¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î XDarwin ¤Ï X_VENDOR_LINK ¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤·¤¿¡£XDarwin ¤Ï¡¤Mac OS X ¾å¤Ç¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Çưºî¤·¤Þ¤¹¡£

- -

¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Ç¤Ï¡¤X Window System ¤¬¥¢¥¯¥Æ¥£¥Ö¤Ê»þ¡¤¤½¤ì¤ÏÁ´²èÌ̤òÀêÍ­¤·¤Þ¤¹¡£ -¤¢¤Ê¤¿¤Ï¡¤Command-Option-A ¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ Mac OS X ¥Ç¥¹¥¯¥È¥Ã¥×¤ØÀÚ¤êÂØ¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Î¥­¡¼¤ÎÁȤ߹ç¤ï¤»¤Ï¡¤´Ä¶­ÀßÄê¤ÇÊѹ¹²Äǽ¤Ç¤¹¡£ -Mac OS X ¥Ç¥¹¥¯¥È¥Ã¥×¤«¤é X Window System ¤ØÀÚ¤êÂØ¤¨¤ë¾ì¹ç¤Ï¡¤¥É¥Ã¥¯¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£ -¡Ê´Ä¶­ÀßÄê¤Ç¡¤¥Õ¥í¡¼¥Æ¥£¥ó¥°¡¦¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤è¤¦¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ë

- -

¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Ç¤Ï¡¤X Window System ¤È Aqua ¤Ï²èÌ̤ò¶¦Í­¤·¤Þ¤¹¡£ -X11 ¤¬É½¼¨¤¹¤ë¥ë¡¼¥È¥¦¥£¥ó¥É¥¦¤Ï²èÌ̤Υµ¥¤¥º¤Ç¤¢¤ê¡¤Â¾¤ÎÁ´¤Æ¤Î¥¦¥£¥ó¥É¥¦¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£ -Aqua ¤¬¥Ç¥¹¥¯¥È¥Ã¥×¤ÎÇØ·Ê¤òÀ©¸æ¤¹¤ë¤Î¤Ç¡¤X11 ¤Î¥ë¡¼¥È¥¦¥£¥ó¥É¥¦¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Ç¤Ïɽ¼¨¤µ¤ì¤Þ¤»¤ó¡£

- -

Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó

-

¿¤¯¤Î X11 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¤3 ¥Ü¥¿¥ó¥Þ¥¦¥¹¤òɬÍפȤ·¤Þ¤¹¡£ -¤¢¤Ê¤¿¤Ï¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ÈƱ»þ¤Ë¤¤¤¯¤Ä¤«¤Î½¤¾þ¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ¡¤°ì¤Ä¤Î¥Ü¥¿¥ó¤Ç 3 ¥Ü¥¿¥ó¥Þ¥¦¥¹¤ò¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¤³¤ì¤Ï¡¤´Ä¶­ÀßÄê¤Î¡Ö°ìÈÌÀßÄê¡×¤Î¡ÖÊ£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¡×¥»¥¯¥·¥ç¥ó¤ÇÀßÄꤷ¤Þ¤¹¡£ -¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤ÏÍ­¸ú¤Ç¡¤¥³¥Þ¥ó¥É¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥Þ¥¦¥¹¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤ÏÂè 2 ¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ËÁêÅö¤·¤Þ¤¹¡£ -¥ª¥×¥·¥ç¥ó¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤ÏÂè 3 ¥Þ¥¦¥¹¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ËÁêÅö¤·¤Þ¤¹¡£ -¤¢¤Ê¤¿¤Ï¡¤´Ä¶­ÀßÄê¤Ç¥Ü¥¿¥ó 2 ¤È 3 ¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë½¤¾þ¥­¡¼¤ÎÁȹ礻¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -Ãí¡§½¤¾þ¥­¡¼¤ò xmodmap ¤Ç¾¤Î¥­¡¼¤Ë³ä¤êÅö¤Æ¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¤Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ç¤ÏËÜÍè¤Î¥³¥Þ¥ó¥É¥­¡¼¤ä¥ª¥×¥·¥ç¥ó¥­¡¼¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

- -

¥Ñ¥¹¤ÎÀßÄê

-

¥Ñ¥¹¤Ï¡¤ ¼Â¹Ô²Äǽ¤Ê¥³¥Þ¥ó¥É¤ò¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ç¤¹¡£ -X11 ¥Ð¥¤¥Ê¥ê¤Ï¡¤/usr/X11R6/bin ¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤½¤ì¤ò¥Ñ¥¹¤Ë²Ã¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -XDarwin ¤Ï¡¤¤³¤ì¤ò¥Ç¥Õ¥©¥ë¥È¤Ç¹Ô¤¤¤Þ¤¹¡£¤Þ¤¿¡¤¤¢¤Ê¤¿¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿ÄɲäΥǥ£¥ì¥¯¥È¥ê¤ò²Ã¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

- -

·Ð¸³Ë­¤«¤Ê¥æ¡¼¥¶¡¼¤Ï¡¤¤¹¤Ç¤Ë¼«¤é¤Î¥·¥§¥ë¤Î¤¿¤á¤Ë½é´ü²½¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¥Ñ¥¹¤òÀßÄꤷ¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£ -¤³¤Î¾ì¹ç¡¤¤¢¤Ê¤¿¤Ï´Ä¶­ÀßÄê¤Ç XDarwin ¤¬¤¢¤Ê¤¿¤Î¥Ñ¥¹¤òÊѹ¹¤·¤Ê¤¤¤è¤¦¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -XDarwin ¤Ï¡¤¥æ¡¼¥¶¡¼¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥í¥°¥¤¥ó¥·¥§¥ë¤ÇºÇ½é¤Î X11 ¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤·¤Þ¤¹¡£ -¡Ê´Ä¶­ÀßÄê¤ÇÂå¤ï¤ê¤Î¥·¥§¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ë -¥Ñ¥¹¤òÀßÄꤹ¤ëÊýË¡¤Ï¡¤¤¢¤Ê¤¿¤¬»ÈÍѤ·¤Æ¤¤¤ë¥·¥§¥ë¤Ë°Í¸¤·¤Þ¤¹¡£ -¤³¤ì¤Ï¡¤¥·¥§¥ë¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¥É¥­¥å¥á¥ó¥È¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ - -

¤Þ¤¿¡¤¤¢¤Ê¤¿¤Ï¥É¥­¥å¥á¥ó¥È¤òõ¤·¤Æ¤¤¤ë»þ¡¤X11 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò¸¡º÷¤µ¤ì¤ë¥Ú¡¼¥¸¤Î¥ê¥¹¥È¤ËÄɲä·¤¿¤¤¤È»×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£ -X11 ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï /usr/X11R6/man ¤ËÃÖ¤«¤ì¤Þ¤¹¡£¤½¤·¤Æ MANPATH ´Ä¶­ÊÑ¿ô¤Ï¸¡º÷¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

- -

´Ä¶­ÀßÄê

-

¡ÖXDarwin¡×¥á¥Ë¥å¡¼¤Î¡Ö´Ä¶­ÀßÄê...¡×¥á¥Ë¥å¡¼¹àÌܤ«¤é¥¢¥¯¥»¥¹¤Ç¤­¤ë´Ä¶­ÀßÄê¥Ñ¥Í¥ë¤Ç¡¤¤¤¤¯¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -¡Öµ¯Æ°¥ª¥×¥·¥ç¥ó¡×¤ÎÆâÍÆ¤Ï¡¤XDarwin ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤ÇÍ­¸ú¤È¤Ê¤ê¤Þ¤»¤ó¡£ -¾¤ÎÁ´¤Æ¤Î¥ª¥×¥·¥ç¥ó¤ÎÆâÍÆ¤Ï¡¤Ä¾¤Á¤ËÍ­¸ú¤È¤Ê¤ê¤Þ¤¹¡£ -°Ê²¼¡¤¤½¤ì¤¾¤ì¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹:

- -

°ìÈÌÀßÄê

-
    -
  • X11 ¤Ç¥·¥¹¥Æ¥à¤Î¥Ó¡¼¥×²»¤ò»ÈÍѤ¹¤ë: ¥ª¥ó¤Î¾ì¹ç¡¤Mac OS X ¤Î¥Ó¡¼¥×²»¤¬ X11 ¤Î¥Ù¥ë¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£¥ª¥Õ¤Î¾ì¹ç¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡¤¥·¥ó¥×¥ë ¥È¡¼¥ó¤¬»È¤ï¤ì¤Þ¤¹¡£
  • -
  • X11 ¤Î¥Þ¥¦¥¹¥¢¥¯¥»¥é¥ì¡¼¥·¥ç¥ó¤òÍ­¸ú¤Ë¤¹¤ë: ɸ½àŪ¤Ê X Window System ¤Î¼ÂÁõ¤Ç¤Ï¡¤¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤Ï¥Þ¥¦¥¹¤Î²Ã®ÅÙ¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - ¥Þ¥¦¥¹¤Î²Ã®ÅÙ¤Ë Mac OS X ¤Î¥·¥¹¥Æ¥à´Ä¶­ÀßÄê¤È X ¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤¬°Û¤Ê¤ëÃͤòÀßÄꤷ¤¿¾ì¹ç¡¤¤³¤ì¤Ïº®Íð¤ò¾·¤­¤Þ¤¹¡£ - ¤³¤ÎÌäÂê¤òÈò¤±¤ë¤¿¤á¡¤¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï X11 ¤Î¥Þ¥¦¥¹¥¢¥¯¥»¥é¥ì¡¼¥·¥ç¥ó¤òÍ­¸ú¤È¤·¤Þ¤»¤ó¡£
  • -
  • Ê£¿ô¥Ü¥¿¥ó¥Þ¥¦¥¹¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó: »ÈÍÑË¡¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£¥ª¥ó¤Î¾ì¹ç¡¤¥Þ¥¦¥¹¥Ü¥¿¥ó¤¬Âè 2 ¤Þ¤¿¤ÏÂè 3 ¤Î¥Þ¥¦¥¹¥Ü¥¿¥ó¤ò¥¨¥ß¥å¥ì¡¼¥È¤¹¤ë»þ¤Ë¡¤ÁªÂò¤·¤¿½¤¾þ¥­¡¼¤òƱ»þ¤Ë²¡¤·¤Þ¤¹¡£
  • -
- -

µ¯Æ°¥ª¥×¥·¥ç¥ó

-
    -
  • ²èÌ̥⡼¥É: ¥æ¡¼¥¶¡¼¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¡¤¤³¤³¤Ç»ØÄꤵ¤ì¤¿¥â¡¼¥É¤¬»È¤ï¤ì¤Þ¤¹¡£
  • -
  • µ¯Æ°»þ¤Ë¥â¡¼¥ÉÁªÂò¥Ñ¥Í¥ë¤òɽ¼¨¤¹¤ë: ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤XDarwin ¤Îµ¯Æ°»þ¤Ë¥æ¡¼¥¶¡¼¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Þ¤¿¤Ï¥ë¡¼¥È¥ì¥¹¥â¡¼¥É¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤òÁªÂò¤¹¤ë¥Ñ¥Í¥ë¤òɽ¼¨¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¥ª¥Õ¤Î¾ì¹ç¡¤²èÌ̥⡼¥É¤Ç»ØÄꤷ¤¿¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£
  • -
  • X11 ¥Ç¥£¥¹¥×¥ì¥¤ÈÖ¹æ: X11¤Ï¡¤°ì¤Ä¤Î¥³¥ó¥Ô¥å¡¼¥¿¾å¤ÇÊÌ¡¹¤Î X ¥µ¡¼¥Ð¡¼¤¬´ÉÍý¤¹¤ëÊ£¿ô¤Î¥Ç¥£¥¹¥×¥ì¥¤¤¬Â¸ºß¤¹¤ë¤³¤È¤òµö¤·¤Þ¤¹¡£Ê£¿ô¤Î X ¥µ¡¼¥Ð¡¼¤¬Æ±»þ¤Ë¼Â¹Ô¤·¤Æ¤¤¤ë»þ¡¤XDarwin ¤¬»ÈÍѤ¹¤ë¥Ç¥£¥¹¥×¥ì¥¤¤ÎÈÖ¹æ¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
  • -
  • Xinerama ¥Þ¥ë¥Á¥â¥Ë¥¿¥µ¥Ý¡¼¥È¤òÍ­¸ú¤Ë¤¹¤ë: XDarwin ¤Ï¡¤Xinerama ¥Þ¥ë¥Á¥â¥Ë¥¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤½¤ì¤ÏÁ´¤Æ¤Î¥â¥Ë¥¿¤ò°ì¤Ä¤ÎÂ礭¤Ê²èÌ̤ΰìÉô¤È¤ß¤Ê¤·¤Þ¤¹¡£¤¢¤Ê¤¿¤Ï¤³¤Î¥ª¥×¥·¥ç¥ó¤Ç Xinerama ¤ò̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¿¤À¤·¡¤¸½ºß XDarwin ¤Ï¤½¤ì̵¤·¤ÇÀµ¤·¤¯Ê£¿ô¤Î¥â¥Ë¥¿¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¤â¤·¡¤¤¢¤Ê¤¿¤¬°ì¤Ä¤Î¥â¥Ë¥¿¤ò»È¤¦¤À¤±¤Ê¤é¤Ð¡¤Xinerama ¤Ï¼«Æ°Åª¤Ë̵¸ú¤È¤Ê¤ê¤Þ¤¹¡£
  • -
  • ¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë: ¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë¤Ïµ¯Æ°»þ¤ËÆÉ¤ß¹þ¤Þ¤ì¡¤X11 ¥­¡¼¥Þ¥Ã¥×¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£Â¾¸À¸ì¤ËÂбþ¤·¤¿¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¥Õ¥¡¥¤¥ë¤Ï /System/Library/Keyboards ¤Ë¤¢¤ê¤Þ¤¹¡£¡ÊÌõÃí¡§¥­¡¼¥Þ¥Ã¥Ô¥ó¥°¤Ç Japanese ¤òÁªÂò¤¹¤ë¤È¡¤°ìÉô¤Î¥­¡¼¤¬¸ú¤«¤Ê¤¤Åù¤ÎÉÔ¶ñ¹ç¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï USA ¤òÁªÂò¤·¤¿¾å¤Ç ~/.Xmodmap ¤òŬÍѤ·¤Æ²¼¤µ¤¤¡£¡Ë
  • -
  • ºÇ½é¤Î X11 ¥¯¥é¥¤¥¢¥ó¥È¤Îµ¯Æ°: XDarwin ¤¬ Finder¤«¤éµ¯Æ°¤¹¤ë»þ¡¤X ¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¡¼¤È X ¥¯¥é¥¤¥¢¥ó¥È¤Îµ¯Æ°¤Ï xinit ¤ò¼Â¹Ô¤·¤Þ¤¹¡£¡Ê¾ÜºÙ¤Ï "man xinit" ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£¡ËXDarwin ¤Ï xinit ¤ò¼Â¹Ô¤¹¤ëÁ°¤Ë¡¤»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò¥æ¡¼¥¶¡¼¤Î¥Ñ¥¹¤ËÄɲä·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/X11R6/bin ¤À¤±¤òÄɲä·¤Þ¤¹¡£Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲä·¤¿¤¤¾ì¹ç¤Ï¡¤¥³¥í¥ó¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Î¥·¥§¥ë½é´ü²½¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤à¤¿¤á¤Ë¡¤X ¥¯¥é¥¤¥¢¥ó¥È¤Ï¥æ¡¼¥¶¡¼¤Î¥Ç¥Õ¥©¥ë¥È¥í¥°¥¤¥ó¥·¥§¥ë¤Çµ¯Æ°¤µ¤ì¤Þ¤¹¡£É¬ÍפǤ¢¤ì¤Ð¡¤Âå¤ï¤ê¤Î¥·¥§¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
  • -
- -

¥Õ¥ë¥¹¥¯¥ê¡¼¥ó

-
    -
  • ¥­¡¼ÀßÄê¥Ü¥¿¥ó: X11 ¤È Aqua ¤òÀÚ¤êÂØ¤¨¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥Ü¥¿¥ó¤ÎÁȤ߹ç¤ï¤»¤ò»ØÄꤷ¤Þ¤¹¡£ - ¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¡¤Ç¤°Õ¤Î¿ô¤Î½¤¾þ¥­¡¼¤Ë³¤¤¤ÆÄ̾ï¤Î¥­¡¼¤ò²¡¤·¤Þ¤¹¡£
  • -
  • ¥É¥Ã¥¯¤Î¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç X11 ¤ËÌá¤ë: ¥ª¥ó¤Î¾ì¹ç¡¤¥É¥Ã¥¯¤Ëɽ¼¨¤µ¤ì¤¿ XDarwin ¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç X11 ¤Ø¤ÎÀڤ괹¤¨¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£Mac OS X ¤Î¤¤¤¯¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¤¥É¥Ã¥¯¤Î¥¢¥¤¥³¥ó¤Î¥¯¥ê¥Ã¥¯¤Ç Aqua ¤ËÌá¤Ã¤¿»þ¡¤¥«¡¼¥½¥ë¤¬¾Ã¼º¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
  • -
  • µ¯Æ°»þ¤Ë¥Ø¥ë¥×¤òɽ¼¨¤¹¤ë: XDarwin ¤¬¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Çµ¯Æ°¤¹¤ë»þ¡¤¥¹¥×¥é¥Ã¥·¥å¥¹¥¯¥ê¡¼¥ó¤òɽ¼¨¤·¤Þ¤¹¡£
  • -
  • ¿§¿¼ÅÙ: ¥Õ¥ë¥¹¥¯¥ê¡¼¥ó¥â¡¼¥É¤Ç¤Ï¡¤X11 ¥Ç¥£¥¹¥×¥ì¥¤¤¬ Aqua ¤È°Û¤Ê¤ë¿§¿¼ÅÙ¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡ÖÊѹ¹¤Ê¤·¡×¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¤XDarwin ¤Ï Aqua ¤Ë¤è¤Ã¤Æ»ÈÍѤµ¤ì¤ë¿§¿¼ÅÙ¤ò»È¤¤¤Þ¤¹¡£¤³¤ì°Ê³°¤Ë 8¡¤15 ¤Þ¤¿¤Ï24 ¥Ó¥Ã¥È¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
  • -
- -

-¥é¥¤¥»¥ó¥¹ -

-XDarwin ¤Î¼çÍפʥ饤¥»¥ó¥¹¤ÏÅÁÅýŪ¤Ê MIT X11/X Consortium License ¤Ë´ð¤Å¤­¤Þ¤¹¡£ -¤½¤ì¤Ï½¤Àµ¤Þ¤¿¤ÏºÆÇÛÉÛ¤µ¤ì¤ë¥½¡¼¥¹¥³¡¼¥É¤Þ¤¿¤Ï¥Ð¥¤¥Ê¥ê¤Ë¡¤¤½¤ÎÃøºî¸¢/¥é¥¤¥»¥ó¥¹É½¼¨¤¬¤½¤Î¤Þ¤Þ»Ä¤µ¤ì¤ë¤³¤È¤òÍ׵᤹¤ë°Ê³°¤Î¾ò·ï¤ò¶¯À©¤·¤Þ¤»¤ó¡£ -¤è¤ê¿¤¯¤Î¾ðÊó¤È¡¤¥³¡¼¥É¤Î°ìÉô¤ò¥«¥Ð¡¼¤¹¤ëÄɲäÎÃøºî¸¢/¥é¥¤¥»¥ó¥¹É½¼¨¤Î¤¿¤á¤Ë¡¤¥½¡¼¥¹¥³¡¼¥É¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ -

- -X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - diff --git a/hw/darwin/bundle/Makefile.am b/hw/darwin/bundle/Makefile.am deleted file mode 100644 index f02be74e1..000000000 --- a/hw/darwin/bundle/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - -SUBDIRS = English.lproj Dutch.lproj French.lproj German.lproj Japanese.lproj \ - ko.lproj Portuguese.lproj Spanish.lproj Swedish.lproj - -bin_SCRIPTS = startXClients - -startXClients: $(srcdir)/startXClients.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) -DXINITDIR=$(XINITDIR) -DXBINDIR=$(BINDIR) $< | $(CPP_SED_MAGIC) > $@ - -chmod 755 startXClients - -contentsdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents -resourcesdir = $(contentsdir)/Resources - -contents_DATA = Info.plist -resources_DATA = XDarwin.icns startXClients - -install-data-hook: - chmod 755 $(DESTDIR)$(resourcesdir)/startXClients - echo "APPL????" > $(DESTDIR)$(contentsdir)/PkgInfo - touch $(DESTDIR)@APPLE_APPLICATIONS_DIR@/XDarwin.app - -uninstall-hook: - rm -rf $(DESTDIR)$(contentsdir)/PkgInfo - -CLEANFILES = startXClients - -EXTRA_DIST = \ - XDarwin.icns \ - startXClients.cpp \ - Info.plist diff --git a/hw/darwin/bundle/Portuguese.lproj/Credits.rtf b/hw/darwin/bundle/Portuguese.lproj/Credits.rtf deleted file mode 100644 index 8dcddc2f7..000000000 --- a/hw/darwin/bundle/Portuguese.lproj/Credits.rtf +++ /dev/null @@ -1,171 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5140\viewh4980\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Contribuidores do XonX ao XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro -\f1\b \ - -\f2\i\b0 Localiza\'8d\'8bo para o Portugu\'90s\ - -\f0\i0 Michael Oland\ - -\f2\i New XDarwin icon -\f1\i0\b \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Contribuidores do XonX ao XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Suporte para o Darwin x86\ - -\f0\i0 Pablo Di Noto\ - -\f2\i Localiza\'8d\'8bo para o Espanhol -\f0\i0 \ -Paul Edens\ - -\f2\i Localiza\'8d\'8bo para o Holand\'90s -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Localiza\'8d\'8bo para o Coreano -\f0\i0 \ -Mario Klebsch\ - -\f2\i Suporte para teclados Non-US -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i L\'92der de Projeto -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Localiza\'8d\'8bo para o Alem\'8bo -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Localiza\'8d\'8bo para o Sueco -\f0\i0 \ -Greg Parker\ - -\f2\i Suporte ao modo Compartilhado (Rootless) -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Localiza\'8d\'8bo para o Japon\'90s -\f0\i0 \ -Olivier Verdier\ - -\f2\i Localiza\'8d\'8bo para o Fran\'8d\'90s -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Agradecimentos Especiais: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Instalador -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Membros do Time XonX\ -Contribuindo com o XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Suporte ao Darwin x86\ - -\f0\i0 Torrey T. Lyons\ - -\f2\i L\'92der de Projeto -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Vers\'8bo Cocoa da interface XDarwin -\f0\i0 \ -Greg Parker\ - -\f2\i Implementa\'8d\'8bo Original -\f0\i0 -\f2\i ao Quartz \ - -\f0\i0 Christoph Pfisterer\ - -\f2\i Bibliotecas Din\'89micas Compartilhadas -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Localiza\'8d\'8bo para o Japon\'90s -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Agradecimento Especial: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i \'eacone do XDarwin -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Hist\'97rico: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Suporte Original do XFree86 no Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i Suporte ao -\f0\i0 -\f2\i XFree86 4.0 no Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integra\'8d\'8bo dentro do Projeto XFree86 na vers\'8bo 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/Portuguese.lproj/Localizable.strings b/hw/darwin/bundle/Portuguese.lproj/Localizable.strings deleted file mode 100644 index c79b282f6460bd155a8b2de19f2e88b2ebbd0554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcma)+-EPxB5QXQOr?8@4RWxo=iJ~Hepp+{RMQsJQPU572G&PPxD39ES0KPM8XYJBR z$l6`+?EIWLGrPb4SZe#0*ty+WX_c*Q#>j2ONNj<0Y#Hm^ej%A4`@vdrKId%7ny^lp zS6G)wmw1qL%^WO7cE`T5Yxns9e`EF^?SlCWV~U-8Rs83y6YKN053(mUx;^yXp_TJJ zw`X?3`A@v0R=DkqIkOugrf4c|S>sHJx#QX7FzaTaK%cE-+=gpaL^+DFg3Ole7F)ZXeIh^E1b*9mys{qBmyDk0J$650uS9msXtd|> zBYg59s~1!wBFaH4|DpE(i>IplBX)!8-$YbKiPvc1*;J10#%(g9sUwxEx~cREF1P;V z=d*3USRPEbc)0Re0ZK*QsdU}hGDc;t2 zQa^lSe@8|cj2GMLh$nSy)7d?{qCT&=FOTWR*#EvtyDZxLJjAr}o~o$XwR0bDZp3p6 z=7}BfDi!2$0RD*Lv9or(H)LP&=?zn7$J@H`H&0ToNL;6kz+cQ=4MDNfkk ze)=A@eJR`$V?`8y(IQgq(}IQ{K?D^=MO0QqTSSy6Kcs!qAl&yobARmJ-2~}-eSf^q z$H45|J3r2xIdkTmGiPRQR&Mz2D%BSX2UVp~WFCv~qDUmtzPNPC_~~WyRd0Br5>^EJ zC=zL1TxzDUXsuafLUkw{s5BD?t&C(8QB@Qx4F@&iJ1*fs}3t= z73#QPP`R5$B00sS=Htq`+}gNdRr8X@0FzTcQMG0LLq1H7uX8 znq`JzuqdGB7nhpdn4yLO)j_X1Xr+#V06nErnX6Kz4kls~=BeHVl}d0yEEbJCsy~Jt zRHj}`(-y0~(y$U%kp=4DUrge&hPseFp&}5HfcT=M*4IU!NH3lB<3OO2T4fh6TeFQZ zwsE7oH_gKGc({*LY^umsCXs^ zRX+x>C9LX+Yr&$oYU-jvkw|WFDHx_I;PrVt$eOxLDv0?qzB(KZ_`%SqG$G&*2Lly@w$|>dtI5L{KN`iK;9A}s z4`XvYwY!MDYNMDUUT+cOs1?bxK}=99Dz2CBf5M z%Y*SV&8bu?cGZh&d(I9V!DfDJtZ!}Xl%50{K z+02aqS-}?KH;l%-OnJH;z!GQ%>490bCxtF;Q|R&pk>s`CCwjSoxO#%(_d<*WWBa1f zKS<>EKa+yeWwGen)WS}5AHWi$F#0vk7D3>Z6lRxJ4Emug1=0qD0arC z73hlLv4^;w!wV$u*vd!_5gvaaItdq3s##JK)EORY1k%|zs6nNI1_r`tLZBi5M%&aX zl1cR-7)$RC0T{7(p4a3VStb_wXj5h+qr80i^@G>{jzb_tcYnR+d49KTgTd?X4fTICALm^VyWx)T9jr*j1i^V zO$+z}o)X0uYDp_@gT7@YO{p!4}tP|O9MRIN%e$5ZA_WoqrG&Y#A>>ikJ{}+E8 zKq=54#TX^#LFkLn6(JLW{wR+^bANUo&&6vGqF|NAm zs+Fi~_laP&?%cVv|GDR$qjKlpd+)sqAAR(Z@$ttW8%K^Dk>M|Y`HS)4haVd6zyH4R z$}6v&fByOB4e-LhqAsaPfG1jkN|JQEax>ciY2MY$_)gI$DVaALZ4Fm@;E}S`Y#%OA4g578s zUw{3z@zqyf8K+O5HjW)Tb|D^*8*}H*eLX8H>t@u2{*H1gAYFVdC#6be~CIH5ZWUUE(C}AN2+*Qj~+ehz{iKs z4_Q|tWc?71zy9^FkM!%;?@^S!1;K+r<8AY`jT2-5o878at6yAu?X_DMFJ62Qe0}_P zzx&;Pf$9Xl$wO3WP-n#Crq- zhPOi(JUV|ithPwG9N`*-8$th>2-Jt05WbJl7oi;jwM%tc`lCFe7x4v+MOQ1(Gu4-T zi#YkO9jcj-A+tDlJ!i;ga98$bo@u3{FmGi&V~lu5$$ivvYu?pLM-ATHPS4Kgy(CsB zlf8pq<~+Z`d%Iu`bitgFNSCO#X6C=PU*F5vRr$<{p=Y4;w=f398T&8TFr;NOw{RZY zm!yEQrFu#zxTvjtM%`>gH%3uY>iRQ)x5qIBIthNe;DVGbe%;D8NrPTDEr2DY5`-;n z8~SR<8>pD4kj=kP3sox>ScEk`4zs}HS3Fphd9_4R0;w#ibu*;a-MBFt`HEC4ttl62 zVedTBszC2E2R&FSV+4B;BTK(Y=pBb?GW^208dhW~`R>Jyn=92|z~fUqQs2W+nKgX4 z%SdU{zz%-_B5WnqooGX_X9XX9V>d8mx6~F^-h~#jtQPpyiGJiYaL3l^9EOoIUhyuN z8w^zYeWtm?$x<_Ip*ECnrk*70C#C(4T?Ai&c}Bmf?Mq|c?%~bjLLQ|e46_k*{-YZ5 z_=(zhr${YVwQ#_rgd3mqD4wcd<1>r3O2rdYQ-;C=vQz~FbAw8yQV@fc{+*4NvJ7}S z*S1z*ahfJ}=jO?YA>)F*AcyRQ^dY0wiQS>g#s%-H))r#Oux?bUBrnZWy%mbjZCiG4 zzMU?D{YCJB7&iJ%C7c{M+0I61P0*`>cj#!-KQRRazfQ1tnTN45PZAhsnK8;TBgf5$ zM??u06ci*Fp|@+HAx30|@6M1KePu+hL1maM6F!yHQw)*5IPd@gyvy|fgZ@UgtV7f3;tB=|bq5>h=XmP;l`lOEClch@eEHDibQ|43>Mks`w(WV?Ti zkRuX=q=jWhhTt`V{eoDR;@ZCEz|(3j+NDtNm|$xulVY1CBRS>eMMYk(7b_f+efHvJ zz!XQ;!VTgn32K$91~CW*nNXpT(<4N3@E@4!_L97nGu5LFtiuYgbO$iPd zmCn;drnY?re@gH=A``_X1%V#)NsdX9VC=BHI*uk5#&Y_NwWi-9!3zc3)|Z%hTi@ET z=@YP~wKeKn3LD)5;j>!1Wr#^HBz`}_e?`Bf zmQyv`9E{^#)vCuI@RS9@B{EjaHD4g;ndOon6WpS9kAo{lxx3&u$WgwbQxdLjF;$SjvvC8~|0=aJG2mTb;%m}M zqAoRaf?Si`Lu?9B(*f%;3`|+JL*ir$)Txd@jYP0KF9}rLQe`gB;bq=aTWk$7Wb5cV zU|iqPtG3uRz>!GDq&npA5E;XzcieVf%QW^DdKnpKxz#pAonbDK78b8*1;3X|_FuYE zwPzZfUpgGzkp~_iCvCUs)v&cfo?Epgj#&kDA49jZYG;vWbhh+z@=f-%)o5naq zGO(${zKWWVY9TiQ8_mYIH%q6T)*zUK;k6A^3ihoo$Kge5JYKZPk~AKW7vGswSzVEk z{?iBzX;N21zYZM_l|j-YW!xIfaWk9Dru9&RH5R#H!Pd*UxxQmS)kaP`jpXH(mN8aZ=57G?qhVx|{a8xYV+3*oA`iH^XKQxp zJgq#Opz_irDo4KlM#t(-=~lf!PScnF51ggsBA~xa1WbH(HJlv7zbT*`Oc3cZKqUXj z!GY<*hYcP)`2Cx2zS)>JZ{GRJ%1VR6{Q2_@_`!_@3l_+CJYV?HkA7sp5qbcBWGR{9BoanzWQp@>#x5q)94vx&cLZ?z=0UE;1DhZ zha)Wv=Nmcb&XRNO-FM$LC_ZrDfP5xL89DGM9qpWb=%I(msi>na(Su;nVw0SKKYiqp zM+`Uwo5-PQJ0!``X}?n%JyV${pL~*>fe)fCIot>ah1@P(x`=h_){!%`=}&+9lXPa1 z!<3#W(DUZan`M9#vk49`W59p`51}p=+zB{v5Z0jIRKMw^mtK;N+TFW%8}4Uv-qJg8 zY$8YIph1IRqbI}Z-o1MbwTH4z`}XaV&R=o>Qy|Bw9g_nU@MYh>``z!R!GRO7hG+p8 zP2`~b;DZkgqAkVl=R=1M5zHpSZRpUUX>j0dtf79OZWB3Lj~+ehgik*C#GpWF6r&yD z0RyYsG&sF_^{S!%eER99P2^-H$0#{mDUegr4)jiCh#!Ux8`dlw%7er9ES#+u$XVJ_ zKs#rtuW;bI;Yi0HoYG6k=?oZOlcTkzKgt9AuL%yE(!arYk&}{mhxoBWc6Rpdm^ZJl zS+nNE6Hh#G0(^D~4&$_dyp!P96F#5s034@&)TIqga!6+&5HDSeuo&UD2#+B=(L$iS zH3-WPCL%!jNL&y}yl6vUJm&pu1O=h2g+O_?p)Aey{s?UlI0F4qOmmGK-rW&;B9L>r zxj=bThUn57f%*eCDnJm0IN|sI%UMcGR496>HJk-#j{;>E_h?M<~hAv4hb zgt8Uv^?#PS6>LRPo8KzjZx!yh3YQcLh1_oy?zajTeDJNpO;@<7nnSQ(U4qKJq*`f8 z_fl#lsomx)q$=KDwy1bzS8TZ9^qO{3s&!5PVY%9r{S(aAEf_eMJM;7 zI%)CTCE66{IoI6_>z-SS#&*Gr1^V@GwtRs#in zc8Q*Fw&#$ON3e%2*Mi{BvqCC}?bfC&YaGgZZI%>Gl+GhLA z)kH_Z{wOl8glSE`DNT?EqwfV?lUHQ!=m~z=csLVpr30k2oi=Nt5?rMDhj^+h6Ap4X z1n0|B%9hU`zH`g%G|OWiJ@teFW$+D6Q@oz(rJh*@p6NCu4|ZeWkt0vLr%J6r3kB1I zb3K!3pIDxm_P|pEXhE&4x^V*vNk}1VCj=|8FM@<=Q)bfkjc1r=7JQ%n5H?RVU^i9s zs{W8#;F%=%y#nRoMM_Y0Hy1+3=E5)L4{J)Oz*7RhX}PixzZK-yR7?mssOv!q^4_Sl zji4eSh)nDl1YMh)f<2zhcZnhGG+OW*r3dZCPASxOyKRP*s+Cnhuu2Wit@g`}pgjnP#4oP>9Ef z)Jfajf<5J?by6P%`?qiGWowJKLnY)CtyHuSPGgh@f|b^(fg!|WpnO^N+z_}A`wVg) zt`ZLm)nJHxg+n~pqqDdL!=iyo^TOe((ZhzBXXpWKu3F$%!^6PabcrA|Y;nN9cvuq0 zY;yNP9z~TW7U{@zuU8Ti76%;j5@%%9Fb+K9sC6kGaKB&*oPVoV_oO=ps;6Y)WH@@k z?qvZb==0FM2CQ;cukKT<&YJ0&Ic4%>&%$d8u5Px>a9L)O->X!G;42NQK1_&ExYQfe zs=}Uy!wU+Vt=1JsrnL&yuT-j`64~rbyVYJ6Qd1_(Osfj#`Nx7zK}7JMWF5sROqrkv z?J*5{{r5G@+>kJLzVa+lRG@kNAt`^cnWAa1En=HEx}7XlhhBnIrESc=I$KwQ?Qls_ z*X9)+k|uEv^fPV{9B0+c*c8;Xzba3pnu2d8CN)u0@Uts%IYUdF%JpVrkGnwderD~O ztKl2LSaoSm+|rgUcKS?^G2oI#OadZ49OaQLf(azDnaKQn6W=2EM}m*1ac_gkr$1d?pT!LP|kWkjzERzut-an4rnXyAA{Ydl(uaf9}k4mfJWMfs>>>I2O_cW zhl@PeQ55W5^qdiuJK(m2gy2=J>k?q4e-wuf)4kYOfSRz$2Ecq?tfi|e*ow8=AP&fz zW{KIE)o`u+^C**#$*tnzP%>I~wS<;DSPyE*S?szw(%$YI?ZGxfWt%N9Z2I;_a9o_8 z5**iRl8=r#5U;g1yM0XZTI-2wsGRPkP{VvlOK7>P7M&SQ;`^sM4$pR^Cggkd4D`R{4c3mKW?(cW*nCVl&M;x=%ln%+uniBnTT4{ znU)wyuwxjcy@>&8PlHXTWH39c=>7$5staaFTsT~_f_;_>>|M+FJZ8=oD)rmu%hV@I z0RL>gIAp9IYSahz*8`3Eu)%tpqx$?}9qQ_jbkE7UN+M6p2;SZ?;xC7~sqv6v ztAP>E+h4?p$AuBoszQHo2q~d|c)m;j*q4Un4IR>LPGglfX-7re_wtV*Z(j$;J>H&Q?NP3dWxRmsPvSe06^ajge8C?S)=xQK?MPl`Mz1Y=y9 zX6D%;Nf>DW2Ow2pOUSKk+k_kf3l3JQ9|vt=KFj&xqmx~LiZ#nnYvnt1T!Clcq)@2E zqd?NYC2N!Ru7Qdl)?Tuj8e}51kdVL%z{JYy96YiP^jJJe)-TY(^)EW*lZFgz;Ds=m zfOmmhvp`))OP^+*$=9(ocfaE<~2Be@XWzs0&8=(GaKqz*M5|cH-x6i$qjoJJs zgv|(B$WCa` zddw>PUx9E!${wC2IHkNT^@MrACri%K#LVyW4c0|$V{Dav^a!BrBPifqY81VF`JL_= zBEu(mm0(X`;ZSqxYH4QiStJv1ugo-$9FrGGg?au^48<;kgxn%GX<7~Cl7>X@CfCxi&~$Qj`%KY%pb3LG<)Miywm z@>``pPgLKv3WUitiG4tliJhYn=zCP}Mb3$1$VK#)nMK|blse%O!s?02`fZSjq6UFEa|%zV3Bt4W`kk}& z;;H)Pdc8Bj{rOUTX#)Ta!1@8NKnqOI&dSd6fk@Xk)$2QV>8FnBW5*x|Gkt}=n~-=A z)!2K29YC~vsf9$YNdgrHV#q`U%QJw?qqd%2lXR6^&x}x31jP2WEFy*5&_Fs6hobr zNW*zW^Qa;%|Ar%#=hN8RsYn@tcPx#a3z^r%^fP8sq9Q?C-b^BA80FTEL7<1+u)jyO zHl;u>jOnwfkUT^=6)vfmeiZN4mFSp$Jzl`a*6l|CcpM41Ched{K-UojyO8WuKcwW$ zf^MN@8akPUch|=OC@BZ1;_9lt3UMASx33C$rZ2)V;Fx~9*#?PAI?)J-1Cin;%7~cW z21%f%g9ywFpmKtsf@Bj+5KeAPpOp+05OyQQjrL%?6O!^~sszWg37qWFP^x|-rl>QZ zB}hp=ej3yFyFsFf?q(SWjY7ccj5K#&z8}+{MiPi>cNi7H?MQQmVLM*TtLQO(NlJat z5I$HWCh-QU;?IK42ug)l;_rpwB2^s@F#ARwKu?>3`spx>?bfdKOZg}X@F1$OG z`+F)F3H-j4D$7#dhu}SB*q0&+oiL{ln&myrG7j?t@F^3FHN^mQ`9k-Z^>6S1x>GM5Q6?~N7 zKS0zDg;NKA1=4_%NpgU^!z^Qy6Dh>fz*5ew0JzYbG8C|TES?6dF`Qi5s z1OhNef`3-vsX}Dp3Xmz$XP<6K}@hl~_l8#+h>N!en z8zP@Tcw9w=E9X;L-dmw6L09T=2^za9xH;yucS0rxRd*t9Ly2ud^8$-Vh`UPfBL#GM zAc#+XOb+6c3m6}4(gc0u$^zA4slZ%?KUf7?WzW-msw?r&1iCHl-QYGx*q!ql74JsH zr-$dMLGn6TAI-rjb_d_XvQ)L7%AwO~r6Q3oauDE~g4e@627*7ld6nQKo?H7sw7F>B zg!`hMp0gP1KQhIf=H51~ldhG@0`(^K?s0zKbf@zcRxfUrEJa34D{PG6Gb=8r#N@eT zDysOl3fWc?GF2G~^9Y%3$&$6)x>l?E0gr%rEAY`Ar|Y}T)Vz?gP@OPO@y}IlvRKea z=y#;Mcj4+P8a7KLSU}ej-8*AziMBcDgFs5SI;bs4z{i5aBu*}kyX7EFLYM56ypX(v z>PFaXp3!`5OYUZO9&z*z6KuXjZE|%*1$Gov)$eqSOiDQ_?PUpjN7F^!k)~9(J2wrD zBzI0OF==2sN}5scF;b=IhYL!fNx-zRNAi`Z+ClO8W(G=dSX@ zqezr@E0f=^DFkXb?TsxWORzhmJqqS`qTGm<%aJ>-ctxxu3SJa;fhc0{}rI;2KX$X!$p-w0y1%xb;3T84&F%y6)4~nbnpx{mtaH-bNGn8IsjVq|q-JvXZsZn1+RQ1H`?63-3Fd_mlEx%a%v}+3 zvYGU?o7YDHuAL=C%SG-N(;AA~(W_5ssl%L#6$$s7z z9hk}HfF|phIxD}7KDGvJFf$;v62RjMa~-@=k&Ge@@rQ8?gg-u5@VnwmaL*|IoZzeD zg2Ul-5}On7T14U^BNtzyi8l!T6XXmP>}f=Y1@DOhuolYk)+pGT_$g=vB%KJy$6`?% z?=Sd5ysi-Z&Ugv7`2hzPU;iDYvjjVcx6XpEK>;+i91)yGbCCCm;7bto!KKW2yFmyg+>}_|H*s-{|;m!S0XWA^3EZfIO*3^o8I*MdpLJD2cas z1n-3CW5E|AdROqy$b0XnakzDcBLTAbmx#Iu_6*XO*(H!Ka|qV;&^HS8y+)FS{Y(Q^Efw zo+tSC@toNKsRx$g=Ugs+9v198BKQ-|A%aUr#LERQMM3=UitvYf;%l*Agyy;m{!kpA zWkBbJg8drNR*)|aSK;^KXn!RVvgZQIO2Jh`a7+9h(eY3mj)rPH!9j5r(Xn>%UV>Mm zG`l=LS@6k7dky0i-!ItC_;$e+B;Y^M7=Dbe5y4CI3q+s(7-+zovjWe1e}EsjHZCBl z7koaVx8U!NuNRyU*)G^`;(r%>1k&#l+!yx>{zIgn$K@nMJ>Y4Luj2751rOl$W%%+C zJq1eg7X%|-$svgFur;Ac+?FO4q~oJe4d zif<9THhxC%YmoH@zEz0mY2vVxf-ggf)1U}{A7hUQc!JycX~FMBv`4U)5Ml7|i(@wa zCJsq95zSmC_#>!@-H)&Eh6~K=Pznu*cu4Rc$L|#UW~65d{;zS|d#ykw=>7m|{7mrM z;&A)jf^2xX?n6>k@CA75AUF*pM!zNwTcZj|sJb?ek6F!*!&SWsnST?!CJshDgy%Og z2JvBn2La;ef|tcR3qBU`B8^2R2^EK VKV|%cfH$B_#?5VYQGh<7_}~5X9)AD; diff --git a/hw/darwin/bundle/Portuguese.lproj/Makefile.am b/hw/darwin/bundle/Portuguese.lproj/Makefile.am deleted file mode 100644 index 540649c7a..000000000 --- a/hw/darwin/bundle/Portuguese.lproj/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Portugueselprojdir = $(resourcesdir)/Portuguese.lproj - -Portugueselproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings - -Portugueselprojnibdir = $(Portugueselprojdir)/MainMenu.nib -Portugueselprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index 6800171d9..000000000 --- a/hw/darwin/bundle/Portuguese.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,209 +0,0 @@ - -XDarwin Help - - -
- -

XDarwin X Server para Mac OS X

- X_VENDOR_NAME X_VERSION
- Release Date: X_REL_DATE -
-

Índice

-
    -
  1. Notas importantes
  2. -
  3. Uso
  4. -
  5. Ajustando seu Path
  6. - -
  7. Preferências do usuário
  8. -
  9. Licença
  10. -
-
-

Notas importantes

-
-
-#if PRE_RELEASE - Essa é uma versão pré-lancamento - do XDarwin, e ela não é suportada de nenhuma forma. Bugs podem - ser reportados e correções podem ser enviadas para Página - do projeto XonX no SourceForge. Antes de informar bugs em versões - pré-lancamento, por favor verifique a þltima versão em XonX - or X_VENDOR_LINK. -#else -Se o servidor é mais velho que 6-12 semanas, ou seu hardware é - mais novo que a data acima, procure por uma nova versão antes de informar - problemas. Bugs podem ser reportados e correções podem ser enviadas - para a Página do projeto - XonX na SourceForge. -#endif -
-
Este software é distribuído sob os termos da licença - MIT X11 / X Consortium e é provido, sem nenhuma garantia. Por favor - leia a Licença antes de começar a usar - o programa.
- -

Uso

-

O XDarwin é uma X server "open-source" livremente - redistribuída do Sistema X Window. This version of XDarwin was produced by the X_VENDOR_LINK. - XDarwin roda sobre Mac OS X no modo Tela Cheia ou no modo Compartilhado.

-

No modo Tela Cheia, quando o sistema X window está ativo, ele ocupa - a tela toda. Você pode voltar ao desktop do Mac OS X clicando Command-Option-A. - Essa combinação de teclas pode ser mudada nas preferências. - Pelo desktop Mac OS X, clique no ícone XDarwin no Dock para voltar ao - sistema X window. (Você pode mudar esse comportamento nas preferências - daí você deverá clicar no ícone XDarwin na janela - flutuante que aparecerá.)

-

No modo Compartilhado, o sistema X window e Aqua dividem a mesma tela. A janela - raiz da tela X11 está do tamanho da tela (monitor) e contém todas - as outras janelas. A janela raiz do X11 no modo compartilhado não é - mostrada pois o Aqua controla o fundo de tela.

-

Emulação de Mouse Multi-Botões

-

Muitas aplicações X11 insistem em usar um mouse de 3 botões. - Você pode emular um mouse de 3 botões com um simples botão, - mantendo pressionando teclas modificadoras enquanto você clica no botão - do mouse. Isto é controlado pela configuração da "Emulação - de Mouse Multi-Botões" da preferência "Geral". Por - padrão, a emulação está habilitada e mantendo pressionada - a tecla Command e clicando no botão do mouse ele simulará o clique - no segundo botão do mouse. Mantendo pressionada a tecla Option e clicando - no botão do mouse ele simulará o terceiro botão. Você - pode mudar a combinação de teclas modificadoras para emular os - botões dois e três nas preferências. Nota, se a tecla modificadora - foi mapeada para alguma outra tecla no xmodmap, você ainda terá - que usar a tecla atual especificada nas preferências para a emulação - do mouse multi-botões.

-

Ajustando seu Path

-

Seu path é a lista de diretórios a serem procurados por arquivos - executáveis. O comando X11 está localizado em /usr/X11R6/bin, - que precisa ser adicionado ao seu path. XDarwin faz isso para você por - padrão e pode-se também adicionar diretórios onde você - instalou aplicações de linha de comando.

-

Usuários experientes já terão configurado corretamente - seu path usando arquivos de inicialização de seu shell. Neste - caso, você pode informar o XDarwin para não modificar seu path - nas preferências. O XDarwin inicia o cliente inicial X11 no shell padrão - do usuário corrente. (Um shell alternativo pode ser também expecificado - nas preferências.) O modo para ajustar o path depende do shell que você - está usando. Isto é descrito na man page do seu shell.

-

Você pode também querer adicionar as man pages do X11 para - a lista de páginas a serem procuradas quando você está procurando - por documentação. As man pages do X11 estão localizadas - em /usr/X11R6/man e a variável de ambiente MANPATH - contém a lista de diretórios a buscar.

-

Preferências do Usuário

-

Várias opções podem ser ajustadas nas preferências - do usuário, acessível pelo item "Preferências..." - no menu "XDarwin". As opções listadas como opções - de inicialização, não terão efeito até você - reiniciar o XDarwin. Todas as outras opções terão efeito - imediatamente. Várias das opções estão descritas - abaixo:

-

Geral

-
    -
  • Usar o Beep do Sistema para o X11: Quando habilitado som de alerta - padrão do Mac OS X será usado como alerta no X11. Quando desabilitado - (padrão) um tom simples será usado.
  • -
  • Permitir o X11 mudar a aceleração do mouse: Por implementação - padrão no sistema X window, o gerenciador de janelas pode mudar a aceleração - do mouse. Isso pode gerar uma confusão pois a aceleração - do mouse pode ser ajustada diferentemente nas preferências do Mac OS - X e nas preferências do X window. Por padrão, o X11 não - está habilitado a mudar a aceleração do mouse para evitar - este problema.
  • -
  • Emulação de Mouse de Multi-Botões: Esta opção - está escrita acima em Uso. Quando a emulação - está habilitada as teclas modificadoras selecionadas tem que estar - pressionadas quando o botão do mouse for pressionado, para emular o - segundo e terceiro botões.
  • -
-

Inicial

-
    -
  • Modo Padrão: Se o usuário não indicar qual modo - de exibição quer usar (Tela Cheia ou Compartilhado) o modo especificado - aqui será usado .
  • -
  • Mostrar o painel de escolha na inicialização: Por - padrão, uma painel é mostrado quando o XDarwin é - iniciado para permitir que o usuário escolha ente o modo tela cheia - ou modo compartilhado. Se esta opção estiver desligada, o modo - padrão será inicializado automaticamente.
  • -
  • Número do Monitor X11: O X11 permite ser administrado em multiplos - monitores por servidores X separados num mesmo computador. O usuário - pode indicar o número do monitor para o XDarwin usar se mais de um - servidor X se estiver rodando simultaneamente.
  • -
  • Habilitar suporte a múltiplos monitores pelo Xinerama: o XDarwin - suporta múltiplos monitores com o Xinerama, que trata todos os monitores - como parte de uma grande e retangular tela. Você pode desabilitar o - Xinerama com está opção, mas normalmente o XDarwin não - controla múltiplos monitores corretamente sem está opção. - Se você só tiver um monotor, Xinerama é automaticamente - desabilitado.
  • -
  • Arquivo de Mapa de Teclado: O mapa de teclado é lido na inicialização - e traduzido para um mapa de teclado X11. Arquivos de mapa de teclado, estão - disponíveis numa grande variedade de línguas e são encontradas - em /System/Library/Keyboards.
  • -
  • Iniciando Clientes X11 primeiro: Quando o XDrawin é inicializado - pelo Finder, ele irá rodar o xinit para abrir o controlador - X window e outros clientes X. (Veja o manual "man xinit" para - mais informações.) Antes do XDarwin rodar o xinit - ele irá adicionar específicos diretórios a seu path. - Por padrão somente o /usr/X11R6/bin é adicionado. - separado por um ponto-e-vírgula. Os clientes X são inicializados - no shell padrão do usuário e os arquivos de inicialização - do shell serão lidos. Se desejado, um shell alternativo pode ser especificado.
  • -
-

Tela Cheia

-
    -
  • Botão de Combinação de Teclas: Clique no botão - e pressione qualquer quantidade de teclas modificadoras seguidas por uma tecla - padrão para modificar a combinação quando se quer mudar - entre o Aqua e X11.
  • -
  • Clique no Ícone no Dock para mudar para o X11: Habilitando - esta opção você irá ativar a mudança para - o X11 clicando no ícone do XDarwin no Dock. Em algumas versões - do Mac OS X, mudando pelo clique no Dock pode causar o desaparecimento do - cursor quando retornar ao Aqua.
  • -
  • Mostrar a Ajuda na inicialização: Isto irá mostrar - uma tela introdutória quando o XDarwin for inicializado no modo Tela - Cheia.
  • -
  • Profundidade de Cores em bits: No modo Tela Cheia, a tela do X11 - pode usar uma profundiadde de cor diferente da usada no Aqua. Se a opção - "Atual" está especificada, a profundidade usada pelo Aqua - quando o XDarwin iniciar será a mesma. Além das opções - 8, 15 ou 24 bits que podem ser especificadas.
  • -
- -

Licença

-

A licença - principal nós por XDarwin baseada na licença tradicional MIT X11 - / X Consortium, que não impõe nenhuma condição sobre - modificações ou redistribuição do código-fonte - ou dos binários desde que o copyright/licença sejam mantidos intactos. - Para mais informações e notícias adicionais de copyright/licensing - em algumas seção do código, por favor refer to the source code.

-

Licença do X Consortium

-

Copyright (C) 1996 X Consortium

-

Permissões são em virtude garantidas, livre de mudanças, - para qualquer pessoa que possua uma cópia deste software e aos arquivos - de documentação associada (o "Software"), para lidar - com o software sem restrições, incluindo limitações - dos direitos de uso, cópia, modificação, inclusão, - publicação, distribuição, sub licença, e/ou - venda de cópias deste Software, e permitir pessoas to whom o Software - é fornecido para ser desta forma, verifique as seguintes condições:

-

O nota de copyright abaixo e a permissão deverão ser incluídas - em todas as cópias ou substanciais porções do Software.

-

O SOFTWARE 'E PROVIDO "COMO TAL", SEM GARANTIAS DE NENHUM TIPO, EXPLICITA - OU IMPLICITA, INCLUINDO MAS NÃO LIMITADO NOS AVISOS DE COMÉRCIO, - TAMANHO OU PARA PROPOSTAS PARTICULARES E NÃO INFRAÇÃO. - EM NENHUM ACONTECIMENTO O X CONSORTIUM SERÁ RESPONSAVÉL POR NENHUMA - RECLAMAÇÃO, DANOS OU OUTRAS RESPONSABILIDADES, SE NUMA AÇÃO - DE CONTRATO, OU OUTRA COISA, SURGINDO DE, FORA DE OU EM CONEXÃO COM O - SOFTWARE OU O USO OU OUTRO MODO DE LIDAR COM O SOFTWARE.

-

Exceto o contido nesta nota, o nome do X Consortium não pode ser usado - em propagandas ou outra forma de promoção de vendas, uso ou outro - modo de lidar com este Software sem ter recebido uma autorização - escrita pelo X Consortium.

-

O Sistema X Window é marca registrada do X Consortium, Inc.

- - - diff --git a/hw/darwin/bundle/Spanish.lproj/Credits.rtf b/hw/darwin/bundle/Spanish.lproj/Credits.rtf deleted file mode 100644 index 34408e78c..000000000 --- a/hw/darwin/bundle/Spanish.lproj/Credits.rtf +++ /dev/null @@ -1,168 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5160\viewh6300\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Spanish localization -\f0\i0 \ -Paul Edens\ - -\f2\i Dutch localization -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Korean localization -\f0\i0 \ -Mario Klebsch\ - -\f2\i Non-US keyboard support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i German localization -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Swedish localization -\f0\i0 \ -Greg Parker\ - -\f2\i Rootless support -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -Olivier Verdier\ - -\f2\i French localization -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Installer -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Cocoa version of XDarwin front end -\f0\i0 \ -Greg Parker\ - -\f2\i Original Quartz implementation -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Dynamic shared libraries -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i XDarwin icon -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 History: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Original XFree86 port to Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i XFree86 4.0 port to Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/Spanish.lproj/Localizable.strings b/hw/darwin/bundle/Spanish.lproj/Localizable.strings deleted file mode 100644 index 5bf813f1ff88b2a756ed1d07a23016b26d049a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1480 zcma)+-EPxB5QXQOr?8@4RWxo2DiDMalyC*2sG#=Nv7Iy}O@iYP%FFdx`Xa!0cC+10 zReogIyF0&U&W!ixFUxJ$GCQ$_6*jYpE$y81)aF(qnIidNwN=Qzu{P)@=w_@L>xl2t zTI3UCV<%nl^&UgJLf;axW_?e*lJx`GGCSiP;ip(F`fS!ZrtIZnU24)}_; za~D_*vAMwGU$})b}sf{x#N4}xGTY)PD(0`F;c1in{5yW{*EoIAe9w|s1)@*G4w$FN+3Rrjga XMLa?0Z(K2|+e>q#Ni1PW=t1}!`yKJY diff --git a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 77f345a4e..000000000 --- a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,72 +0,0 @@ -{ - IBClasses = ( - { - ACTIONS = {showHelp = id; }; - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; - CLASS = Preferences; - LANGUAGE = ObjC; - OUTLETS = { - addToPathButton = id; - addToPathField = id; - button2ModifiersMatrix = id; - button3ModifiersMatrix = id; - depthButton = id; - displayField = id; - dockSwitchButton = id; - fakeButton = id; - keymapFileField = id; - modeMatrix = id; - modeWindowButton = id; - mouseAccelChangeButton = id; - startupHelpButton = id; - switchKeyButton = id; - systemBeepButton = id; - useDefaultShellMatrix = id; - useOtherShellField = id; - useXineramaButton = id; - window = id; - }; - SUPERCLASS = NSObject; - }, - { - CLASS = XApplication; - LANGUAGE = ObjC; - OUTLETS = {preferences = id; xserver = id; }; - SUPERCLASS = NSApplication; - }, - { - ACTIONS = { - bringAllToFront = id; - closeHelpAndShow = id; - itemSelected = id; - nextWindow = id; - previousWindow = id; - showAction = id; - showSwitchPanel = id; - startFullScreen = id; - startRootless = id; - }; - CLASS = XServer; - LANGUAGE = ObjC; - OUTLETS = { - dockMenu = NSMenu; - helpWindow = NSWindow; - modeWindow = NSWindow; - startFullScreenButton = NSButton; - startRootlessButton = NSButton; - startupHelpButton = NSButton; - startupModeButton = NSButton; - switchWindow = NSPanel; - windowMenu = NSMenu; - windowSeparator = NSMenuItem; - }; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib deleted file mode 100644 index 2df75ee0cf6cbd155982e4ca02485c268be15dc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20952 zcmeHvdwf*Ywg29ElLSb@OTg+N{UIO*0@hN{HawM!JOfIr)t=0pBm)`q6?Q5iGt+Eh?`Aq7{`&tN1AL3x;#QYoEuQnIvL+fA^33 z`8cr8K4(AHUVH7e*IIk+y^~cCT~(+0BGIs_)QZewFGkpH25>A*6&Z&v21IIOHT6G2*|T)m1>nL^)>ODR-<~C)hgj-i9|fMUV8{R zs7#%h<6o)zDxykMMHYyIe+h}sTIxaWLN(d`k5bxyF#bqt`Nr*xQ5}|ObK~hQ*P4W! zGc8o-C)%K6-meBsK(pto)mG_-vzN}98UmHWJtIQ&mK`jrPy?#hi}6*$o@mGyk_ah1 zH324&)qs6ijx4ZW*;C=wT5Qc4LcUjp8gB5Tkw_x8ww1|oxdEIeQ`HC!Lm~l`tm1{U zf>oh#t>X3Xcrr*e3W#j&vf<(>;0CYa@u{9A)0OZFe=yNzbA+4HvVt6uwjM{r0or$d zSglgSYS8OfBBiCJUrD$2wPyjl-Ng1RrJTl#W<4~UGQuJ{u&WnaY z+Ozkw_nZ(!g*DJ;tMIk)uTTR1uzNrV|K&a5PlI2G!6(V0nj^oKZB55L)+bV5Sqr|H z;w9NLNlwgX6C`{fqNdhIqoE*VNG}M0P!PQjjFKYgYQMSyZv}HJAQ9>$RT;$7L6T4? zyGW^|5?S~@*c5MNvBGlvs;nOvEwd@Mzv)P8Vsy! zueY3Wv>q$8QJJO&0zZ)7CcgAtEHR?DDUhyye`6Lu!y5BQMr2X5phL#I*(4hwJ7=O7 z1DadE9m~FU!lm9H=b+ROgfj-aiq$hO^D`e)*cB{{XAtiypzx~RG45rX_$Ia~D-n;Q z5tB~u#Ck;{ekn)G1$%KYZ%j0n8*MZ!y&?XNwVsP+#!obx>2Ef3B|rvP1D;Vd=4Hxn zdjl+iW|;Gki0O36Pov8tM3Q&^Gug|HXfJP?67;G8NTLto@h9XU9)B_orJ;%Vht$Gh zbRo{U;Clt{WXz0BnnNVFvWGD~yy*~?${!>6^Mdc9QWQI5lLNY9c+8QE#d7EE9|qw*eLD7e3m=~_S&n)EaVB|mk-9QE)2{}6 zgAX)yqJzY6#ezo{7c;iFxT(|Zyd7;uB#>|PE~f;2Z7C^<@d!SNSTH80 z`lGcuRnVETEK|z5y|NQf}UwY}KA0vD=eE9HPy?gh*i*r66l`|{= z-NBM@3JVLb8b5ygE7x6jopIZ3w;8Ritulb&jLOPNqpYlKKg!$yIN1p4a3sFKVe;(R zv){PomRpR69(w5XjvYHX|NQ4apLzZD*Nt7fc6DyrwCOa#Lz$z1HQ&O??yHP}Z}DZ9 zUG^}+ShsH7>22G#8Lz(jssT908*jW}?Af!2U>WPzuRs0MpZ?T9+3gt_8RuEBsGo!% z%gxRGekc@rfA#9sMq683=d;f~Yi!@XU557dcH_C{o-?*=* zq`Wg|$Jnr8!{-AB4y;Grz7`C^s}II&+QNkkw-Fq`IP=+OpBWt;9Weh5P?uzy9^FKO8)G@Xt|a0zw}I!iC^a|41v(Ip>^nTEWMM(GOWyB4j-X z$9wL%=ja6&T(BNx7bAEOXuNH{wsC?CU_Z>s$+>ItXg5N=1Hv8B3qBCJ3l-Xj=TKRI;4tMjvA z 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 $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index a79e6f95f..000000000 --- a/hw/darwin/bundle/Spanish.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,109 +0,0 @@ - - -XDarwin Ayuda - - -
-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Fecha de release: X_REL_DATE -
-

Contenido

-
    -
  1. Aviso Importante
  2. -
  3. Modo de uso
  4. -
  5. Configurando su Path
  6. -
  7. Preferencias del Usuario
  8. -
  9. Licencia
  10. -
-
-

Aviso Importante

-
-
-#if PRE_RELEASE -Esta es una versión pre-release de XDarwin, y no tiene ningún soporte. Patches y reportes de error pueden ser enviados a la página del proyecto XonX en SourceForge. Antes de reportar errores en versiones pre-release, por favor verifique la ultima versión en XonX o bien el X_VENDOR_LINK. -#else -Si el server el más antiguo que 6 a 12 meses, o si su hardware es posterior a la fecha indicada más arriba, por favor verifique la última versión antes de reportar problemas. Patches y reportes de error pueden ser enviados a la página del proyecto XonX en SourceForge. -#endif -
-
-Este software es distribuido bajo los términos de la Licencia MIT X11 / X Consortium y es provisto sin garantía alguna y en el estado en que se encuentra. Por favor lea la Licencia antes de utilizarlo.
- -

Modo de uso

-

XDarwin es una X server open-source de distribución libre del X Window System. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin funciona en Mac OS X en modo pantalla completa o en modo rootless (integrado al escritorio).

-

En modo pantalla completa, el X window system toma control total de la pantalla mientras esta activo. Presionando Command-Option-A puede regresar al Escritorio de Mac OS X. Esta combinación de teclas puede cambiarse en las Preferencias de Usuario. Desde el Escritorio de Mac OS X, haga click en ícono de XDarwin en el Dock para volver al X window system. (Puede cambiar esta comportamiento en las Preferencias de Usuario y configurar que XDarwin vuelva al X window system haciendo click en la ventana flotante con el logo X.)

-

En modo rootless, el X window system comparte la pantalla con Aqua. La ventana root de X11 es del tamaño de la pantalla y contiene a todas las demás ventanas. La ventana root de X11 no se muestra en este modo, ya que Aqua maneja el fondo de pantalla.

-

Emulación de mouse multi-botón

-

Muchas aplicaciones X11 requieren del uso de un mouse de 3 botones. Es posible emular un mouse de 3 botones con un mouse de solo un botón presionando teclas modificadoras mientras hace click. Esto es controlado en de la seccion "Emulación mouse" dentro de la sección "General" de las Preferencias del Usuario. Por defecto, la emulación está activa y utiliza la tecla Command para simular el 2do botón y la tecla Option para simlar el 3er botón. La conbinación para simular el 2do y 3er botón pueden ser modificada por cualquier combinación de teclas modificadoras dentro de las Preferencias del Usuario. Tenga en cuenta que aunque las teclas modificadoras hayan sido mapeadas a otras teclas con xmodmap, las teclas configuradas en las Preferencias del Usuario seguirán siendo las utilizadas por la emulación de mouse multi-botón.

- -

Configurando su Path

-

El path es la lista de directorios donde se buscarán los comandos ejecutables. Los comandos de X11 se encuentran en /usr/X11R6/bin, y éste necesita estar dentro de su path. XDarwin hace ésto automáticamente por defecto, y puede además agregar directorios adicionales donde tenga otros comandos de línea.

-

Usuarios experimentados pueden tener su path correctamente configurado mediante los archivos de inicio de su interprete de comandos. En este caso, puede informarle a XDarwin en las Preferencias de Usuario para que no modifique su path. XDarwin arrancará los clientes X11 iniciales usando el intérprete de comandos del usuario, según su configuración de login. Un intérprete de comandos alternativo puede ser especificado en las Preferencias del Usuario. La manera de configurar el path de su intérprete de comandos depende de cual está usando, y es generalmente descripta en las páginas man del mismo.

-

Además, Ud. puede agregar las páginas man de X11 a la lista de páginas que son consultadas. Estas están ubicadas en /usr/X11R6/man y MANPATH es la variable de entorno que contiene los directorios que son consultados.

- -

Preferencias del Usuario

-

Ciertas opciones pueden definirse dentro de "Preferencias...", en el menú de XDarwin. Las opciones dentro de de "Inicio" no surtirán efecto hasta que la aplicación se reinicie. Las restantes opciones surten efecto inmediatamente. Las diferentes opciones se describen a continuación:

-

General

-
    -
  • Usar beep del sistema en X11: Cuando esta opción está activa, el sonido de alerta estándar de Mac OS X se usará como alerta de X11. Cuando está desactivada, un simple tono es utilizado (esta es la opción por defecto).
  • -
  • Permitir que X11 cambie la aceleración del mouse: En una implementación estándard de X11, el window manager puede cambiar la aceleración del mouse. Esto puede llevar a una gran confusión si la aceleración es diferente en XDarwin y en Mac OS X. Por defecto, no se le permite a X11 alterar la aceleración para evitar este inconveniente.
  • -
  • Emulación de mouse multi-botón: Esta opción es descripta más arriba bajo Modo de Uso. Cuando esta emulación está activa los modificadores seleccionados deben ser presionados cuando se hace click para emular el botón 2 o el botón 3.
  • -
-

Inicio

-
    -
  • Modo inicial: Si el usuario no indica si desea utilizar la Pantalla Completa o el modo Rootless, el modo especificado aquí será el usado.
  • -
  • Mostrar panel de selección al inicio: Por defecto, un diálogo permite al usuario elegir entre Pantalla Completa o Rootless al inicio. Si esta opción esta desactivada, XDarwin arrancará utilizando el modo por defecto sin consultar al usuario.
  • -
  • Número de display X11: X11 permite que existan múltiples pantallas manejadas por servidores X11 separados funcionando en una misma computadora. El usuario puede especificar aqui un número entero para indicar el número de pantalla (display) que XDarwin utilizará si más de un servidor X funciona en forma simultánea.
  • -
  • Habilitar soporte Xinerama para múltipes monitores: XDarwin suporta múltiple monitores con Xinerama, que maneja todos los monitores como si fueran parte de una gran pantalla rectangular. Puede deshabilitar Xinerama con esta opción, pero XDarwin no maneja múltiples monitores en forma correcta sin esta opción habilitada. Si tiene solo un monitor, Xinerama es automáticamente deshabilitado.
  • -
  • Archivo de mapa de teclado: Un archivo de mapa de teclas es leído al inicio y es traducido a un keymap X11 (un archivo estándard de X11 para especificar la función de cada tecla). Estos archivos, disponibles para una amplia variedad de lenguajes, pueden encontrarse en /System/Library/Keyboards.
  • -
  • Al iniciar clientes X11: Cuando XDarwin arranca desde el Finder, éste ejecutará xinit para a su vez arrancar el window manager y otros clientes. (Vea en "man xinit" para mayor información). Antes de ejecutar xinit XDarwin agregará los directorios especificados al path del usuario. Por defecto, solo /usr/X11R6/bin es agregado. Otros directorios adicionales puede agregarse separados por dos puntos (:). Los clientes X son ejecutados con el intérprete de comandos del usuario, por lo que los archivos de inicio de éste son leídos. Si se desea, un intérprete de comandos diferente puede ser especificado.
  • -
-

Pantalla Completa

-
    -
  • Botón para definir combinación de teclas: Haga click en este botón y luego presione cualquier combinación de modificadores seguidos de una tecla convencional para definir que combinación usará para intercambiar entre X11 y Aqua.
  • -
  • Click en el ícono del Dock cambia a X11: Habilite esta opción para volver a X11 al hacer click en ícono de XDarwin en el Dock. En algunas versiones de Mac OS X, al volver haciendo click en el Dock puede causar al desaparción del cursor al volver a Aqua.
  • -
  • Mostrar ayuda al inicio: Esta opción habilitada hará que una pantalla inicial de introducción aparezca cuando XDarwin es arrancado en modo Pantalla Completa.
  • -
  • Profundidad de color (bits): En modo Pantalla Completa, el display X11 puede utilizar una profundidad de color diferente de la utilizada por Aqua. Si se especifica "Actual", la misma profundidad de color que Aqua utiliza será adoptada por X11. Al contrario, puede especificar 8, 15, o 24 bits.
  • -
- -

Licencia

-La licencia principal de XDarwin es basada en la Licencia MIT X11 tradicional, que no impone condiciones a la modificación o redistribución del código fuente o de archivos binarios más allá de requerir que los mensajes de Licencia y Copyright se mantengan intactos. Para mayor información y para mensajes adicionales de Licencia y Copyright que cubren algunas secciones del código fuente, por favor consulte the source code. -

Licencia del X Consortium

-

Copyright (C) 1996 X Consortium

-

Se otorga aqui permiso, libre de costo, a toda persona que obtenga una copia de este Software y los archivos de documentación asociados (el "Software"), -para utilizar el Software sin restricciones, incluyendo sin límites los derechos de usar, copiar, modificar, integrar con otros productos, publicar, distribuir, sub-licenciar y/o comercializar copias del Software, y de permitir a las personas que lo reciben para hacer lo propio, sujeto a las siguientes condiciones:

-

El mensaje de Copyright indicado más arriba y este permiso será incluído en todas las copias o porciones sustanciales del Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Excepto lo indicado en este mensaje, el nombre del X Consortium no será utilizado en propaganda o como medio de promoción para la venta, utilización u otros manejos de este Software sin previa autorización escrita del X Consortium.

-

X Window System es una marca registrada de X Consortium, Inc.

-

X Consortium License (English)

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - diff --git a/hw/darwin/bundle/Swedish.lproj/Credits.rtf b/hw/darwin/bundle/Swedish.lproj/Credits.rtf deleted file mode 100644 index 34408e78c..000000000 --- a/hw/darwin/bundle/Swedish.lproj/Credits.rtf +++ /dev/null @@ -1,168 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5160\viewh6300\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Spanish localization -\f0\i0 \ -Paul Edens\ - -\f2\i Dutch localization -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Korean localization -\f0\i0 \ -Mario Klebsch\ - -\f2\i Non-US keyboard support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i German localization -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Swedish localization -\f0\i0 \ -Greg Parker\ - -\f2\i Rootless support -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -Olivier Verdier\ - -\f2\i French localization -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Installer -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Cocoa version of XDarwin front end -\f0\i0 \ -Greg Parker\ - -\f2\i Original Quartz implementation -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Dynamic shared libraries -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i XDarwin icon -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 History: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Original XFree86 port to Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i XFree86 4.0 port to Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/Swedish.lproj/Localizable.strings b/hw/darwin/bundle/Swedish.lproj/Localizable.strings deleted file mode 100644 index 9709e546984181018ef1c651b22ebd732ede3e93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1464 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 diff --git a/hw/darwin/bundle/Swedish.lproj/Makefile.am b/hw/darwin/bundle/Swedish.lproj/Makefile.am deleted file mode 100644 index 3cf542c4a..000000000 --- a/hw/darwin/bundle/Swedish.lproj/Makefile.am +++ /dev/null @@ -1,39 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -Swedishlprojdir = $(resourcesdir)/Swedish.lproj - -Swedishlproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings - -Swedishlprojnibdir = $(Swedishlprojdir)/MainMenu.nib -Swedishlprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index ab940ec3d..000000000 --- a/hw/darwin/bundle/Swedish.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,101 +0,0 @@ - - -XDarwin Help - - -
-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Färdigställt: X_REL_DATE -
-

Innehåll

-
    -
  1. Viktigt!
  2. -
  3. Användande
  4. -
  5. Att ställa in sin sökväg
  6. -
  7. Inställningar
  8. -
  9. Licens
  10. -
-
-

Viktigt!

-
-
-#if PRE_RELEASE -Detta är en testversion av XDarwin, och du kan inte garranteras någon som helst support för den. Buggar och fel kan rapporteras och förslag till fixar kan skickas till XonX-projektets sida på SourceForge. Innan du rapporterar buggar i testversioner, var god pröva den senaste versionen från XonX eller i X_VENDOR_LINK. -#else -Om servern är äldre än 6-12 månader, eller om din hårdvara är nyare än datumet ovan, leta efter en nyare version innan du rapporterar fel. Buggar och fel kan rapporteras och förslag till fixar kan skickas till XonX-projektets sida på SourceForge. -#endif -
-
-Denna programvara distrubueras i enlighet med MIT X11 / X Consortium License och tilhandhålls som den är, helt utan garantier. Var god läs igenom licensdokumentet (engelska) innan du använder programmet.
- -

Användande

-

XDarwin är en fritt spridd X server av X Window-systemet. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin kan köras på Mac OS X i fullskärmsläge eller rotlöst läge.

-

I fullskärmsläge kommer X window-systemet att ta över hela skärmen när det är aktivt. Du kan byta tillbaka till Mac OS Xs skrivbord genom att trycka Kommando-Alt-A. Denna tangentkombination kan ändra i inställningarna. När du är på Mac OS Xs skrivbord kan du klicka på XDarwin-ikonen i dockan för att byta tillbaka till X Window-systemet. (Du kan förändra detta beteende i inställningarna så att du istället måste klicka i det fltande bytesfönstret istället.)

-

I rotlöstläge delar X11 och Aqua på din skärm. Rotfönstret på X11-skärmen är av samma storlek som hela skärmen och innehåller alla andra fönster - det fungerar som bakgrund. I rotlöstläge visas inte detta rotfönster, eftersom Aqua hanterar skrvbordbakgrunden.

- -

Emulering av flerknapparsmus

-

Många X11-program utnyttjar en treknapparsmus. Du kan emulera en treknapparsmus med en knapp genom att hålla ner olika knappar på tangentbordet medan du klickar med musens enda knapp. Denna funktion styrs av inställningarna i "Emulera flerknapparsmus" under fliken "Diverse" i inställningarna. Grundinställningen är att emulationen är aktiv och att ett kommando-klick (Håll ner kommando och klicka) simulerar den andra musknappen. Den tredje musknappen fås genom att hålla ner alt och klicka. Du kan ändra detta till någon annan kombination av de fem tangenterna kommando, alt, kontrol, skift och fn (Powerbook/iBook). Notera att om dessa knappar har flyttats med hjälp av kommandot xmodmap kommer denna förändring inte att påverka vilka knappar som används vid flerknappsemulationen.

- -

Att ställa in sin sökväg

-

Din sökväg är en lista av kataloger som söks igenom när terminalen letar efter kommandon att exekvera. Kommandon som hör till X11 ligger i /usr/X11R6/bin, en katalog som inte ligger i din sökväg från början. XDarwin lägger till denna katalog åt dig, och du kan också lägga till ytterligare kataloger i vilka du lagt program som skall köras från kommandoraden.

-

Mer erfarna användare har antagligen redan ställt in sin sökväg i skalets inställningsfiler. Om detta gäller dig kan ställa in XDarwin så att din sökväg inte modifieras. XDarwin startar de första X11-klienterna i användarens inloggningsskal (Vill du använda ett alternativt skall, kan du specificera detta i inställningarna). Hur du ställer in din sökväg beror på vilket skal du använder. Exakt hur beskrivs i skalets man-sidor.

- -

Utöver detta kan du också vilja lägga till X11s man-sidor (dokumentation) till listan äver sidor som som skall sökas när du vill läsa efter dokumentationen. X11s man-sidor ligger i /usr/X11R6/man och listan äver kataloger att söka bestämms av variabelnMANPATH.

- -

Inställningar

-

I inställningarna finns ett antal alternativ där du kan påverka hur XDarwin beter sig i vissa fall. Inställningarna kommer du till genom att välja "Inställningar..." i menyn "XDarwin". De alternativ som finns under fliken "Starta" träder inte i kraft förrän du startat om programmet. Alla andra alternativ träder i kraft omedelbart. De olika alternativen beskrivs nedan:

-

Diverse

-
    -
  • Använd Mac OS varningsljud i X11: När detta alternativ är valt används Mac OS vanliga varningsljud är X11s varningsljud (bell). När detta alternativ inte är valt (förvalt) används en vanlig ton.
  • -
  • Tillåt X11 att ändra musens acceleration: I ett vanligt X11-system kan fönsterhanteraren ändra musens acceleration. Detta kan vara förvirrande eftersom musens acceleration kan vara olika i Mac OS Xs System Preferences och i fönsterhanteraren i X11. Förvalet är att X11 inte kan ändra musens acceleration för att på detta sätt undvika detta problem.
  • -
  • Emulera flerknapparsmus: Detta beskrivs ovan under Användande. När emulationen är aktiv måste du hålla ner de valda knapparna för att emulera en andra eller tredje musknapp.
  • -
-

Starta

-
    -
  • Förvalt läge: Om användaren inte på annat sätt väljer vilket läge som skall användas kommer alternativet här att användas.
  • -
  • Visa val av skärmläge vid start: Förvalet är att visa ett fönster när XDarwin startar som låter användaren välja mellan fullskärmsläge och rotlöst läge. Om detta alternativ inte är aktivt kommer XDarwin automatiskt att startas i det läge som valts ovan.
  • -
  • Skärmnummer i X11: X11 tillåter att det finns flera skärmar styrda av varsin X-server på en och samma dator. Användaren kan ange vilket nummer XDarwin skall använda om mer än en X-server skall användas samtidigt.
  • -
  • Aktivera Xinerama (stöd för flera skärmar): XDarwin stödjer flera skärmar genom Xinerama, vilket hanterar alla skrämar som delar av en enda stor rektangulär skärm. Du kan använda detta alternativ för att stänga av Xinerama, men för närvarande kan inte XDarwin hantera flera skärmar utan det. Om du bara har en skärm kommer Xinerama automatiskt att deaktiveras.
  • -
  • Fil med tangentbordsuppsättning: En fil som anger tangentbordsuppsättning läses vid start och översätts till en tangentborsuppsättningsfil för X11. Filer med tangentbordsuppsättningar för ett stort antal språk finns i /System/Library/Keyboards.
  • -
  • Startar första X11-klienterna: När X11 startas från Finder kommer det att exekvera filen xinit för att starta fönsterhanteraren i X11 och andra program. (Se "man xinit" för mer information.) Innan XDarwin kör xinit kommer det att lägga till katalogern här till användarens sökväg. Förvalet är att endast lägga till katalogen /usr/X11R6/bin. Ytterligare kataloger kan läggas till - separera dem med kolon. X11-klienterna startas i användarens inloggningsskal så att användarens inställningsfiler i skalet läses. Om så önskas kan de startas i ett annat skal.
  • -
-

Fullskärm

-
    -
  • Tangentkombinationsknappen: Tryck på denna knapp och en tangentkombination för att ändra den tangentkombination som används för att byta mellan X11 och Aqua.
  • -
  • Klick på ikonen i dockan byter till X11: Aktivera detta alternativ för att byta till X11 genom att klicka på ikonen i dockan. I vissa versioner av Mac OS X kommer ett bte på detta sätt att gömma pekaren när du återvänder till Aqua.
  • -
  • Visa fullskärmshjälp vid start: Detta kommer att visa en informationsruta när XDarwin startas i fullskärmsläge.
  • -
  • Färgdjup: I fullskärmsläge kan X11 använda ett annat färgdjup än Aquas. Om du väjer "Nuvarande" kommer X11 att använda det färgdjup som Aqua har just då. Annars kan du välja 8, 15, eller 24 bitare färg.
  • -
- -

Licens (svenska)

-

Den huvudsakliga licens vi använder oss av är baserad på den traditionella MIT X11 / XConsortium-licensen, vilken inte på något sätt begränsar förändringar eller vidarespridning av vare sig källkod eller kompilerad programvara annat än genom att kräva att delarna som rör copyright och licensiering lämnas intakta. För mer information och ytterligare copyright/licensieringsinfromation rörande vissa speciella delar av koden, se the source code.

- -

Licence (english)

-

The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.

- -

X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - diff --git a/hw/darwin/bundle/XDarwin.icns b/hw/darwin/bundle/XDarwin.icns deleted file mode 100644 index 9c560846e6422f3ec6b1c19c5f7705fd77bd128a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69465 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 diff --git a/hw/darwin/bundle/ko.lproj/Credits.rtf b/hw/darwin/bundle/ko.lproj/Credits.rtf deleted file mode 100644 index 34408e78c..000000000 --- a/hw/darwin/bundle/ko.lproj/Credits.rtf +++ /dev/null @@ -1,168 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf102 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique; -} -{\colortbl;\red255\green255\blue255;} -\vieww5160\viewh6300\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Contributors to Xorg Foundation Release: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Kaleb KEITHLEY\ - -\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys. -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\f1\b \cf0 Contributors to XFree86 4.4: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Harper\ - -\f2\i Rootless acceleration and Apple-WM extension -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Additional XonX Contributors to XFree86 4.3: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Fabr\'92cio Luis de Castro\ - -\f2\i Portuguese localization -\f0\i0 \ -Michael Oland\ - -\f2\i New XDarwin icon -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Contributors to XFree86 4.2: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Pablo Di Noto\ - -\f2\i Spanish localization -\f0\i0 \ -Paul Edens\ - -\f2\i Dutch localization -\f0\i0 \ -Kyunghwan Kim\ - -\f2\i Korean localization -\f0\i0 \ -Mario Klebsch\ - -\f2\i Non-US keyboard support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i German localization -\f0\i0 \ -Patrik Montgomery\ - -\f2\i Swedish localization -\f0\i0 \ -Greg Parker\ - -\f2\i Rootless support -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -Olivier Verdier\ - -\f2\i French localization -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Devin Poolman and Zero G Software, Inc.\ - -\f2\i Installer -\f0\i0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f1\b \cf0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc -\cf0 XonX Team Members\ -Contributing to XFree86 4.1: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Rob Braun\ - -\f2\i Darwin x86 support -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Project Lead -\f0\i0 \ -Andreas Monitzer\ - -\f2\i Cocoa version of XDarwin front end -\f0\i0 \ -Greg Parker\ - -\f2\i Original Quartz implementation -\f0\i0 \ -Christoph Pfisterer\ - -\f2\i Dynamic shared libraries -\f0\i0 \ -Toshimitsu Tanaka\ - -\f2\i Japanese localization -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 Special Thanks: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 Tiago Ribeiro\ - -\f2\i XDarwin icon -\f0\i0 \ -\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc - -\f1\b \cf0 History: -\f0\b0 \ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural -\cf0 John Carmack\ - -\f2\i Original XFree86 port to Mac OS X Server -\f0\i0 \ -Dave Zarzycki\ - -\f2\i XFree86 4.0 port to Darwin 1.0 -\f0\i0 \ -Torrey T. Lyons\ - -\f2\i Integration into XFree86 Project for 4.0.2} \ No newline at end of file diff --git a/hw/darwin/bundle/ko.lproj/Localizable.strings b/hw/darwin/bundle/ko.lproj/Localizable.strings deleted file mode 100644 index fb8c77e0d5f68a93c9c5bbb3815f6636dae451fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 zcma)+zi-n}5XWy|Ky2L^tf&hWjhlk_5rh!5WuXXAL3ChoV?5$QuBrboHkk8XkE@j zc8brIHEEeVK9;sDv9FmLBdm+;lBiEPTOMJ+!Bc&TV`^ zIxm+8+Ok|kDx?B3(EcB*-twkx5etc-2c|EcY1G^MJ=wue3sns zUOk|)&&T~&M^oKRu?}|keh`5S-P7;Ce0?WY|J44IH$Ok@cCkB}>YVJI>-0Lubb6Gf zjPay*Sr1aamE$q51yf^Xtb2KF>izxX@b#GYB7RjOv|v#C^9*?l1{@d&Qnsq>bXtZ} zRgg#Ub(0Dv*{AvbVU?edaU7B9Ys~#zCu{zuWEd8}>B=mBfdK5YV9qj6I?Ly~Ma40X p{xfvCvfI%%{}|P3Zk?Z6%EKtCr1lKYeRB^Z&<=Ub@Ju=b&mU-d^o0Nb diff --git a/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib b/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 77f345a4e..000000000 --- a/hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,72 +0,0 @@ -{ - IBClasses = ( - { - ACTIONS = {showHelp = id; }; - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; }; - CLASS = Preferences; - LANGUAGE = ObjC; - OUTLETS = { - addToPathButton = id; - addToPathField = id; - button2ModifiersMatrix = id; - button3ModifiersMatrix = id; - depthButton = id; - displayField = id; - dockSwitchButton = id; - fakeButton = id; - keymapFileField = id; - modeMatrix = id; - modeWindowButton = id; - mouseAccelChangeButton = id; - startupHelpButton = id; - switchKeyButton = id; - systemBeepButton = id; - useDefaultShellMatrix = id; - useOtherShellField = id; - useXineramaButton = id; - window = id; - }; - SUPERCLASS = NSObject; - }, - { - CLASS = XApplication; - LANGUAGE = ObjC; - OUTLETS = {preferences = id; xserver = id; }; - SUPERCLASS = NSApplication; - }, - { - ACTIONS = { - bringAllToFront = id; - closeHelpAndShow = id; - itemSelected = id; - nextWindow = id; - previousWindow = id; - showAction = id; - showSwitchPanel = id; - startFullScreen = id; - startRootless = id; - }; - CLASS = XServer; - LANGUAGE = ObjC; - OUTLETS = { - dockMenu = NSMenu; - helpWindow = NSWindow; - modeWindow = NSWindow; - startFullScreenButton = NSButton; - startRootlessButton = NSButton; - startupHelpButton = NSButton; - startupModeButton = NSButton; - switchWindow = NSPanel; - windowMenu = NSMenu; - windowSeparator = NSMenuItem; - }; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib b/hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib deleted file mode 100644 index 8f9b5e01c5eb6919057b40feafff76af03e639ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21433 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 diff --git a/hw/darwin/bundle/ko.lproj/Makefile.am b/hw/darwin/bundle/ko.lproj/Makefile.am deleted file mode 100644 index a5462ff9f..000000000 --- a/hw/darwin/bundle/ko.lproj/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -BINDIR = ${bindir} -include $(top_srcdir)/cpprules.in -XINITDIR = $(libdir)/X11/xinit -XDEFS = \ - -DX_VERSION="$(PLIST_VERSION_STRING)" \ - -DX_PRE_RELEASE="$(PRE)" \ - -DX_REL_DATE="$(XORG_DATE)" \ - -DX_VENDOR_NAME="$(VENDOR_STRING)" \ - -DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)" - - -resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources - -kolprojdir = $(resourcesdir)/ko.lproj - -kolproj_DATA = \ - XDarwinHelp.html \ - InfoPlist.strings \ - Credits.rtf Localizable.strings - -kolprojnibdir = $(kolprojdir)/MainMenu.nib -kolprojnib_DATA = \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib - -InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' | iconv -t UTF-16 > $@ - -XDarwinHelp.html: XDarwinHelp.html.cpp - $(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@ - -CLEANFILES = XDarwinHelp.html InfoPlist.strings - -EXTRA_DIST = \ - Credits.rtf Localizable.strings \ - Localizable.strings \ - MainMenu.nib/classes.nib \ - MainMenu.nib/objects.nib \ - XDarwinHelp.html.cpp - diff --git a/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp b/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp deleted file mode 100644 index db33670d9..000000000 --- a/hw/darwin/bundle/ko.lproj/XDarwinHelp.html.cpp +++ /dev/null @@ -1,94 +0,0 @@ - - -XDarwin Help - - -
-

XDarwin X Server for Mac OS X

- X_VENDOR_NAME X_VERSION
- Release Date: X_REL_DATE -
-

Contents

-
    -
  1. Important Notice
  2. -
  3. Usage
  4. -
  5. Setting Your Path
  6. -
  7. User Preferences
  8. -
  9. License
  10. -
-
-

Important Notice

-
-
-#if X_PRE_RELEASE -This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the XonX project page at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from XonX or the X_VENDOR_LINK. -#else -If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the XonX project page at SourceForge. -#endif -
-
-This software is distributed under the terms of the MIT X11 / X Consortium License and is provided AS IS, with no warranty. Please read the License before using.
- -

Usage

-

XDarwin is a freely redistributable open-source X server for the X Window System. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.

-

In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)

-

In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.

-

Multi-Button Mouse Emulation

-

Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.

- -

Setting Your Path

-

Your path is the list of directories to be searched for executable commands. The X11 commands are located in /usr/X11R6/bin, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.

-

More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.

-

In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in /usr/X11R6/man and the MANPATH environment variable contains the list of directories to search.

- -

User Preferences

-

A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:

-

General

-
    -
  • Use System beep for X11: When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.
  • -
  • Allow X11 to change mouse acceleration: In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.
  • -
  • Multi-Button Mouse Emulation: This is described above under Usage. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.
  • -
-

Start Up

-
    -
  • Default Mode: If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.
  • -
  • Show mode pick panel on startup: By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.
  • -
  • X11 Display number: X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.
  • -
  • Allow Xinerama multiple monitor support: XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.
  • -
  • Keymapping File: A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in /System/Library/Keyboards.
  • -
  • Starting First X11 Clients: When XDarwin is started from the Finder, it will run xinit to launch the X window manager and other X clients. (See "man xinit" for more information.) Before XDarwin runs xinit it will add the specified directories to the user's path. By default only /usr/X11R6/bin is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.
  • -
-

Full Screen

-
    -
  • Key combination button: Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.
  • -
  • Click on icon in Dock switches to X11: Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.
  • -
  • Show help on startup: This will show an introductory splash screen when XDarwin is started in full screen mode.
  • -
  • Color bit depth: In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.
  • -
- -

License

-The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code. -

X Consortium License

-

Copyright (C) 1996 X Consortium

-

Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE.

-

Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization from -the X Consortium.

-

X Window System is a trademark of X Consortium, Inc.

- - diff --git a/hw/darwin/bundle/startXClients.cpp b/hw/darwin/bundle/startXClients.cpp deleted file mode 100644 index f812dbfd8..000000000 --- a/hw/darwin/bundle/startXClients.cpp +++ /dev/null @@ -1,22 +0,0 @@ -XCOMM!/bin/sh - -XCOMM This script is used by XDarwin to start X clients when XDarwin is -XCOMM launched from the Finder. - -userclientrc=$HOME/.xinitrc -sysclientrc=XINITDIR/xinitrc -clientargs="" - -if [ -f $userclientrc ]; then - clientargs=$userclientrc -else if [ -f $sysclientrc ]; then - clientargs=$sysclientrc -fi -fi - -if [ "x$2" != "x" ]; then - PATH="$PATH:$2" - export PATH -fi - -exec xinit $clientargs -- XBINDIR/XDarwinStartup "$1" -idle diff --git a/hw/darwin/iokit/Makefile.am b/hw/darwin/iokit/Makefile.am deleted file mode 100644 index 77227d77b..000000000 --- a/hw/darwin/iokit/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -noinst_LIBRARIES = libiokit.a - -AM_CFLAGS = @XORG_CFLAGS@ -INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@ -AM_DEFS = -if XQUARTZ -AM_DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server -XQUARTZ_SUBDIRS = bundle quartz -endif -DEFS = @DEFS@ $(AM_DEFS) - -libiokit_a_SOURCES = xfIOKit.c \ - xfIOKitCursor.c \ - xfIOKitStartup.c - -EXTRA_DIST = \ - xfIOKit.h diff --git a/hw/darwin/iokit/xfIOKit.c b/hw/darwin/iokit/xfIOKit.c deleted file mode 100644 index 7f126c7dc..000000000 --- a/hw/darwin/iokit/xfIOKit.c +++ /dev/null @@ -1,774 +0,0 @@ -/************************************************************** - * - * IOKit support for the Darwin X Server - * - * HISTORY: - * Original port to Mac OS X Server by John Carmack - * Port to Darwin 1.0 by Dave Zarzycki - * Significantly rewritten for XFree86 4.0.1 by Torrey Lyons - * - **************************************************************/ -/* - * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ - -#if HAVE_XORG_CONFIG_H -#include -#endif - -#include -#include -#include "os.h" -#include "servermd.h" -#include "inputstr.h" -#include "scrnintstr.h" -#include "mi.h" -#include "mibstore.h" -#include "mipointer.h" -#include "micmap.h" -#include "shadow.h" - -#include -#include -#include -#include -#include -#include - -#include - -#define NO_CFPLUGIN -#include -#include -#include - -// Define this to work around bugs in the display drivers for -// older PowerBook G3's. If the X server starts without this -// #define, you don't need it. -#undef OLD_POWERBOOK_G3 - -#include "darwin.h" -#include "xfIOKit.h" - -// Globals -int xfIOKitScreenIndex = 0; -io_connect_t xfIOKitInputConnect = 0; - -static pthread_t inputThread; -static EvGlobals * evg; -static mach_port_t masterPort; -static mach_port_t notificationPort; -static IONotificationPortRef NotificationPortRef; -static mach_port_t pmNotificationPort; -static io_iterator_t fbIter; - - -/* - * XFIOKitStoreColors - * This is a callback from X to change the hardware colormap - * when using PsuedoColor. - */ -static void XFIOKitStoreColors( - ColormapPtr pmap, - int numEntries, - xColorItem *pdefs) -{ - kern_return_t kr; - int i; - IOColorEntry *newColors; - ScreenPtr pScreen = pmap->pScreen; - XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen); - - assert( newColors = (IOColorEntry *) - xalloc( numEntries*sizeof(IOColorEntry) )); - - // Convert xColorItem values to IOColorEntry - // assume the colormap is PsuedoColor - // as we do not support DirectColor - for (i = 0; i < numEntries; i++) { - newColors[i].index = pdefs[i].pixel; - newColors[i].red = pdefs[i].red; - newColors[i].green = pdefs[i].green; - newColors[i].blue = pdefs[i].blue; - } - - kr = IOFBSetCLUT( iokitScreen->fbService, 0, numEntries, - kSetCLUTByValue, newColors ); - kern_assert( kr ); - - xfree( newColors ); -} - - -/* - * DarwinModeBell - * FIXME - */ -void DarwinModeBell( - int loud, - DeviceIntPtr pDevice, - pointer ctrl, - int fbclass) -{ -} - - -/* - * DarwinModeGiveUp - * Closes the connections to IOKit services - */ -void DarwinModeGiveUp( void ) -{ - int i; - - // we must close the HID System first - // because it is a client of the framebuffer - NXCloseEventStatus( darwinParamConnect ); - IOServiceClose( xfIOKitInputConnect ); - for (i = 0; i < screenInfo.numScreens; i++) { - XFIOKitScreenPtr iokitScreen = - XFIOKIT_SCREEN_PRIV(screenInfo.screens[i]); - IOServiceClose( iokitScreen->fbService ); - } -} - - -/* - * ClearEvent - * Clear an event from the HID System event queue - */ -static void ClearEvent(NXEvent * ep) -{ - static NXEvent nullEvent = {NX_NULLEVENT, {0, 0 }, 0, -1, 0 }; - - *ep = nullEvent; - ep->data.compound.subType = ep->data.compound.misc.L[0] = - ep->data.compound.misc.L[1] = 0; -} - - -/* - * XFIOKitHIDThread - * Read the HID System event queue, translate it to an X event, - * and queue it for processing. - */ -static void *XFIOKitHIDThread(void *unused) -{ - for (;;) { - NXEQElement *oldHead; - mach_msg_return_t kr; - mach_msg_empty_rcv_t msg; - - kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0, - sizeof(msg), notificationPort, 0, MACH_PORT_NULL); - kern_assert(kr); - - while (evg->LLEHead != evg->LLETail) { - NXEvent ev; - xEvent xe; - - // Extract the next event from the kernel queue - oldHead = (NXEQElement*)&evg->lleq[evg->LLEHead]; - ev_lock(&oldHead->sema); - ev = oldHead->event; - ClearEvent(&oldHead->event); - evg->LLEHead = oldHead->next; - ev_unlock(&oldHead->sema); - - memset(&xe, 0, sizeof(xe)); - - // These fields should be filled in for every event - xe.u.keyButtonPointer.rootX = ev.location.x; - xe.u.keyButtonPointer.rootY = ev.location.y; - xe.u.keyButtonPointer.time = GetTimeInMillis(); - - switch( ev.type ) { - case NX_MOUSEMOVED: - xe.u.u.type = MotionNotify; - break; - - case NX_LMOUSEDOWN: - xe.u.u.type = ButtonPress; - xe.u.u.detail = 1; - break; - - case NX_LMOUSEUP: - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 1; - break; - - // A newer kernel generates multi-button events with - // NX_SYSDEFINED. Button 2 isn't handled correctly by - // older kernels anyway. Just let NX_SYSDEFINED events - // handle these. -#if 0 - case NX_RMOUSEDOWN: - xe.u.u.type = ButtonPress; - xe.u.u.detail = 2; - break; - - case NX_RMOUSEUP: - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 2; - break; -#endif - - case NX_KEYDOWN: - xe.u.u.type = KeyPress; - xe.u.u.detail = ev.data.key.keyCode; - break; - - case NX_KEYUP: - xe.u.u.type = KeyRelease; - xe.u.u.detail = ev.data.key.keyCode; - break; - - case NX_FLAGSCHANGED: - xe.u.u.type = kXDarwinUpdateModifiers; - xe.u.clientMessage.u.l.longs0 = ev.flags; - break; - - case NX_SYSDEFINED: - if (ev.data.compound.subType == 7) { - xe.u.u.type = kXDarwinUpdateButtons; - xe.u.clientMessage.u.l.longs0 = - ev.data.compound.misc.L[0]; - xe.u.clientMessage.u.l.longs1 = - ev.data.compound.misc.L[1]; - } else { - continue; - } - break; - - case NX_SCROLLWHEELMOVED: - xe.u.u.type = kXDarwinScrollWheel; - xe.u.clientMessage.u.s.shorts0 = - ev.data.scrollWheel.deltaAxis1; - break; - - default: - continue; - } - - DarwinEQEnqueue(&xe); - } - } - - return NULL; -} - - -/* - * XFIOKitPMThread - * Handle power state notifications - */ -static void *XFIOKitPMThread(void *arg) -{ - ScreenPtr pScreen = (ScreenPtr)arg; - XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen); - - for (;;) { - mach_msg_return_t kr; - mach_msg_empty_rcv_t msg; - - kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0, - sizeof(msg), pmNotificationPort, 0, MACH_PORT_NULL); - kern_assert(kr); - - // display is powering down - if (msg.header.msgh_id == 0) { - IOFBAcknowledgePM( iokitScreen->fbService ); - xf86SetRootClip(pScreen, FALSE); - } - // display just woke up - else if (msg.header.msgh_id == 1) { - xf86SetRootClip(pScreen, TRUE); - } - } - return NULL; -} - - -/* - * SetupFBandHID - * Setup an IOFramebuffer service and connect the HID system to it. - */ -static Bool SetupFBandHID( - int index, - DarwinFramebufferPtr dfb, - XFIOKitScreenPtr iokitScreen) -{ - kern_return_t kr; - io_service_t service; - io_connect_t fbService; - vm_address_t vram; - vm_size_t shmemSize; - int i; - UInt32 numModes; - IODisplayModeInformation modeInfo; - IODisplayModeID displayMode, *allModes; - IOIndex displayDepth; - IOFramebufferInformation fbInfo; - IOPixelInformation pixelInfo; - StdFBShmem_t *cshmem; - - // find and open the IOFrameBuffer service - service = IOIteratorNext(fbIter); - if (service == 0) - return FALSE; - - kr = IOServiceOpen( service, mach_task_self(), - kIOFBServerConnectType, &iokitScreen->fbService ); - IOObjectRelease( service ); - if (kr != KERN_SUCCESS) { - ErrorF("Failed to connect as window server to screen %i.\n", index); - return FALSE; - } - fbService = iokitScreen->fbService; - - // create the slice of shared memory containing cursor state data - kr = IOFBCreateSharedCursor( fbService, - kIOFBCurrentShmemVersion, - 32, 32 ); - if (kr != KERN_SUCCESS) - return FALSE; - - // Register for power management events for the framebuffer's device - kr = IOCreateReceivePort(kOSNotificationMessageID, &pmNotificationPort); - kern_assert(kr); - kr = IOConnectSetNotificationPort( fbService, 0, - pmNotificationPort, 0 ); - if (kr != KERN_SUCCESS) { - ErrorF("Power management registration failed.\n"); - } - - // SET THE SCREEN PARAMETERS - // get the current screen resolution, refresh rate and depth - kr = IOFBGetCurrentDisplayModeAndDepth( fbService, - &displayMode, - &displayDepth ); - if (kr != KERN_SUCCESS) - return FALSE; - - // use the current screen resolution if the user - // only wants to change the refresh rate - if (darwinDesiredRefresh != -1 && darwinDesiredWidth == 0) { - kr = IOFBGetDisplayModeInformation( fbService, - displayMode, - &modeInfo ); - if (kr != KERN_SUCCESS) - return FALSE; - darwinDesiredWidth = modeInfo.nominalWidth; - darwinDesiredHeight = modeInfo.nominalHeight; - } - - // use the current resolution and refresh rate - // if the user doesn't have a preference - if (darwinDesiredWidth == 0) { - - // change the pixel depth if desired - if (darwinDesiredDepth != -1) { - kr = IOFBGetDisplayModeInformation( fbService, - displayMode, - &modeInfo ); - if (kr != KERN_SUCCESS) - return FALSE; - if (modeInfo.maxDepthIndex < darwinDesiredDepth) { - ErrorF("Discarding screen %i:\n", index); - ErrorF("Current screen resolution does not support desired pixel depth.\n"); - return FALSE; - } - - displayDepth = darwinDesiredDepth; - kr = IOFBSetDisplayModeAndDepth( fbService, displayMode, - displayDepth ); - if (kr != KERN_SUCCESS) - return FALSE; - } - - // look for display mode with correct resolution and refresh rate - } else { - - // get an array of all supported display modes - kr = IOFBGetDisplayModeCount( fbService, &numModes ); - if (kr != KERN_SUCCESS) - return FALSE; - assert(allModes = (IODisplayModeID *) - xalloc( numModes * sizeof(IODisplayModeID) )); - kr = IOFBGetDisplayModes( fbService, numModes, allModes ); - if (kr != KERN_SUCCESS) - return FALSE; - - for (i = 0; i < numModes; i++) { - kr = IOFBGetDisplayModeInformation( fbService, allModes[i], - &modeInfo ); - if (kr != KERN_SUCCESS) - return FALSE; - - if (modeInfo.flags & kDisplayModeValidFlag && - modeInfo.nominalWidth == darwinDesiredWidth && - modeInfo.nominalHeight == darwinDesiredHeight) { - - if (darwinDesiredDepth == -1) - darwinDesiredDepth = modeInfo.maxDepthIndex; - if (modeInfo.maxDepthIndex < darwinDesiredDepth) { - ErrorF("Discarding screen %i:\n", index); - ErrorF("Desired screen resolution does not support desired pixel depth.\n"); - return FALSE; - } - - if ((darwinDesiredRefresh == -1 || - (darwinDesiredRefresh << 16) == modeInfo.refreshRate)) { - displayMode = allModes[i]; - displayDepth = darwinDesiredDepth; - kr = IOFBSetDisplayModeAndDepth(fbService, - displayMode, - displayDepth); - if (kr != KERN_SUCCESS) - return FALSE; - break; - } - } - } - - xfree( allModes ); - if (i >= numModes) { - ErrorF("Discarding screen %i:\n", index); - ErrorF("Desired screen resolution or refresh rate is not supported.\n"); - return FALSE; - } - } - - kr = IOFBGetPixelInformation( fbService, displayMode, displayDepth, - kIOFBSystemAperture, &pixelInfo ); - if (kr != KERN_SUCCESS) - return FALSE; - -#ifdef __i386__ - /* x86 in 8bit mode currently needs fixed color map... */ - if (pixelInfo.bitsPerComponent == 8 && - pixelInfo.componentCount == 1) - { - pixelInfo.pixelType = kIOFixedCLUTPixels; - } -#endif - -#ifdef OLD_POWERBOOK_G3 - if (pixelInfo.pixelType == kIOCLUTPixels) - pixelInfo.pixelType = kIOFixedCLUTPixels; -#endif - - kr = IOFBGetFramebufferInformationForAperture( fbService, - kIOFBSystemAperture, - &fbInfo ); - if (kr != KERN_SUCCESS) - return FALSE; - - // FIXME: 1x1 IOFramebuffers are sometimes used to indicate video - // outputs without a monitor connected to them. Since IOKit Xinerama - // does not really work, this often causes problems on PowerBooks. - // For now we explicitly check and ignore these screens. - if (fbInfo.activeWidth <= 1 || fbInfo.activeHeight <= 1) { - ErrorF("Discarding screen %i:\n", index); - ErrorF("Invalid width or height.\n"); - return FALSE; - } - - kr = IOConnectMapMemory( fbService, kIOFBCursorMemory, - mach_task_self(), (vm_address_t *) &cshmem, - &shmemSize, kIOMapAnywhere ); - if (kr != KERN_SUCCESS) - return FALSE; - iokitScreen->cursorShmem = cshmem; - - kr = IOConnectMapMemory( fbService, kIOFBSystemAperture, - mach_task_self(), &vram, &shmemSize, - kIOMapAnywhere ); - if (kr != KERN_SUCCESS) - return FALSE; - - iokitScreen->framebuffer = (void*)vram; - dfb->x = cshmem->screenBounds.minx; - dfb->y = cshmem->screenBounds.miny; - dfb->width = fbInfo.activeWidth; - dfb->height = fbInfo.activeHeight; - dfb->pitch = fbInfo.bytesPerRow; - dfb->bitsPerPixel = fbInfo.bitsPerPixel; - dfb->colorBitsPerPixel = pixelInfo.componentCount * - pixelInfo.bitsPerComponent; - dfb->bitsPerComponent = pixelInfo.bitsPerComponent; - - // allocate shadow framebuffer - iokitScreen->shadowPtr = xalloc(dfb->pitch * dfb->height); - dfb->framebuffer = iokitScreen->shadowPtr; - - // Note: Darwin kIORGBDirectPixels = X TrueColor, not DirectColor - if (pixelInfo.pixelType == kIORGBDirectPixels) { - dfb->colorType = TrueColor; - } else if (pixelInfo.pixelType == kIOCLUTPixels) { - dfb->colorType = PseudoColor; - } else if (pixelInfo.pixelType == kIOFixedCLUTPixels) { - dfb->colorType = StaticColor; - } - - // Inform the HID system that the framebuffer is also connected to it. - kr = IOConnectAddClient( xfIOKitInputConnect, fbService ); - kern_assert( kr ); - - // We have to have added at least one screen - // before we can enable the cursor. - kr = IOHIDSetCursorEnable(xfIOKitInputConnect, TRUE); - kern_assert( kr ); - - return TRUE; -} - - -/* - * DarwinModeAddScreen - * IOKit specific initialization for each screen. - */ -Bool DarwinModeAddScreen( - int index, - ScreenPtr pScreen) -{ - DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen); - XFIOKitScreenPtr iokitScreen; - - // allocate space for private per screen storage - iokitScreen = xalloc(sizeof(XFIOKitScreenRec)); - XFIOKIT_SCREEN_PRIV(pScreen) = iokitScreen; - - // setup hardware framebuffer - iokitScreen->fbService = 0; - if (! SetupFBandHID(index, dfb, iokitScreen)) { - if (iokitScreen->fbService) { - IOServiceClose(iokitScreen->fbService); - } - return FALSE; - } - - return TRUE; -} - - -/* - * XFIOKitShadowUpdate - * Update the damaged regions of the shadow framebuffer on the screen. - */ -static void XFIOKitShadowUpdate(ScreenPtr pScreen, - shadowBufPtr pBuf) -{ - DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen); - XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen); - RegionPtr damage = &pBuf->damage; - int numBox = REGION_NUM_RECTS(damage); - BoxPtr pBox = REGION_RECTS(damage); - int pitch = dfb->pitch; - int bpp = dfb->bitsPerPixel/8; - - // Loop through all the damaged boxes - while (numBox--) { - int width, height, offset; - unsigned char *src, *dst; - - width = (pBox->x2 - pBox->x1) * bpp; - height = pBox->y2 - pBox->y1; - offset = (pBox->y1 * pitch) + (pBox->x1 * bpp); - src = iokitScreen->shadowPtr + offset; - dst = iokitScreen->framebuffer + offset; - - while (height--) { - memcpy(dst, src, width); - dst += pitch; - src += pitch; - } - - // Get the next box - pBox++; - } -} - - -/* - * DarwinModeSetupScreen - * Finalize IOKit specific initialization of each screen. - */ -Bool DarwinModeSetupScreen( - int index, - ScreenPtr pScreen) -{ - DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen); - pthread_t pmThread; - - // initalize cursor support - if (! XFIOKitInitCursor(pScreen)) { - return FALSE; - } - - // initialize shadow framebuffer support - if (! shadowInit(pScreen, XFIOKitShadowUpdate, NULL)) { - ErrorF("Failed to initalize shadow framebuffer for screen %i.\n", - index); - return FALSE; - } - - // initialize colormap handling as needed - if (dfb->colorType == PseudoColor) { - pScreen->StoreColors = XFIOKitStoreColors; - } - - // initialize power manager handling - pthread_create( &pmThread, NULL, XFIOKitPMThread, - (void *) pScreen ); - - return TRUE; -} - - -/* - * DarwinModeInitOutput - * One-time initialization of IOKit output support. - */ -void DarwinModeInitOutput( - int argc, - char **argv) -{ - static unsigned long generation = 0; - kern_return_t kr; - io_iterator_t iter; - io_service_t service; - vm_address_t shmem; - vm_size_t shmemSize; - - ErrorF("Display mode: IOKit\n"); - - // Allocate private storage for each screen's IOKit specific info - if (generation != serverGeneration) { - xfIOKitScreenIndex = AllocateScreenPrivateIndex(); - generation = serverGeneration; - } - - kr = IOMasterPort(bootstrap_port, &masterPort); - kern_assert( kr ); - - // Find and open the HID System Service - // Do this now to be sure the Mac OS X window server is not running. - kr = IOServiceGetMatchingServices( masterPort, - IOServiceMatching( kIOHIDSystemClass ), - &iter ); - kern_assert( kr ); - - assert( service = IOIteratorNext( iter ) ); - - kr = IOServiceOpen( service, mach_task_self(), kIOHIDServerConnectType, - &xfIOKitInputConnect ); - if (kr != KERN_SUCCESS) { - ErrorF("Failed to connect to the HID System as the window server!\n"); -#ifdef DARWIN_WITH_QUARTZ - FatalError("Quit the Mac OS X window server or use the -quartz option.\n"); -#else - FatalError("Make sure you have quit the Mac OS X window server.\n"); -#endif - } - - IOObjectRelease( service ); - IOObjectRelease( iter ); - - // Setup the event queue in memory shared by the kernel and X server - kr = IOHIDCreateSharedMemory( xfIOKitInputConnect, - kIOHIDCurrentShmemVersion ); - kern_assert( kr ); - - kr = IOConnectMapMemory( xfIOKitInputConnect, kIOHIDGlobalMemory, - mach_task_self(), &shmem, &shmemSize, - kIOMapAnywhere ); - kern_assert( kr ); - - evg = (EvGlobals *)(shmem + ((EvOffsets *)shmem)->evGlobalsOffset); - - assert(sizeof(EvGlobals) == evg->structSize); - - NotificationPortRef = IONotificationPortCreate( masterPort ); - - notificationPort = IONotificationPortGetMachPort(NotificationPortRef); - - kr = IOConnectSetNotificationPort( xfIOKitInputConnect, - kIOHIDEventNotification, - notificationPort, 0 ); - kern_assert( kr ); - - evg->movedMask |= NX_MOUSEMOVEDMASK; - - // find number of framebuffers - kr = IOServiceGetMatchingServices( masterPort, - IOServiceMatching( IOFRAMEBUFFER_CONFORMSTO ), - &fbIter ); - kern_assert( kr ); - - darwinScreensFound = 0; - while ((service = IOIteratorNext(fbIter))) { - IOObjectRelease( service ); - darwinScreensFound++; - } - IOIteratorReset(fbIter); -} - - -/* - * DarwinModeInitInput - * One-time initialization of IOKit input support. - */ -void DarwinModeInitInput( - int argc, - char **argv) -{ - kern_return_t kr; - int fd[2]; - - kr = IOHIDSetEventsEnable(xfIOKitInputConnect, TRUE); - kern_assert( kr ); - - // Start event passing thread - assert( pipe(fd) == 0 ); - darwinEventReadFD = fd[0]; - darwinEventWriteFD = fd[1]; - fcntl(darwinEventReadFD, F_SETFL, O_NONBLOCK); - pthread_create(&inputThread, NULL, - XFIOKitHIDThread, NULL); - -} - - -/* - * DarwinModeProcessEvent - * Process IOKit specific events. - */ -void DarwinModeProcessEvent( - xEvent *xe) -{ - // No mode specific events - ErrorF("Unknown X event caught: %d\n", xe->u.u.type); -} diff --git a/hw/darwin/iokit/xfIOKit.h b/hw/darwin/iokit/xfIOKit.h deleted file mode 100644 index 27d27bc70..000000000 --- a/hw/darwin/iokit/xfIOKit.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - xfIOKit.h - - IOKit specific functions and definitions -*/ -/* - * Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ - -#ifndef _XFIOKIT_H -#define _XFIOKIT_H - -#include -#include -#include -#include "screenint.h" -#include "darwin.h" - -typedef struct { - io_connect_t fbService; - StdFBShmem_t *cursorShmem; - unsigned char *framebuffer; - unsigned char *shadowPtr; -} XFIOKitScreenRec, *XFIOKitScreenPtr; - -#define XFIOKIT_SCREEN_PRIV(pScreen) \ - ((XFIOKitScreenPtr)pScreen->devPrivates[xfIOKitScreenIndex].ptr) - -extern int xfIOKitScreenIndex; // index into pScreen.devPrivates -extern io_connect_t xfIOKitInputConnect; - -Bool XFIOKitInitCursor(ScreenPtr pScreen); - -#endif /* _XFIOKIT_H */ diff --git a/hw/darwin/iokit/xfIOKitCursor.c b/hw/darwin/iokit/xfIOKitCursor.c deleted file mode 100644 index 8388513a3..000000000 --- a/hw/darwin/iokit/xfIOKitCursor.c +++ /dev/null @@ -1,737 +0,0 @@ -/************************************************************** - * - * Cursor support for Darwin X Server - * - * Three different cursor modes are possible: - * X (0) - tracking via Darwin kernel, - * display via X machine independent - * Kernel (1) - tracking and display via Darwin kernel - * (not currently supported) - * Hardware (2) - tracking and display via hardware - * - * The X software cursor uses the Darwin software cursor - * routines in IOFramebuffer.cpp to track the cursor, but - * displays the cursor image using the X machine - * independent display cursor routines in midispcur.c. - * - * The kernel cursor uses IOFramebuffer.cpp routines to - * track and display the cursor. This gives better - * performance as the display calls don't have to cross - * the kernel boundary. Unfortunately, this mode has - * synchronization issues with the user land X server - * and isn't currently used. - * - * Hardware cursor support lets the hardware handle these - * details. - * - * Kernel and hardware cursor mode only work for cursors - * up to a certain size, currently 16x16 pixels. If a - * bigger cursor is set, we fallback to X cursor mode. - * - * HISTORY: - * 1.0 by Torrey T. Lyons, October 30, 2000 - * - **************************************************************/ -/* - * Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ - -#if HAVE_XORG_CONFIG_H -#include -#endif -#include "scrnintstr.h" -#include "cursorstr.h" -#include "mipointrst.h" -#include "micmap.h" -#define NO_CFPLUGIN -#include -#include -#include "darwin.h" -#include "xfIOKit.h" -#include -#define DUMP_DARWIN_CURSOR FALSE - -#define CURSOR_PRIV(pScreen) \ - ((XFIOKitCursorScreenPtr)pScreen->devPrivates[darwinCursorScreenIndex].ptr) - -// The cursors format are documented in IOFramebufferShared.h. -#define RGBto34WithGamma(red, green, blue) \ - ( 0x000F \ - | (((red) & 0xF) << 12) \ - | (((green) & 0xF) << 8) \ - | (((blue) & 0xF) << 4) ) -#define RGBto38WithGamma(red, green, blue) \ - ( 0xFF << 24 \ - | (((red) & 0xFF) << 16) \ - | (((green) & 0xFF) << 8) \ - | (((blue) & 0xFF)) ) -#define HighBitOf32 0x80000000 - -typedef struct { - Bool canHWCursor; - short cursorMode; - RecolorCursorProcPtr RecolorCursor; - InstallColormapProcPtr InstallColormap; - QueryBestSizeProcPtr QueryBestSize; - miPointerSpriteFuncPtr spriteFuncs; - ColormapPtr pInstalledMap; -} XFIOKitCursorScreenRec, *XFIOKitCursorScreenPtr; - -static int darwinCursorScreenIndex = -1; -static unsigned long darwinCursorGeneration = 0; - -/* -=========================================================================== - - Pointer sprite functions - -=========================================================================== -*/ - -/* - Realizing the Darwin hardware cursor (ie. converting from the - X representation to the IOKit representation) is complicated - by the fact that we have three different potential cursor - formats to go to, one for each bit depth (8, 15, or 24). - The IOKit formats are documented in IOFramebufferShared.h. - X cursors are represented as two pieces, a source and a mask. - The mask is a bitmap indicating which parts of the cursor are - transparent and which parts are drawn. The source is a bitmap - indicating which parts of the non-transparent portion of the the - cursor should be painted in the foreground color and which should - be painted in the background color. The bitmaps are given in - 32-bit format with least significant byte and bit first. - (This is opposite PowerPC Darwin.) -*/ - -typedef struct { - unsigned char image[CURSORWIDTH*CURSORHEIGHT]; - unsigned char mask[CURSORWIDTH*CURSORHEIGHT]; -} cursorPrivRec, *cursorPrivPtr; - -/* - * XFIOKitRealizeCursor8 - * Convert the X cursor representation to an 8-bit depth - * format for Darwin. This function assumes the maximum cursor - * width is a multiple of 8. - */ -static Bool -XFIOKitRealizeCursor8( - ScreenPtr pScreen, - CursorPtr pCursor) -{ - cursorPrivPtr newCursor; - unsigned char *newSourceP, *newMaskP; - CARD32 *oldSourceP, *oldMaskP; - xColorItem fgColor, bgColor; - int index, x, y, rowPad; - int cursorWidth, cursorHeight; - ColormapPtr pmap; - - // check cursor size just to be sure - cursorWidth = pCursor->bits->width; - cursorHeight = pCursor->bits->height; - if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH) - return FALSE; - - // get cursor colors in colormap - index = pScreen->myNum; - pmap = miInstalledMaps[index]; - if (!pmap) return FALSE; - - fgColor.red = pCursor->foreRed; - fgColor.green = pCursor->foreGreen; - fgColor.blue = pCursor->foreBlue; - FakeAllocColor(pmap, &fgColor); - bgColor.red = pCursor->backRed; - bgColor.green = pCursor->backGreen; - bgColor.blue = pCursor->backBlue; - FakeAllocColor(pmap, &bgColor); - FakeFreeColor(pmap, fgColor.pixel); - FakeFreeColor(pmap, bgColor.pixel); - - // allocate memory for new cursor image - newCursor = xalloc( sizeof(cursorPrivRec) ); - if (!newCursor) - return FALSE; - memset( newCursor->image, pScreen->blackPixel, CURSORWIDTH*CURSORHEIGHT ); - memset( newCursor->mask, 0, CURSORWIDTH*CURSORHEIGHT ); - - // convert to 8-bit Darwin cursor format - oldSourceP = (CARD32 *) pCursor->bits->source; - oldMaskP = (CARD32 *) pCursor->bits->mask; - newSourceP = newCursor->image; - newMaskP = newCursor->mask; - rowPad = CURSORWIDTH - cursorWidth; - - for (y = 0; y < cursorHeight; y++) { - for (x = 0; x < cursorWidth; x++) { - if (*oldSourceP & (HighBitOf32 >> x)) - *newSourceP = fgColor.pixel; - else - *newSourceP = bgColor.pixel; - if (*oldMaskP & (HighBitOf32 >> x)) - *newMaskP = 255; - else - *newSourceP = pScreen->blackPixel; - newSourceP++; newMaskP++; - } - oldSourceP++; oldMaskP++; - newSourceP += rowPad; newMaskP += rowPad; - } - - // save the result - pCursor->devPriv[pScreen->myNum] = (pointer) newCursor; - return TRUE; -} - - -/* - * XFIOKitRealizeCursor15 - * Convert the X cursor representation to an 15-bit depth - * format for Darwin. - */ -static Bool -XFIOKitRealizeCursor15( - ScreenPtr pScreen, - CursorPtr pCursor) -{ - unsigned short *newCursor; - unsigned short fgPixel, bgPixel; - unsigned short *newSourceP; - CARD32 *oldSourceP, *oldMaskP; - int x, y, rowPad; - int cursorWidth, cursorHeight; - - // check cursor size just to be sure - cursorWidth = pCursor->bits->width; - cursorHeight = pCursor->bits->height; - if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH) - return FALSE; - - // allocate memory for new cursor image - newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(short) ); - if (!newCursor) - return FALSE; - memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(short) ); - - // calculate pixel values - fgPixel = RGBto34WithGamma( pCursor->foreRed, pCursor->foreGreen, - pCursor->foreBlue ); - bgPixel = RGBto34WithGamma( pCursor->backRed, pCursor->backGreen, - pCursor->backBlue ); - - // convert to 15-bit Darwin cursor format - oldSourceP = (CARD32 *) pCursor->bits->source; - oldMaskP = (CARD32 *) pCursor->bits->mask; - newSourceP = newCursor; - rowPad = CURSORWIDTH - cursorWidth; - - for (y = 0; y < cursorHeight; y++) { - for (x = 0; x < cursorWidth; x++) { - if (*oldMaskP & (HighBitOf32 >> x)) { - if (*oldSourceP & (HighBitOf32 >> x)) - *newSourceP = fgPixel; - else - *newSourceP = bgPixel; - } else { - *newSourceP = 0; - } - newSourceP++; - } - oldSourceP++; oldMaskP++; - newSourceP += rowPad; - } - -#if DUMP_DARWIN_CURSOR - // Write out the cursor - ErrorF("Cursor: 0x%x\n", pCursor); - ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth, - cursorHeight, rowPad); - for (y = 0; y < cursorHeight; y++) { - newSourceP = newCursor + y*CURSORWIDTH; - for (x = 0; x < cursorWidth; x++) { - if (*newSourceP == fgPixel) - ErrorF("x"); - else if (*newSourceP == bgPixel) - ErrorF("o"); - else - ErrorF(" "); - newSourceP++; - } - ErrorF("\n"); - } -#endif - - // save the result - pCursor->devPriv[pScreen->myNum] = (pointer) newCursor; - return TRUE; -} - - -/* - * XFIOKitRealizeCursor24 - * Convert the X cursor representation to an 24-bit depth - * format for Darwin. This function assumes the maximum cursor - * width is a multiple of 8. - */ -static Bool -XFIOKitRealizeCursor24( - ScreenPtr pScreen, - CursorPtr pCursor) -{ - unsigned int *newCursor; - unsigned int fgPixel, bgPixel; - unsigned int *newSourceP; - CARD32 *oldSourceP, *oldMaskP; - int x, y, rowPad; - int cursorWidth, cursorHeight; - - // check cursor size just to be sure - cursorWidth = pCursor->bits->width; - cursorHeight = pCursor->bits->height; - if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH) - return FALSE; - - // allocate memory for new cursor image - newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(int) ); - if (!newCursor) - return FALSE; - memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(int) ); - - // calculate pixel values - fgPixel = RGBto38WithGamma( pCursor->foreRed, pCursor->foreGreen, - pCursor->foreBlue ); - bgPixel = RGBto38WithGamma( pCursor->backRed, pCursor->backGreen, - pCursor->backBlue ); - - // convert to 24-bit Darwin cursor format - oldSourceP = (CARD32 *) pCursor->bits->source; - oldMaskP = (CARD32 *) pCursor->bits->mask; - newSourceP = newCursor; - rowPad = CURSORWIDTH - cursorWidth; - - for (y = 0; y < cursorHeight; y++) { - for (x = 0; x < cursorWidth; x++) { - if (*oldMaskP & (HighBitOf32 >> x)) { - if (*oldSourceP & (HighBitOf32 >> x)) - *newSourceP = fgPixel; - else - *newSourceP = bgPixel; - } else { - *newSourceP = 0; - } - newSourceP++; - } - oldSourceP++; oldMaskP++; - newSourceP += rowPad; - } - -#if DUMP_DARWIN_CURSOR - // Write out the cursor - ErrorF("Cursor: 0x%x\n", pCursor); - ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth, - cursorHeight, rowPad); - for (y = 0; y < cursorHeight; y++) { - newSourceP = newCursor + y*CURSORWIDTH; - for (x = 0; x < cursorWidth; x++) { - if (*newSourceP == fgPixel) - ErrorF("x"); - else if (*newSourceP == bgPixel) - ErrorF("o"); - else - ErrorF(" "); - newSourceP++; - } - ErrorF("\n"); - } -#endif - - // save the result - pCursor->devPriv[pScreen->myNum] = (pointer) newCursor; - return TRUE; -} - - -/* - * XFIOKitRealizeCursor - * - */ -static Bool -XFIOKitRealizeCursor( - ScreenPtr pScreen, - CursorPtr pCursor) -{ - Bool result; - XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); - DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen); - - if ((pCursor->bits->height > CURSORHEIGHT) || - (pCursor->bits->width > CURSORWIDTH) || - // FIXME: this condition is not needed after kernel cursor works - !ScreenPriv->canHWCursor) { - result = (*ScreenPriv->spriteFuncs->RealizeCursor)(pScreen, pCursor); - } else if (dfb->bitsPerPixel == 8) { - result = XFIOKitRealizeCursor8(pScreen, pCursor); - } else if (dfb->bitsPerPixel == 16) { - result = XFIOKitRealizeCursor15(pScreen, pCursor); - } else { - result = XFIOKitRealizeCursor24(pScreen, pCursor); - } - - return result; -} - - -/* - * XFIOKitUnrealizeCursor - * - */ -static Bool -XFIOKitUnrealizeCursor( - ScreenPtr pScreen, - CursorPtr pCursor) -{ - Bool result; - XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); - - if ((pCursor->bits->height > CURSORHEIGHT) || - (pCursor->bits->width > CURSORWIDTH) || - // FIXME: this condition is not needed after kernel cursor works - !ScreenPriv->canHWCursor) { - result = (*ScreenPriv->spriteFuncs->UnrealizeCursor)(pScreen, pCursor); - } else { - xfree( pCursor->devPriv[pScreen->myNum] ); - result = TRUE; - } - - return result; -} - - -/* - * XFIOKitSetCursor - * Set the cursor sprite and position - * Use hardware cursor if possible - */ -static void -XFIOKitSetCursor( - ScreenPtr pScreen, - CursorPtr pCursor, - int x, - int y) -{ - kern_return_t kr; - DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen); - XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen); - StdFBShmem_t *cshmem = iokitScreen->cursorShmem; - XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); - - // are we supposed to remove the cursor? - if (!pCursor) { - if (ScreenPriv->cursorMode == 0) - (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y); - else { - if (!cshmem->cursorShow) { - cshmem->cursorShow++; - if (cshmem->hardwareCursorActive) { - kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE); - kern_assert( kr ); - } - } - } - return; - } - - // can we use the kernel or hardware cursor? - if ((pCursor->bits->height <= CURSORHEIGHT) && - (pCursor->bits->width <= CURSORWIDTH) && - // FIXME: condition not needed when kernel cursor works - ScreenPriv->canHWCursor) { - - if (ScreenPriv->cursorMode == 0) // remove the X cursor - (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y); - ScreenPriv->cursorMode = 1; // kernel cursor - - // change the cursor image in shared memory - if (dfb->bitsPerPixel == 8) { - cursorPrivPtr newCursor = - (cursorPrivPtr) pCursor->devPriv[pScreen->myNum]; - memcpy(cshmem->cursor.bw8.image[0], newCursor->image, - CURSORWIDTH*CURSORHEIGHT); - memcpy(cshmem->cursor.bw8.mask[0], newCursor->mask, - CURSORWIDTH*CURSORHEIGHT); - } else if (dfb->bitsPerPixel == 16) { - unsigned short *newCursor = - (unsigned short *) pCursor->devPriv[pScreen->myNum]; - memcpy(cshmem->cursor.rgb.image[0], newCursor, - 2*CURSORWIDTH*CURSORHEIGHT); - } else { - unsigned int *newCursor = - (unsigned int *) pCursor->devPriv[pScreen->myNum]; - memcpy(cshmem->cursor.rgb24.image[0], newCursor, - 4*CURSORWIDTH*CURSORHEIGHT); - } - - // FIXME: We always use a full size cursor, even if the image - // is smaller because I couldn't get the padding to come out - // right otherwise. - cshmem->cursorSize[0].width = CURSORWIDTH; - cshmem->cursorSize[0].height = CURSORHEIGHT; - cshmem->hotSpot[0].x = pCursor->bits->xhot; - cshmem->hotSpot[0].y = pCursor->bits->yhot; - - // try to use a hardware cursor - if (ScreenPriv->canHWCursor) { - kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0); - // FIXME: this is a fatal error without the kernel cursor - kern_assert( kr ); -#if 0 - if (kr != KERN_SUCCESS) { - ErrorF("Could not set new cursor with kernel return 0x%x.\n", kr); - ScreenPriv->canHWCursor = FALSE; - } -#endif - } - - // make the new cursor visible - if (cshmem->cursorShow) - cshmem->cursorShow--; - - if (!cshmem->cursorShow && ScreenPriv->canHWCursor) { - kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE); - // FIXME: this is a fatal error without the kernel cursor - kern_assert( kr ); -#if 0 - if (kr != KERN_SUCCESS) { - ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr); - ScreenPriv->canHWCursor = FALSE; - } else -#endif - ScreenPriv->cursorMode = 2; // hardware cursor - } - - return; - } - - // otherwise we use a software cursor - if (ScreenPriv->cursorMode) { - /* remove the kernel or hardware cursor */ - XFIOKitSetCursor(pScreen, 0, x, y); - } - - ScreenPriv->cursorMode = 0; - (*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y); -} - - -/* - * XFIOKitMoveCursor - * Move the cursor. This is a noop for a kernel or hardware cursor. - */ -static void -XFIOKitMoveCursor( - ScreenPtr pScreen, - int x, - int y) -{ - XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); - - // only the X cursor needs to be explicitly moved - if (!ScreenPriv->cursorMode) - (*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y); -} - -static miPointerSpriteFuncRec darwinSpriteFuncsRec = { - XFIOKitRealizeCursor, - XFIOKitUnrealizeCursor, - XFIOKitSetCursor, - XFIOKitMoveCursor -}; - - -/* -=========================================================================== - - Pointer screen functions - -=========================================================================== -*/ - -/* - * XFIOKitCursorOffScreen - */ -static Bool XFIOKitCursorOffScreen(ScreenPtr *pScreen, int *x, int *y) -{ return FALSE; -} - - -/* - * XFIOKitCrossScreen - */ -static void XFIOKitCrossScreen(ScreenPtr pScreen, Bool entering) -{ return; -} - - -/* - * XFIOKitWarpCursor - * Change the cursor position without generating an event or motion history - */ -static void -XFIOKitWarpCursor( - ScreenPtr pScreen, - int x, - int y) -{ - kern_return_t kr; - - kr = IOHIDSetMouseLocation( xfIOKitInputConnect, x, y ); - if (kr != KERN_SUCCESS) { - ErrorF("Could not set cursor position with kernel return 0x%x.\n", kr); - } - miPointerWarpCursor(pScreen, x, y); -} - -static miPointerScreenFuncRec darwinScreenFuncsRec = { - XFIOKitCursorOffScreen, - XFIOKitCrossScreen, - XFIOKitWarpCursor, - DarwinEQPointerPost, - DarwinEQSwitchScreen -}; - - -/* -=========================================================================== - - Other screen functions - -=========================================================================== -*/ - -/* - * XFIOKitCursorQueryBestSize - * Handle queries for best cursor size - */ -static void -XFIOKitCursorQueryBestSize( - int class, - unsigned short *width, - unsigned short *height, - ScreenPtr pScreen) -{ - XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); - - if (class == CursorShape) { - *width = CURSORWIDTH; - *height = CURSORHEIGHT; - } else - (*ScreenPriv->QueryBestSize)(class, width, height, pScreen); -} - - -/* - * XFIOKitInitCursor - * Initialize cursor support - */ -Bool -XFIOKitInitCursor( - ScreenPtr pScreen) -{ - XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen); - XFIOKitCursorScreenPtr ScreenPriv; - miPointerScreenPtr PointPriv; - kern_return_t kr; - - // start with no cursor displayed - if (!iokitScreen->cursorShmem->cursorShow++) { - if (iokitScreen->cursorShmem->hardwareCursorActive) { - kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE); - kern_assert( kr ); - } - } - - // initialize software cursor handling (always needed as backup) - if (!miDCInitialize(pScreen, &darwinScreenFuncsRec)) { - return FALSE; - } - - // allocate private storage for this screen's hardware cursor info - if (darwinCursorGeneration != serverGeneration) { - if ((darwinCursorScreenIndex = AllocateScreenPrivateIndex()) < 0) - return FALSE; - darwinCursorGeneration = serverGeneration; - } - - ScreenPriv = xcalloc( 1, sizeof(XFIOKitCursorScreenRec) ); - if (!ScreenPriv) return FALSE; - - pScreen->devPrivates[darwinCursorScreenIndex].ptr = (pointer) ScreenPriv; - - // check if a hardware cursor is supported - if (!iokitScreen->cursorShmem->hardwareCursorCapable) { - ScreenPriv->canHWCursor = FALSE; - ErrorF("Hardware cursor not supported.\n"); - } else { - // we need to make sure that the hardware cursor really works - ScreenPriv->canHWCursor = TRUE; - kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0); - if (kr != KERN_SUCCESS) { - ErrorF("Could not set hardware cursor with kernel return 0x%x.\n", kr); - ScreenPriv->canHWCursor = FALSE; - } - kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE); - if (kr != KERN_SUCCESS) { - ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr); - ScreenPriv->canHWCursor = FALSE; - } - IOFBSetCursorVisible(iokitScreen->fbService, FALSE); - } - - ScreenPriv->cursorMode = 0; - ScreenPriv->pInstalledMap = NULL; - - // override some screen procedures - ScreenPriv->QueryBestSize = pScreen->QueryBestSize; - pScreen->QueryBestSize = XFIOKitCursorQueryBestSize; -// ScreenPriv->ConstrainCursor = pScreen->ConstrainCursor; -// pScreen->ConstrainCursor = XFIOKitConstrainCursor; - - // initialize hardware cursor handling - PointPriv = (miPointerScreenPtr) - pScreen->devPrivates[miPointerScreenIndex].ptr; - - ScreenPriv->spriteFuncs = PointPriv->spriteFuncs; - PointPriv->spriteFuncs = &darwinSpriteFuncsRec; - - /* Other routines that might be overridden */ -/* - CursorLimitsProcPtr CursorLimits; - RecolorCursorProcPtr RecolorCursor; -*/ - - return TRUE; -} diff --git a/hw/darwin/iokit/xfIOKitStartup.c b/hw/darwin/iokit/xfIOKitStartup.c deleted file mode 100644 index 413d0625d..000000000 --- a/hw/darwin/iokit/xfIOKitStartup.c +++ /dev/null @@ -1,133 +0,0 @@ -/************************************************************** - * - * Startup code for the IOKit Darwin X Server - * - **************************************************************/ -/* - * Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ - -#if HAVE_XORG_CONFIG_H -#include -#endif - -#include "darwin.h" -#include "darwinKeyboard.h" -#include "micmap.h" - -void GlxExtensionInit(void); -void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr); - - -/* - * DarwinHandleGUI - * This function is called first from main(). - * It does nothing for the IOKit X server. - */ -void DarwinHandleGUI( - int argc, - char *argv[], - char *envp[] ) -{ -} - - -/* - * DarwinGlxExtensionInit - * Initialize the GLX extension. - * Mesa is linked into the IOKit mode X server so we just call directly. - */ -void DarwinGlxExtensionInit(void) -{ -#ifdef GLXEXT - GlxExtensionInit(); -#endif -} - - -/* - * DarwinGlxWrapInitVisuals - */ -void DarwinGlxWrapInitVisuals( - miInitVisualsProcPtr *procPtr) -{ -#ifdef GLXEXT - GlxWrapInitVisuals(procPtr); -#endif -} - - -/* - * DarwinModeProcessArgument - * Process IOKit specific command line arguments. - */ -int DarwinModeProcessArgument( - int argc, - char *argv[], - int i) -{ -#ifdef DARWIN_WITH_QUARTZ - // XDarwinStartup uses these arguments to indicate which X server - // should be started. Ignore them here. - if (!strcmp( argv[i], "-fullscreen" ) || - !strcmp( argv[i], "-rootless" ) || - !strcmp( argv[i], "-quartz" )) - { - return 1; - } -#else - if (!strcmp( argv[i], "-fullscreen" ) || - !strcmp( argv[i], "-rootless" ) || - !strcmp( argv[i], "-quartz" )) - { - FatalError("Command line option %s is not available without Quartz " - "support.\n", argv[i]); - } -#endif - - return 0; -} - - -/* - * DarwinModeSystemKeymapSeed - * Changes to NXKeyMapping are not tracked. - */ -unsigned int -DarwinModeSystemKeymapSeed(void) -{ - return 0; -} - - -/* - * DarwinModeReadSystemKeymap - * IOKit has no alternative to NXKeyMapping API. - */ -Bool DarwinModeReadSystemKeymap( - darwinKeyboardInfo *info) -{ - return FALSE; -} diff --git a/hw/darwin/quartz/Makefile.am b/hw/darwin/quartz/Makefile.am index 838af2989..44b52e7c5 100644 --- a/hw/darwin/quartz/Makefile.am +++ b/hw/darwin/quartz/Makefile.am @@ -2,13 +2,13 @@ noinst_LIBRARIES = libXQuartz.a AM_CFLAGS = @XORG_CFLAGS@ AM_OBJCFLAGS = @XORG_CFLAGS@ -AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../apple -I$(top_srcdir)/miext/rootless @XORG_INCS@ -DXBINDIR=\"${bindir}\" -DHAS_KL_API -DHAVE_XORG_CONFIG_H +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/.. -I$(top_srcdir)/miext/rootless @XORG_INCS@ -DXBINDIR=\"${bindir}\" -DHAS_KL_API -DHAVE_XORG_CONFIG_H SUBDIRS = cr fullscreen xpr libXQuartz_a_SOURCES = \ - ../apple/X11Application.m \ - ../apple/X11Controller.m \ + X11Application.m \ + X11Controller.m \ applewm.c \ keysym2ucs.c \ pseudoramiX.c \ diff --git a/hw/darwin/quartz/Preferences.h b/hw/darwin/quartz/Preferences.h deleted file mode 100644 index cf43758e7..000000000 --- a/hw/darwin/quartz/Preferences.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization. - */ - -#import - -@interface Preferences : NSObject -{ - IBOutlet NSPanel *window; - IBOutlet id displayField; - IBOutlet id dockSwitchButton; - IBOutlet id fakeButton; - IBOutlet id button2ModifiersMatrix; - IBOutlet id button3ModifiersMatrix; - IBOutlet id switchKeyButton; - IBOutlet id keymapFileField; - IBOutlet id modeMatrix; - IBOutlet id modeWindowButton; - IBOutlet id startupHelpButton; - IBOutlet id systemBeepButton; - IBOutlet id mouseAccelChangeButton; - IBOutlet id useXineramaButton; - IBOutlet id addToPathButton; - IBOutlet id addToPathField; - IBOutlet id useDefaultShellMatrix; - IBOutlet id useOtherShellField; - IBOutlet id depthButton; - - BOOL isGettingKeyCode; - int keyCode; - int modifiers; - NSMutableString *switchString; -} - -- (IBAction)close:(id)sender; -- (IBAction)pickFile:(id)sender; -- (IBAction)saveChanges:(id)sender; -- (IBAction)setKey:(id)sender; - -- (BOOL)sendEvent:(NSEvent *)anEvent; - -- (void)awakeFromNib; -- (void)windowWillClose:(NSNotification *)aNotification; - -+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile; -+ (void)setKeymapFile:(NSString *)newFile; -+ (void)setSwitchString:(NSString *)newString; -+ (void)setKeyCode:(int)newKeyCode; -+ (void)setModifiers:(int)newModifiers; -+ (void)setDisplay:(int)newDisplay; -+ (void)setDockSwitch:(BOOL)newDockSwitch; -+ (void)setFakeButtons:(BOOL)newFakeButtons; -+ (void)setButton2Mask:(int)newFakeMask; -+ (void)setButton3Mask:(int)newFakeMask; -+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange; -+ (void)setUseQDCursor:(int)newUseQDCursor; -+ (void)setRootless:(BOOL)newRootless; -+ (void)setUseAGL:(BOOL)newUseAGL; -+ (void)setModeWindow:(BOOL)newModeWindow; -+ (void)setStartupHelp:(BOOL)newStartupHelp; -+ (void)setSystemBeep:(BOOL)newSystemBeep; -+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs; -+ (void)setXinerama:(BOOL)newXinerama; -+ (void)setAddToPath:(BOOL)newAddToPath; -+ (void)setAddToPathString:(NSString *)newAddToPathString; -+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell; -+ (void)setShellString:(NSString *)newShellString; -+ (void)setDepth:(int)newDepth; -+ (void)setDisplayModeBundles:(NSArray *)newBundles; -+ (void)saveToDisk; - -+ (BOOL)useKeymapFile; -+ (NSString *)keymapFile; -+ (NSString *)switchString; -+ (unsigned int)keyCode; -+ (unsigned int)modifiers; -+ (int)display; -+ (BOOL)dockSwitch; -+ (BOOL)fakeButtons; -+ (int)button2Mask; -+ (int)button3Mask; -+ (BOOL)mouseAccelChange; -+ (int)useQDCursor; -+ (BOOL)rootless; -+ (BOOL)useAGL; -+ (BOOL)modeWindow; -+ (BOOL)startupHelp; -+ (BOOL)systemBeep; -+ (BOOL)enableKeyEquivalents; -+ (BOOL)xinerama; -+ (BOOL)addToPath; -+ (NSString *)addToPathString; -+ (BOOL)useDefaultShell; -+ (NSString *)shellString; -+ (int)depth; -+ (NSArray *)displayModeBundles; - -@end - -// Possible settings for useQDCursor -enum { - qdCursor_Never, // never use QuickDraw cursor - qdCursor_Not8Bit, // don't try to use QuickDraw with 8-bit depth - qdCursor_Always // always try to use QuickDraw cursor -}; - -// Possible settings for depth -enum { - depth_Current, - depth_8Bit, - depth_15Bit, - depth_24Bit -}; diff --git a/hw/darwin/quartz/Preferences.m b/hw/darwin/quartz/Preferences.m deleted file mode 100644 index b5eeedd24..000000000 --- a/hw/darwin/quartz/Preferences.m +++ /dev/null @@ -1,599 +0,0 @@ -// -// Preferences.m -// -// This class keeps track of the user preferences. -// -/* - * Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization. - */ - -#ifdef HAVE_XORG_CONFIG_H -#include -#endif -#import "quartzCommon.h" - -#define BOOL xBOOL -#include "darwin.h" -#undef BOOL - -#import "Preferences.h" - -#include // for modifier masks - -// Macros to build the path name -#ifndef XBINDIR -#define XBINDIR /usr/X11/bin -#endif -#define STR(s) #s -#define XSTRPATH(s) STR(s) - -// Keys for user defaults dictionary -static NSString *X11EnableKeyEquivalentsKey = @"EnableKeyEquivalents"; - - -@implementation Preferences - -+ (void)initialize -{ - // Provide user defaults if needed - NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:0], @"Display", - @"YES", @"FakeButtons", - [NSNumber numberWithInt:NX_COMMANDMASK], @"Button2Mask", - [NSNumber numberWithInt:NX_ALTERNATEMASK], @"Button3Mask", - NSLocalizedString(@"USA.keymapping",@""), @"KeymappingFile", - @"YES", @"UseKeymappingFile", - NSLocalizedString(@"Cmd-Opt-a",@""), @"SwitchString", - @"YES", @"UseRootlessMode", - @"YES", @"UseAGLforGLX", - @"YES", @"ShowModePickWindow", - @"YES", @"ShowStartupHelp", - [NSNumber numberWithInt:0], @"SwitchKeyCode", - [NSNumber numberWithInt:(NSCommandKeyMask | NSAlternateKeyMask)], - @"SwitchModifiers", @"NO", @"UseSystemBeep", - @"YES", X11EnableKeyEquivalentsKey, - @"YES", @"DockSwitch", - @"NO", @"AllowMouseAccelChange", - [NSNumber numberWithInt:qdCursor_Not8Bit], @"UseQDCursor", - @"YES", @"Xinerama", - @"YES", @"AddToPath", - [NSString stringWithCString:XSTRPATH(XBINDIR)], @"AddToPathString", - @"YES", @"UseDefaultShell", - @"/bin/tcsh", @"Shell", - [NSNumber numberWithInt:depth_Current], @"Depth", -#ifdef BUILD_XPR - [NSArray arrayWithObjects:@"xpr.bundle", @"cr.bundle", nil], -#else - [NSArray arrayWithObjects:@"cr.bundle", nil], -#endif - @"DisplayModeBundles", nil]; - - [super initialize]; - [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; -} - -// Initialize internal state info of switch key button -- (void)initSwitchKey -{ - keyCode = [Preferences keyCode]; - modifiers = [Preferences modifiers]; - [switchString setString:[Preferences switchString]]; -} - -- (id)init -{ - self = [super init]; - - isGettingKeyCode=NO; - switchString=[[NSMutableString alloc] init]; - [self initSwitchKey]; - - return self; -} - -// Set a modifiers checkbox matrix to match a modifier mask -- (void)resetMatrix:(NSMatrix *)aMatrix withMask:(int)aMask -{ - [aMatrix setState:(aMask & NX_SHIFTMASK) atRow:0 column:0]; - [aMatrix setState:(aMask & NX_CONTROLMASK) atRow:1 column:0]; - [aMatrix setState:(aMask & NX_COMMANDMASK) atRow:2 column:0]; - [aMatrix setState:(aMask & NX_ALTERNATEMASK) atRow:3 column:0]; - [aMatrix setState:(aMask & NX_SECONDARYFNMASK) atRow:4 column:0]; -} - -// Generate a modifiers mask from a modifiers checkbox matrix -- (int)getMaskFromMatrix:(NSMatrix *)aMatrix -{ - int theMask = 0; - - if ([[aMatrix cellAtRow:0 column:0] state]) - theMask |= NX_SHIFTMASK; - if ([[aMatrix cellAtRow:1 column:0] state]) - theMask |= NX_CONTROLMASK; - if ([[aMatrix cellAtRow:2 column:0] state]) - theMask |= NX_COMMANDMASK; - if ([[aMatrix cellAtRow:3 column:0] state]) - theMask |= NX_ALTERNATEMASK; - if ([[aMatrix cellAtRow:4 column:0] state]) - theMask |= NX_SECONDARYFNMASK; - - return theMask; -} - -// Set the window controls to the state in user defaults -- (void)resetWindow -{ - if ([Preferences keymapFile] == nil) - [keymapFileField setStringValue:@" "]; - else - [keymapFileField setStringValue:[Preferences keymapFile]]; - - if ([Preferences switchString] == nil) - [switchKeyButton setTitle:@"--"]; - else - [switchKeyButton setTitle:[Preferences switchString]]; - - [displayField setIntValue:[Preferences display]]; - [dockSwitchButton setIntValue:[Preferences dockSwitch]]; - [fakeButton setIntValue:[Preferences fakeButtons]]; - [self resetMatrix:button2ModifiersMatrix - withMask:[Preferences button2Mask]]; - [self resetMatrix:button3ModifiersMatrix - withMask:[Preferences button3Mask]]; - [modeMatrix setState:[Preferences rootless] atRow:0 column:1]; - [startupHelpButton setIntValue:[Preferences startupHelp]]; - [modeWindowButton setIntValue:[Preferences modeWindow]]; - [systemBeepButton setIntValue:[Preferences systemBeep]]; - [mouseAccelChangeButton setIntValue:[Preferences mouseAccelChange]]; - [useXineramaButton setIntValue:[Preferences xinerama]]; - [addToPathButton setIntValue:[Preferences addToPath]]; - [addToPathField setStringValue:[Preferences addToPathString]]; - [useDefaultShellMatrix setState:![Preferences useDefaultShell] - atRow:1 column:0]; - [useOtherShellField setStringValue:[Preferences shellString]]; - [depthButton selectItemAtIndex:[Preferences depth]]; -} - -- (void)awakeFromNib -{ - [self resetWindow]; -} - -// Preference window delegate -- (void)windowWillClose:(NSNotification *)aNotification -{ - [self resetWindow]; - [self initSwitchKey]; -} - -// User cancelled the changes -- (IBAction)close:(id)sender -{ - [window orderOut:nil]; - [self resetWindow]; // reset window controls - [self initSwitchKey]; // reset switch key state -} - -// Pick keymapping file -- (IBAction)pickFile:(id)sender -{ - int result; - NSArray *fileTypes = [NSArray arrayWithObject:@"keymapping"]; - NSOpenPanel *oPanel = [NSOpenPanel openPanel]; - - [oPanel setAllowsMultipleSelection:NO]; - result = [oPanel runModalForDirectory:@"/System/Library/Keyboards" - file:nil types:fileTypes]; - if (result == NSOKButton) { - [keymapFileField setStringValue:[oPanel filename]]; - } -} - -// User saved changes -- (IBAction)saveChanges:(id)sender -{ - [Preferences setKeyCode:keyCode]; - [Preferences setModifiers:modifiers]; - [Preferences setSwitchString:switchString]; - [Preferences setKeymapFile:[keymapFileField stringValue]]; - [Preferences setUseKeymapFile:YES]; - [Preferences setDisplay:[displayField intValue]]; - [Preferences setDockSwitch:[dockSwitchButton intValue]]; - [Preferences setFakeButtons:[fakeButton intValue]]; - [Preferences setButton2Mask: - [self getMaskFromMatrix:button2ModifiersMatrix]]; - [Preferences setButton3Mask: - [self getMaskFromMatrix:button3ModifiersMatrix]]; - [Preferences setRootless:[[modeMatrix cellAtRow:0 column:1] state]]; - [Preferences setModeWindow:[modeWindowButton intValue]]; - [Preferences setStartupHelp:[startupHelpButton intValue]]; - [Preferences setSystemBeep:[systemBeepButton intValue]]; - [Preferences setMouseAccelChange:[mouseAccelChangeButton intValue]]; - [Preferences setXinerama:[useXineramaButton intValue]]; - [Preferences setAddToPath:[addToPathButton intValue]]; - [Preferences setAddToPathString:[addToPathField stringValue]]; - [Preferences setUseDefaultShell: - [[useDefaultShellMatrix cellAtRow:0 column:0] state]]; - [Preferences setShellString:[useOtherShellField stringValue]]; - [Preferences setDepth:[depthButton indexOfSelectedItem]]; - [Preferences saveToDisk]; - - [window orderOut:nil]; -} - -- (IBAction)setKey:(id)sender -{ - [switchKeyButton setTitle:NSLocalizedString(@"Press key",@"")]; - isGettingKeyCode=YES; - [switchString setString:@""]; -} - -- (BOOL)sendEvent:(NSEvent *)anEvent -{ - if(isGettingKeyCode) { - if([anEvent type]==NSKeyDown) // wait for keyup - return YES; - if([anEvent type]!=NSKeyUp) - return NO; - - if([anEvent modifierFlags] & NSCommandKeyMask) - [switchString appendString:@"Cmd-"]; - if([anEvent modifierFlags] & NSControlKeyMask) - [switchString appendString:@"Ctrl-"]; - if([anEvent modifierFlags] & NSAlternateKeyMask) - [switchString appendString:@"Opt-"]; - if([anEvent modifierFlags] & NSNumericPadKeyMask) // doesn't work - [switchString appendString:@"Num-"]; - if([anEvent modifierFlags] & NSHelpKeyMask) - [switchString appendString:@"Help-"]; - if([anEvent modifierFlags] & NSFunctionKeyMask) // powerbooks only - [switchString appendString:@"Fn-"]; - - [switchString appendString:[anEvent charactersIgnoringModifiers]]; - [switchKeyButton setTitle:switchString]; - - keyCode = [anEvent keyCode]; - modifiers = [anEvent modifierFlags]; - isGettingKeyCode=NO; - - return YES; - } - return NO; -} - -+ (void)setKeymapFile:(NSString *)newFile -{ - [[NSUserDefaults standardUserDefaults] setObject:newFile - forKey:@"KeymappingFile"]; -} - -+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile -{ - [[NSUserDefaults standardUserDefaults] setBool:newUseKeymapFile - forKey:@"UseKeymappingFile"]; -} - -+ (void)setSwitchString:(NSString *)newString -{ - [[NSUserDefaults standardUserDefaults] setObject:newString - forKey:@"SwitchString"]; -} - -+ (void)setKeyCode:(int)newKeyCode -{ - [[NSUserDefaults standardUserDefaults] setInteger:newKeyCode - forKey:@"SwitchKeyCode"]; -} - -+ (void)setModifiers:(int)newModifiers -{ - [[NSUserDefaults standardUserDefaults] setInteger:newModifiers - forKey:@"SwitchModifiers"]; -} - -+ (void)setDisplay:(int)newDisplay -{ - [[NSUserDefaults standardUserDefaults] setInteger:newDisplay - forKey:@"Display"]; -} - -+ (void)setDockSwitch:(BOOL)newDockSwitch -{ - [[NSUserDefaults standardUserDefaults] setBool:newDockSwitch - forKey:@"DockSwitch"]; -} - -+ (void)setFakeButtons:(BOOL)newFakeButtons -{ - [[NSUserDefaults standardUserDefaults] setBool:newFakeButtons - forKey:@"FakeButtons"]; - // Update the setting used by the X server thread - darwinFakeButtons = newFakeButtons; -} - -+ (void)setButton2Mask:(int)newFakeMask -{ - [[NSUserDefaults standardUserDefaults] setInteger:newFakeMask - forKey:@"Button2Mask"]; - // Update the setting used by the X server thread - darwinFakeMouse2Mask = newFakeMask; -} - -+ (void)setButton3Mask:(int)newFakeMask -{ - [[NSUserDefaults standardUserDefaults] setInteger:newFakeMask - forKey:@"Button3Mask"]; - // Update the setting used by the X server thread - darwinFakeMouse3Mask = newFakeMask; -} - -+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange -{ - [[NSUserDefaults standardUserDefaults] setBool:newMouseAccelChange - forKey:@"AllowMouseAccelChange"]; - // Update the setting used by the X server thread - darwinMouseAccelChange = newMouseAccelChange; -} - -+ (void)setUseQDCursor:(int)newUseQDCursor -{ - [[NSUserDefaults standardUserDefaults] setInteger:newUseQDCursor - forKey:@"UseQDCursor"]; -} - -+ (void)setModeWindow:(BOOL)newModeWindow -{ - [[NSUserDefaults standardUserDefaults] setBool:newModeWindow - forKey:@"ShowModePickWindow"]; -} - -+ (void)setRootless:(BOOL)newRootless -{ - [[NSUserDefaults standardUserDefaults] setBool:newRootless - forKey:@"UseRootlessMode"]; -} - -+ (void)setUseAGL:(BOOL)newUseAGL -{ - [[NSUserDefaults standardUserDefaults] setBool:newUseAGL - forKey:@"UseAGLforGLX"]; -} - -+ (void)setStartupHelp:(BOOL)newStartupHelp -{ - [[NSUserDefaults standardUserDefaults] setBool:newStartupHelp - forKey:@"ShowStartupHelp"]; -} - -+ (void)setSystemBeep:(BOOL)newSystemBeep -{ - [[NSUserDefaults standardUserDefaults] setBool:newSystemBeep - forKey:@"UseSystemBeep"]; - // Update the setting used by the X server thread - quartzUseSysBeep = newSystemBeep; -} - -+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs -{ - [[NSUserDefaults standardUserDefaults] setBool:newKeyEquivs - forKey:X11EnableKeyEquivalentsKey]; - // Update the setting used by the X server thread - quartzEnableKeyEquivalents = newKeyEquivs; -} - -+ (void)setXinerama:(BOOL)newXinerama -{ - [[NSUserDefaults standardUserDefaults] setBool:newXinerama - forKey:@"Xinerama"]; -} - -+ (void)setAddToPath:(BOOL)newAddToPath -{ - [[NSUserDefaults standardUserDefaults] setBool:newAddToPath - forKey:@"AddToPath"]; -} - -+ (void)setAddToPathString:(NSString *)newAddToPathString -{ - [[NSUserDefaults standardUserDefaults] setObject:newAddToPathString - forKey:@"AddToPathString"]; -} - -+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell -{ - [[NSUserDefaults standardUserDefaults] setBool:newUseDefaultShell - forKey:@"UseDefaultShell"]; -} - -+ (void)setShellString:(NSString *)newShellString -{ - [[NSUserDefaults standardUserDefaults] setObject:newShellString - forKey:@"Shell"]; -} - -+ (void)setDepth:(int)newDepth -{ - [[NSUserDefaults standardUserDefaults] setInteger:newDepth - forKey:@"Depth"]; -} - -+ (void)setDisplayModeBundles:(NSArray *)newBundles -{ - [[NSUserDefaults standardUserDefaults] setObject:newBundles - forKey:@"DisplayModeBundles"]; -} - -+ (void)saveToDisk -{ - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -+ (BOOL)useKeymapFile -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"UseKeymappingFile"]; -} - -+ (NSString *)keymapFile -{ - return [[NSUserDefaults standardUserDefaults] - stringForKey:@"KeymappingFile"]; -} - -+ (NSString *)switchString -{ - return [[NSUserDefaults standardUserDefaults] - stringForKey:@"SwitchString"]; -} - -+ (unsigned int)keyCode -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"SwitchKeyCode"]; -} - -+ (unsigned int)modifiers -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"SwitchModifiers"]; -} - -+ (int)display -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"Display"]; -} - -+ (BOOL)dockSwitch -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:@"DockSwitch"]; -} - -+ (BOOL)fakeButtons -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:@"FakeButtons"]; -} - -+ (int)button2Mask -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"Button2Mask"]; -} - -+ (int)button3Mask -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"Button3Mask"]; -} - -+ (BOOL)mouseAccelChange -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"AllowMouseAccelChange"]; -} - -+ (int)useQDCursor -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"UseQDCursor"]; -} - -+ (BOOL)rootless -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"UseRootlessMode"]; -} - -+ (BOOL)useAGL -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"UseAGLforGLX"]; -} - -+ (BOOL)modeWindow -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"ShowModePickWindow"]; -} - -+ (BOOL)startupHelp -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"ShowStartupHelp"]; -} - -+ (BOOL)systemBeep -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:@"UseSystemBeep"]; -} - -+ (BOOL)enableKeyEquivalents -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:X11EnableKeyEquivalentsKey]; -} - -+ (BOOL)xinerama -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:@"Xinerama"]; -} - -+ (BOOL)addToPath -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:@"AddToPath"]; -} - -+ (NSString *)addToPathString -{ - return [[NSUserDefaults standardUserDefaults] - stringForKey:@"AddToPathString"]; -} - -+ (BOOL)useDefaultShell -{ - return [[NSUserDefaults standardUserDefaults] - boolForKey:@"UseDefaultShell"]; -} - -+ (NSString *)shellString -{ - return [[NSUserDefaults standardUserDefaults] - stringForKey:@"Shell"]; -} - -+ (int)depth -{ - return [[NSUserDefaults standardUserDefaults] - integerForKey:@"Depth"]; -} - -+ (NSArray *)displayModeBundles -{ - return [[NSUserDefaults standardUserDefaults] - objectForKey:@"DisplayModeBundles"]; -} - -@end diff --git a/hw/darwin/apple/X11Application.h b/hw/darwin/quartz/X11Application.h similarity index 100% rename from hw/darwin/apple/X11Application.h rename to hw/darwin/quartz/X11Application.h diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/quartz/X11Application.m similarity index 100% rename from hw/darwin/apple/X11Application.m rename to hw/darwin/quartz/X11Application.m diff --git a/hw/darwin/apple/X11Controller.h b/hw/darwin/quartz/X11Controller.h similarity index 100% rename from hw/darwin/apple/X11Controller.h rename to hw/darwin/quartz/X11Controller.h diff --git a/hw/darwin/apple/X11Controller.m b/hw/darwin/quartz/X11Controller.m similarity index 100% rename from hw/darwin/apple/X11Controller.m rename to hw/darwin/quartz/X11Controller.m diff --git a/hw/darwin/quartz/XApplication.h b/hw/darwin/quartz/XApplication.h deleted file mode 100644 index 2f2b22389..000000000 --- a/hw/darwin/quartz/XApplication.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// XApplication.h -// -// Created by Andreas Monitzer on January 6, 2001. -// -/* - * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization. - */ - -#import - -#import "XServer.h" -#import "Preferences.h" - -@interface XApplication : NSApplication { - IBOutlet XServer *xserver; - IBOutlet Preferences *preferences; -} - -- (void)sendEvent:(NSEvent *)anEvent; - -@end diff --git a/hw/darwin/quartz/XApplication.m b/hw/darwin/quartz/XApplication.m deleted file mode 100644 index de32d38fe..000000000 --- a/hw/darwin/quartz/XApplication.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// XApplication.m -// -// Created by Andreas Monitzer on January 6, 2001. -// -/* - * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization. - */ - -#import "XApplication.h" - - -@implementation XApplication - -- (void)sendEvent:(NSEvent *)anEvent { - if (![xserver translateEvent:anEvent]) { - if (![preferences sendEvent:anEvent]) - [super sendEvent:anEvent]; - } -} - -@end diff --git a/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj b/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj deleted file mode 100644 index 0ad831423..000000000 --- a/hw/darwin/quartz/XDarwin.pbproj/project.pbxproj +++ /dev/null @@ -1,2519 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 39; - objects = { - 01279092000747AA0A000002 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = XServer.m; - refType = 4; - sourceTree = ""; - }; - 0127909600074AF60A000002 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = XApplication.m; - refType = 4; - sourceTree = ""; - }; - 0127909800074B1A0A000002 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = XApplication.h; - refType = 4; - sourceTree = ""; - }; - 015698ED003DF345CE6F79C2 = { - isa = PBXFileReference; - lastKnownFileType = image.icns; - path = XDarwin.icns; - refType = 4; - sourceTree = ""; - }; - 0157A37D002CF6D7CE6F79C2 = { - children = ( - F533214601A4B45401000001, - 0157A37E002CF6D7CE6F79C2, - F58D65DF018F79B101000001, - F533213D0193CBE001000001, - 43B962E200617B93416877C2, - F5ACD263C5BE031F01000001, - F51BF62E02026E3501000001, - F5ACD25CC5B5E96601000001, - F587E16401924C6901000001, - ); - isa = PBXVariantGroup; - name = Credits.rtf; - path = ""; - refType = 4; - sourceTree = ""; - }; - 0157A37E002CF6D7CE6F79C2 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = English; - path = English.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - 015EDCEA004203A8CE6F79C2 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = IOKit.framework; - path = /System/Library/Frameworks/IOKit.framework; - refType = 0; - sourceTree = ""; - }; - 018F40F2003E1902CE6F79C2 = { - children = ( - 018F40F3003E1916CE6F79C2, - 021D6BA9003E1BACCE6F79C2, - 3E74E03600863F047F000001, - F5A94EF10314BAC70100011B, - 018F40F6003E1974CE6F79C2, - 6E5F5F0005537A1A008FEAD7, - ); - isa = PBXGroup; - name = "X Server"; - path = ..; - refType = 4; - sourceTree = ""; - }; - 018F40F3003E1916CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = darwin.c; - refType = 4; - sourceTree = ""; - }; - 018F40F6003E1974CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = darwinKeyboard.c; - refType = 4; - sourceTree = ""; - }; - 018F40F8003E1979CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = quartz.c; - refType = 4; - sourceTree = ""; - }; - 018F40FA003E197ECE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = quartz.h; - refType = 4; - sourceTree = ""; - }; - 018F40FC003E1983CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xfIOKit.c; - refType = 4; - sourceTree = ""; - }; - 018F40FE003E1988CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = xfIOKit.h; - refType = 4; - sourceTree = ""; - }; - 018F4100003E19E4CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xfIOKitCursor.c; - refType = 4; - sourceTree = ""; - }; -//010 -//011 -//012 -//013 -//014 -//020 -//021 -//022 -//023 -//024 - 021D6BA9003E1BACCE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = darwin.h; - refType = 4; - sourceTree = ""; - }; - 02A1FEA6006D34BE416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xfIOKitStartup.c; - refType = 4; - sourceTree = ""; - }; - 02A1FEA8006D38F0416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = quartzStartup.c; - refType = 4; - sourceTree = ""; - }; - 02E03CA000348209CE6F79C2 = { - children = ( - F533214701A4B48301000001, - 02E03CA100348209CE6F79C2, - F58D65E0018F79C001000001, - F533213E0193CBF401000001, - 43B962E300617B93416877C2, - F5ACD268C5BE046401000001, - F51BF62F02026E5C01000001, - F5ACD261C5B5EA2001000001, - F587E16501924C7401000001, - ); - isa = PBXVariantGroup; - name = XDarwinHelp.html; - path = ""; - refType = 4; - sourceTree = ""; - }; - 02E03CA100348209CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = English; - path = English.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; -//020 -//021 -//022 -//023 -//024 -//030 -//031 -//032 -//033 -//034 - 0338412F0083BFE57F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = quartzCursor.h; - refType = 4; - sourceTree = ""; - }; -//030 -//031 -//032 -//033 -//034 -//040 -//041 -//042 -//043 -//044 - 04329610000763920A000002 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = Preferences.m; - refType = 4; - sourceTree = ""; - }; - 04329611000763920A000002 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = Preferences.h; - refType = 4; - sourceTree = ""; - }; -//040 -//041 -//042 -//043 -//044 -//080 -//081 -//082 -//083 -//084 - 080E96DDFE201D6D7F000001 = { - children = ( - 04329610000763920A000002, - 04329611000763920A000002, - 0127909600074AF60A000002, - 0127909800074B1A0A000002, - 01279092000747AA0A000002, - 1C4A3109004D8F24CE6F79C2, - ); - isa = PBXGroup; - name = Classes; - refType = 4; - sourceTree = ""; - }; - 089C165CFE840E0CC02AAC07 = { - children = ( - F533214301A4B3F001000001, - 089C165DFE840E0CC02AAC07, - F58D65DD018F798F01000001, - F533213A0193CBA201000001, - 43B962E100617B49416877C2, - F5ACD269C5BE049301000001, - F51BF62B02026DDA01000001, - F5ACD262C5B5EA4D01000001, - F587E16101924C2F01000001, - ); - isa = PBXVariantGroup; - name = InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - 089C165DFE840E0CC02AAC07 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = English; - path = English.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; -//080 -//081 -//082 -//083 -//084 -//0A0 -//0A1 -//0A2 -//0A3 -//0A4 - 0A79E19E004499A1CE6F79C2 = { - explicitFileType = wrapper.application; - isa = PBXFileReference; - path = XDarwin.app; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 0A79E19F004499A1CE6F79C2 = { - buildPhases = ( - 0A79E1A0004499A1CE6F79C2, - 0A79E1A1004499A1CE6F79C2, - 0A79E1A2004499A1CE6F79C2, - 0A79E1A3004499A1CE6F79C2, - 0A79E1A4004499A1CE6F79C2, - ); - buildSettings = { - INSTALL_PATH = /; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = XDarwin; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = app; - }; - dependencies = ( - 6EF065C903D4F0CA006877C2, - 6EF065C703D4EE19006877C2, - 6E11A986048BDFFB006877C2, - 6E7904110500F33B00EEC080, - ); - isa = PBXApplicationTarget; - name = XDarwin; - productInstallPath = /; - productName = XDarwin; - productReference = 0A79E19E004499A1CE6F79C2; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - x11app - - CFBundleTypeName - X11 Application - CFBundleTypeOSTypes - - **** - - CFBundleTypeRole - Viewer - - - CFBundleTypeExtensions - - tool - * - - CFBundleTypeName - UNIX Application - CFBundleTypeOSTypes - - **** - - CFBundleTypeRole - Viewer - - - CFBundleExecutable - XDarwin - CFBundleGetInfoString - XDarwin 1.4.0, X.Org Foundation - CFBundleIconFile - XDarwin.icns - CFBundleIdentifier - org.x.x11 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - XDarwin - CFBundlePackageType - APPL - CFBundleShortVersionString - XDarwin 1.4.0 - CFBundleSignature - ???? - CFBundleVersion - - NSHelpFile - XDarwinHelp.html - NSMainNibFile - MainMenu - NSPrincipalClass - XApplication - - -"; - }; - 0A79E1A0004499A1CE6F79C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0A79E1A1004499A1CE6F79C2 = { - buildActionMask = 2147483647; - files = ( - 0A79E1A600449EB2CE6F79C2, - 0A79E1A700449EB2CE6F79C2, - 0A79E1A800449EB2CE6F79C2, - 0A79E1A900449EB2CE6F79C2, - 0A79E1AA00449EB2CE6F79C2, - 1220774500712D2D416877C2, - F54BF6ED017D506E01000001, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0A79E1A2004499A1CE6F79C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0A79E1A3004499A1CE6F79C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0A79E1A4004499A1CE6F79C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0A79E1A600449EB2CE6F79C2 = { - fileRef = 29B97318FDCFA39411CA2CEA; - isa = PBXBuildFile; - settings = { - }; - }; - 0A79E1A700449EB2CE6F79C2 = { - fileRef = 089C165CFE840E0CC02AAC07; - isa = PBXBuildFile; - settings = { - }; - }; - 0A79E1A800449EB2CE6F79C2 = { - fileRef = 0157A37D002CF6D7CE6F79C2; - isa = PBXBuildFile; - settings = { - }; - }; - 0A79E1A900449EB2CE6F79C2 = { - fileRef = 02E03CA000348209CE6F79C2; - isa = PBXBuildFile; - settings = { - }; - }; - 0A79E1AA00449EB2CE6F79C2 = { - fileRef = 015698ED003DF345CE6F79C2; - isa = PBXBuildFile; - settings = { - }; - }; -//0A0 -//0A1 -//0A2 -//0A3 -//0A4 -//100 -//101 -//102 -//103 -//104 - 1058C7A0FEA54F0111CA2CBB = { - children = ( - F53321400193CCF001000001, - 1BE4F84D0006C9890A000002, - 1058C7A1FEA54F0111CA2CBB, - F53321410193CCF001000001, - 015EDCEA004203A8CE6F79C2, - ); - isa = PBXGroup; - name = "Linked Frameworks"; - refType = 4; - sourceTree = ""; - }; - 1058C7A1FEA54F0111CA2CBB = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Cocoa.framework; - path = /System/Library/Frameworks/Cocoa.framework; - refType = 0; - sourceTree = ""; - }; - 1058C7A2FEA54F0111CA2CBB = { - children = ( - 29B97325FDCFA39411CA2CEA, - 29B97324FDCFA39411CA2CEA, - ); - isa = PBXGroup; - name = "Other Frameworks"; - refType = 4; - sourceTree = ""; - }; -//100 -//101 -//102 -//103 -//104 -//120 -//121 -//122 -//123 -//124 - 1220774300712D2D416877C2 = { - children = ( - F533214501A4B42501000001, - 1220774400712D2D416877C2, - F58D65DE018F79A001000001, - F533213C0193CBC901000001, - 1220774600712D75416877C2, - F5ACD266C5BE03C501000001, - F51BF62D02026E1C01000001, - F5ACD25FC5B5E9AA01000001, - F587E16301924C5E01000001, - ); - isa = PBXVariantGroup; - name = Localizable.strings; - path = ""; - refType = 4; - sourceTree = ""; - }; - 1220774400712D2D416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = English; - path = English.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - 1220774500712D2D416877C2 = { - fileRef = 1220774300712D2D416877C2; - isa = PBXBuildFile; - settings = { - }; - }; - 1220774600712D75416877C2 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Japanese; - path = Japanese.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; -//120 -//121 -//122 -//123 -//124 -//170 -//171 -//172 -//173 -//174 - 170DFAFF00729A35416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = XDarwinStartup.c; - refType = 4; - sourceTree = ""; - }; - 170DFB0000729C86416877C2 = { - children = ( - 018F40FC003E1983CE6F79C2, - 018F40FE003E1988CE6F79C2, - 018F4100003E19E4CE6F79C2, - 02A1FEA6006D34BE416877C2, - ); - isa = PBXGroup; - name = IOKit; - path = ../iokit; - refType = 4; - sourceTree = ""; - }; -//170 -//171 -//172 -//173 -//174 -//190 -//191 -//192 -//193 -//194 - 19C28FACFE9D520D11CA2CBB = { - children = ( - 0A79E19E004499A1CE6F79C2, - 6EF7C58703D3BC6D00000104, - 6EF065C603D4EE19006877C2, - 6E11A985048BDFEE006877C2, - 6E7904100500F05600EEC080, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = ""; - }; -//190 -//191 -//192 -//193 -//194 -//1B0 -//1B1 -//1B2 -//1B3 -//1B4 - 1BD8DE4200B8A3567F000001 = { - children = ( - F533214401A4B40F01000001, - 1BD8DE4300B8A3567F000001, - F58D65DC018F794D01000001, - F533213B0193CBB401000001, - 1BD8DE4700B8A3C77F000001, - F5ACD264C5BE035B01000001, - F51BF62C02026E0601000001, - F5ACD25DC5B5E97701000001, - F587E16201924C5301000001, - ); - isa = PBXVariantGroup; - name = InfoPlist.strings.cpp; - path = ""; - refType = 4; - sourceTree = ""; - }; - 1BD8DE4300B8A3567F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = English; - path = English.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - 1BD8DE4400B8A38E7F000001 = { - children = ( - F533214801A4B4D701000001, - 1BD8DE4500B8A38E7F000001, - F58D65E1018F79E001000001, - F533213F0193CC2501000001, - 1BD8DE4800B8A4167F000001, - F5ACD267C5BE03FC01000001, - F51BF63002026E8D01000001, - F5ACD260C5B5E9DF01000001, - F587E16601924C9D01000001, - ); - isa = PBXVariantGroup; - name = XDarwinHelp.html.cpp; - path = ""; - refType = 4; - sourceTree = ""; - }; - 1BD8DE4500B8A38E7F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = English; - path = English.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - 1BD8DE4700B8A3C77F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Japanese; - path = Japanese.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - 1BD8DE4800B8A4167F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Japanese; - path = Japanese.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - 1BE4F84D0006C9890A000002 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Carbon.framework; - path = /System/Library/Frameworks/Carbon.framework; - refType = 0; - sourceTree = ""; - }; -//1B0 -//1B1 -//1B2 -//1B3 -//1B4 -//1C0 -//1C1 -//1C2 -//1C3 -//1C4 - 1C4A3109004D8F24CE6F79C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = XServer.h; - refType = 4; - sourceTree = ""; - }; -//1C0 -//1C1 -//1C2 -//1C3 -//1C4 -//230 -//231 -//232 -//233 -//234 - 237A34C10076E37E7F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = quartzAudio.c; - refType = 4; - sourceTree = ""; - }; - 237A34C20076E37E7F000001 = { - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - 237A34C30076E37E7F000001 = { - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; - 237A34C40076F4F07F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = quartzAudio.h; - refType = 4; - sourceTree = ""; - }; -//230 -//231 -//232 -//233 -//234 -//290 -//291 -//292 -//293 -//294 - 29B97313FDCFA39411CA2CEA = { - buildSettings = { - }; - buildStyles = ( - 237A34C20076E37E7F000001, - 237A34C30076E37E7F000001, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - knownRegions = ( - English, - Japanese, - French, - German, - Swedish, - Dutch, - Spanish, - ko, - Portuguese, - ); - mainGroup = 29B97314FDCFA39411CA2CEA; - projectDirPath = ""; - targets = ( - 0A79E19F004499A1CE6F79C2, - 6EF7C58603D3BC6D00000104, - 6E11A984048BDFEE006877C2, - 6EF065C503D4EE19006877C2, - 6E79040F0500F05600EEC080, - ); - }; - 29B97314FDCFA39411CA2CEA = { - children = ( - 080E96DDFE201D6D7F000001, - 018F40F2003E1902CE6F79C2, - 170DFB0000729C86416877C2, - 43B962CE00617089416877C2, - F5614B3D025112D901000114, - 6EC4A64C042A9597006877C2, - 32FEE13C00E07C3E7F000001, - 6EE1214104968658006877C2, - 6EC4A66D042A97FC006877C2, - 29B97315FDCFA39411CA2CEA, - 29B97317FDCFA39411CA2CEA, - 29B97323FDCFA39411CA2CEA, - 19C28FACFE9D520D11CA2CBB, - ); - isa = PBXGroup; - name = "Xmaster-Cocoa"; - path = ""; - refType = 4; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA = { - children = ( - 170DFAFF00729A35416877C2, - ); - isa = PBXGroup; - name = "Other Sources"; - path = ""; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - 29B97317FDCFA39411CA2CEA = { - children = ( - 29B97318FDCFA39411CA2CEA, - 089C165CFE840E0CC02AAC07, - 1BD8DE4200B8A3567F000001, - 1220774300712D2D416877C2, - 0157A37D002CF6D7CE6F79C2, - 02E03CA000348209CE6F79C2, - 1BD8DE4400B8A38E7F000001, - 015698ED003DF345CE6F79C2, - F54BF6EA017D500901000001, - F54BF6EC017D506E01000001, - ); - isa = PBXGroup; - name = Resources; - path = ../bundle; - refType = 4; - sourceTree = ""; - }; - 29B97318FDCFA39411CA2CEA = { - children = ( - F533214201A4B3CE01000001, - 29B97319FDCFA39411CA2CEA, - F58D65DB018F793801000001, - F53321390193CB6A01000001, - 43B962E000617B49416877C2, - F5ACD265C5BE038601000001, - F51BF62A02026DAF01000001, - F5ACD25EC5B5E98D01000001, - F587E16001924C1D01000001, - ); - isa = PBXVariantGroup; - name = MainMenu.nib; - path = ""; - refType = 4; - sourceTree = ""; - }; - 29B97319FDCFA39411CA2CEA = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = English; - path = English.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA = { - children = ( - 1058C7A0FEA54F0111CA2CBB, - 1058C7A2FEA54F0111CA2CBB, - ); - isa = PBXGroup; - name = Frameworks; - path = ""; - refType = 4; - sourceTree = ""; - }; - 29B97324FDCFA39411CA2CEA = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = AppKit.framework; - path = /System/Library/Frameworks/AppKit.framework; - refType = 0; - sourceTree = ""; - }; - 29B97325FDCFA39411CA2CEA = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Foundation.framework; - path = /System/Library/Frameworks/Foundation.framework; - refType = 0; - sourceTree = ""; - }; -//290 -//291 -//292 -//293 -//294 -//320 -//321 -//322 -//323 -//324 - 32FEE13C00E07C3E7F000001 = { - children = ( - F5269C2D01D5BC3501000001, - F5269C2E01D5BC3501000001, - ); - isa = PBXGroup; - name = "Old Cocoa Imp"; - path = ""; - refType = 4; - sourceTree = ""; - }; -//320 -//321 -//322 -//323 -//324 -//350 -//351 -//352 -//353 -//354 - 3576829A0077B8F17F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = quartzCursor.c; - refType = 4; - sourceTree = ""; - }; -//350 -//351 -//352 -//353 -//354 -//3E0 -//3E1 -//3E2 -//3E3 -//3E4 - 3E74E03600863F047F000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = darwinClut8.h; - refType = 4; - sourceTree = ""; - }; -//3E0 -//3E1 -//3E2 -//3E3 -//3E4 -//430 -//431 -//432 -//433 -//434 - 43B962CE00617089416877C2 = { - children = ( - 6EE9B21604E859C200CA7FEA, - 6E97A0F505079F9100B8294C, - 6E5F5F030553815A008FEAD7, - 6E5F5F040553815A008FEAD7, - 018F40F8003E1979CE6F79C2, - 018F40FA003E197ECE6F79C2, - 237A34C10076E37E7F000001, - 237A34C40076F4F07F000001, - 43B962CF00617089416877C2, - F5582948015DAD3B01000001, - 6E5F5F0105537A5F008FEAD7, - 43B962D000617089416877C2, - 43B962D100617089416877C2, - 02A1FEA8006D38F0416877C2, - ); - isa = PBXGroup; - name = Quartz; - path = ""; - refType = 4; - sourceTree = ""; - }; - 43B962CF00617089416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = quartzCocoa.m; - refType = 4; - sourceTree = ""; - }; - 43B962D000617089416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = quartzPasteboard.c; - refType = 4; - sourceTree = ""; - }; - 43B962D100617089416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = quartzPasteboard.h; - refType = 4; - sourceTree = ""; - }; - 43B962E000617B49416877C2 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = Japanese; - path = Japanese.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - 43B962E100617B49416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Japanese; - path = Japanese.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - 43B962E200617B93416877C2 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = Japanese; - path = Japanese.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - 43B962E300617B93416877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = Japanese; - path = Japanese.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; -//430 -//431 -//432 -//433 -//434 -//6E0 -//6E1 -//6E2 -//6E3 -//6E4 - 6E11A97F048BDFEE006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E11A980048BDFEE006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E11A981048BDFEE006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E11A982048BDFEE006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E11A983048BDFEE006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E11A984048BDFEE006877C2 = { - buildPhases = ( - 6E11A97F048BDFEE006877C2, - 6E11A980048BDFEE006877C2, - 6E11A981048BDFEE006877C2, - 6E11A982048BDFEE006877C2, - 6E11A983048BDFEE006877C2, - ); - buildSettings = { - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = glxCGL; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = bundle; - }; - dependencies = ( - ); - isa = PBXBundleTarget; - name = glxCGL; - productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; - productName = glxCGL; - productReference = 6E11A985048BDFEE006877C2; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - glxCGL - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - GLX bundle using Apple's OpenGL - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1 - CFBundleSignature - ???? - CFBundleVersion - 0.1 - - -"; - }; - 6E11A985048BDFEE006877C2 = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = glxCGL.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E11A986048BDFFB006877C2 = { - isa = PBXTargetDependency; - target = 6E11A984048BDFEE006877C2; - targetProxy = 6E4CAF650702464F001A7398; - }; - 6E4CAF630702464F001A7398 = { - containerPortal = 29B97313FDCFA39411CA2CEA; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 6EF7C58603D3BC6D00000104; - remoteInfo = glxAGL; - }; - 6E4CAF640702464F001A7398 = { - containerPortal = 29B97313FDCFA39411CA2CEA; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 6E79040F0500F05600EEC080; - remoteInfo = xpr; - }; - 6E4CAF650702464F001A7398 = { - containerPortal = 29B97313FDCFA39411CA2CEA; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 6E11A984048BDFEE006877C2; - remoteInfo = glxCGL; - }; - 6E4CAF660702464F001A7398 = { - containerPortal = 29B97313FDCFA39411CA2CEA; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 6EF065C503D4EE19006877C2; - remoteInfo = glxMesa; - }; - 6E5F5F0005537A1A008FEAD7 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = darwinKeyboard.h; - refType = 4; - sourceTree = ""; - }; - 6E5F5F0105537A5F008FEAD7 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = quartzKeyboard.c; - refType = 4; - sourceTree = ""; - }; - 6E5F5F030553815A008FEAD7 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = keysym2ucs.c; - refType = 4; - sourceTree = ""; - }; - 6E5F5F040553815A008FEAD7 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = keysym2ucs.h; - refType = 4; - sourceTree = ""; - }; - 6E6656EC048832CF006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = "x-hook.c"; - refType = 4; - sourceTree = ""; - }; - 6E6656ED048832CF006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = "x-hook.h"; - refType = 4; - sourceTree = ""; - }; - 6E6656F0048832EC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = dri.c; - refType = 4; - sourceTree = ""; - }; - 6E6656F1048832EC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = dri.h; - refType = 4; - sourceTree = ""; - }; - 6E6656F2048832EC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = dristruct.h; - refType = 4; - sourceTree = ""; - }; - 6E6656F3048832F9006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = appledri.c; - refType = 4; - sourceTree = ""; - }; - 6E79040104FD5ED900EEC080 = { - children = ( - 6E79040204FD5EDA00EEC080, - 6E79040304FD5EDA00EEC080, - 6E79040404FD5EDA00EEC080, - ); - isa = PBXGroup; - name = "Safe Alpha"; - path = safeAlpha; - refType = 4; - sourceTree = ""; - }; - 6E79040204FD5EDA00EEC080 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = safeAlpha.h; - refType = 4; - sourceTree = ""; - }; - 6E79040304FD5EDA00EEC080 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = safeAlphaPicture.c; - refType = 4; - sourceTree = ""; - }; - 6E79040404FD5EDA00EEC080 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = safeAlphaWindow.c; - refType = 4; - sourceTree = ""; - }; - 6E79040A0500F05600EEC080 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E79040B0500F05600EEC080 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E79040C0500F05600EEC080 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E79040D0500F05600EEC080 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E79040E0500F05600EEC080 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6E79040F0500F05600EEC080 = { - buildPhases = ( - 6E79040A0500F05600EEC080, - 6E79040B0500F05600EEC080, - 6E79040C0500F05600EEC080, - 6E79040D0500F05600EEC080, - 6E79040E0500F05600EEC080, - ); - buildSettings = { - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = xpr; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = bundle; - }; - dependencies = ( - ); - isa = PBXBundleTarget; - name = xpr; - productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; - productName = xpr; - productReference = 6E7904100500F05600EEC080; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - xpr - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Xplugin rootless implementation - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1 - CFBundleSignature - ???? - CFBundleVersion - 0.1 - - -"; - }; - 6E7904100500F05600EEC080 = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = xpr.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6E7904110500F33B00EEC080 = { - isa = PBXTargetDependency; - target = 6E79040F0500F05600EEC080; - targetProxy = 6E4CAF640702464F001A7398; - }; - 6E97A0F2050798B100B8294C = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xprAppleWM.c; - refType = 4; - sourceTree = ""; - }; - 6E97A0F305079B6500B8294C = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = crAppleWM.m; - refType = 4; - sourceTree = ""; - }; - 6E97A0F505079F9100B8294C = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = applewmExt.h; - refType = 4; - sourceTree = ""; - }; - 6EA0B3AF0544A9CC006877C2 = { - children = ( - 6EA0B3B00544A9CC006877C2, - 6EA0B3B10544A9CC006877C2, - 6EA0B3B20544A9CC006877C2, - 6EA0B3B30544A9CC006877C2, - 6EA0B3B40544A9CC006877C2, - 6EA0B3B50544A9CC006877C2, - 6EA0B3B60544A9CC006877C2, - 6EA0B3B70544A9CC006877C2, - ); - isa = PBXGroup; - name = Acceleration; - path = accel; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B00544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = rlAccel.h; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B10544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlBlt.c; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B20544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlCopy.c; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B30544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlFill.c; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B40544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlFillRect.c; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B50544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlFillSpans.c; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B60544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlGlyph.c; - refType = 4; - sourceTree = ""; - }; - 6EA0B3B70544A9CC006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rlSolid.c; - refType = 4; - sourceTree = ""; - }; - 6EA8EEC80445E25C006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = rootlessConfig.h; - refType = 4; - sourceTree = ""; - }; - 6EC4A64C042A9597006877C2 = { - children = ( - 6EC4A65D042A9654006877C2, - 6EC4A65E042A9654006877C2, - 6EC4A65F042A9654006877C2, - 6EA8EEC80445E25C006877C2, - 6EC4A661042A9654006877C2, - 6EC4A662042A9654006877C2, - 6EC4A660042A9654006877C2, - 6EC4A663042A9654006877C2, - 6EC4A664042A9654006877C2, - 6EA0B3AF0544A9CC006877C2, - 6E79040104FD5ED900EEC080, - ); - isa = PBXGroup; - name = Rootless; - path = ../../../miext/rootless; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - 6EC4A65D042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = rootless.h; - refType = 4; - sourceTree = ""; - }; - 6EC4A65E042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rootlessCommon.c; - refType = 4; - sourceTree = ""; - }; - 6EC4A65F042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = rootlessCommon.h; - refType = 4; - sourceTree = ""; - }; - 6EC4A660042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = rootlessWindow.h; - refType = 4; - sourceTree = ""; - }; - 6EC4A661042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rootlessScreen.c; - refType = 4; - sourceTree = ""; - }; - 6EC4A662042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rootlessWindow.c; - refType = 4; - sourceTree = ""; - }; - 6EC4A663042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rootlessGC.c; - refType = 4; - sourceTree = ""; - }; - 6EC4A664042A9654006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = rootlessValTree.c; - refType = 4; - sourceTree = ""; - }; - 6EC4A66D042A97FC006877C2 = { - children = ( - 6EF471A004478DE0006877C2, - 6E6656F3048832F9006877C2, - 6E6656F0048832EC006877C2, - 6E6656F1048832EC006877C2, - 6E6656F2048832EC006877C2, - 6ECF218404589E4D006877C2, - 6E97A0F2050798B100B8294C, - 6ECF218604589F40006877C2, - 6EF4719E04478B08006877C2, - 6EDDB2DF04508B2C006877C2, - 6EF471A204479263006877C2, - 6EF471A404479263006877C2, - 6E6656EC048832CF006877C2, - 6E6656ED048832CF006877C2, - 6EF471A504479263006877C2, - 6EF471A304479263006877C2, - ); - isa = PBXGroup; - path = xpr; - refType = 4; - sourceTree = ""; - }; - 6ECF218404589E4D006877C2 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = xpr.h; - refType = 4; - sourceTree = ""; - }; - 6ECF218604589F40006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xprCursor.c; - refType = 4; - sourceTree = ""; - }; - 6EDDB2DF04508B2C006877C2 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xprScreen.c; - refType = 4; - sourceTree = ""; - }; - 6EE1214104968658006877C2 = { - children = ( - 6EE1214304968692006877C2, - 6EE1214404968692006877C2, - 6EE1214204968692006877C2, - 6E97A0F305079B6500B8294C, - 6EE1214504968692006877C2, - 6EE1214604968692006877C2, - ); - isa = PBXGroup; - path = cr; - refType = 4; - sourceTree = ""; - }; - 6EE1214204968692006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cr.h; - refType = 4; - sourceTree = ""; - }; - 6EE1214304968692006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = XView.m; - refType = 4; - sourceTree = ""; - }; - 6EE1214404968692006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = XView.h; - refType = 4; - sourceTree = ""; - }; - 6EE1214504968692006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = crFrame.m; - refType = 4; - sourceTree = ""; - }; - 6EE1214604968692006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = crScreen.m; - refType = 4; - sourceTree = ""; - }; - 6EE9B21604E859C200CA7FEA = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = applewm.c; - refType = 4; - sourceTree = ""; - }; - 6EF065C003D4EE19006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF065C103D4EE19006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF065C203D4EE19006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF065C303D4EE19006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF065C403D4EE19006877C2 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF065C503D4EE19006877C2 = { - buildPhases = ( - 6EF065C003D4EE19006877C2, - 6EF065C103D4EE19006877C2, - 6EF065C203D4EE19006877C2, - 6EF065C303D4EE19006877C2, - 6EF065C403D4EE19006877C2, - ); - buildSettings = { - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = glxMesa; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = bundle; - }; - dependencies = ( - ); - isa = PBXBundleTarget; - name = glxMesa; - productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; - productName = glxMesa; - productReference = 6EF065C603D4EE19006877C2; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - glxMesa - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - GLX bundle with Mesa - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1 - CFBundleSignature - ???? - CFBundleVersion - 0.1 - - -"; - }; - 6EF065C603D4EE19006877C2 = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = glxMesa.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6EF065C703D4EE19006877C2 = { - isa = PBXTargetDependency; - target = 6EF065C503D4EE19006877C2; - targetProxy = 6E4CAF660702464F001A7398; - }; - 6EF065C903D4F0CA006877C2 = { - isa = PBXTargetDependency; - target = 6EF7C58603D3BC6D00000104; - targetProxy = 6E4CAF630702464F001A7398; - }; - 6EF4719E04478B08006877C2 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = xprFrame.c; - refType = 4; - sourceTree = ""; - }; - 6EF471A004478DE0006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = Xplugin.h; - refType = 4; - sourceTree = ""; - }; - 6EF471A204479263006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = "x-hash.c"; - refType = 4; - sourceTree = ""; - }; - 6EF471A304479263006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = "x-list.h"; - refType = 4; - sourceTree = ""; - }; - 6EF471A404479263006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = "x-hash.h"; - refType = 4; - sourceTree = ""; - }; - 6EF471A504479263006877C2 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = "x-list.c"; - refType = 4; - sourceTree = ""; - }; - 6EF7C58103D3BC6D00000104 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF7C58203D3BC6D00000104 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF7C58303D3BC6D00000104 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF7C58403D3BC6D00000104 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF7C58503D3BC6D00000104 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 6EF7C58603D3BC6D00000104 = { - buildPhases = ( - 6EF7C58103D3BC6D00000104, - 6EF7C58203D3BC6D00000104, - 6EF7C58303D3BC6D00000104, - 6EF7C58403D3BC6D00000104, - 6EF7C58503D3BC6D00000104, - ); - buildSettings = { - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = glxAGL; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = bundle; - }; - dependencies = ( - ); - isa = PBXBundleTarget; - name = glxAGL; - productName = glxAGL; - productReference = 6EF7C58703D3BC6D00000104; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - glxAGL - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - GLX bundle using AGL framework - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1 - CFBundleSignature - ???? - CFBundleVersion - 0.1 - - -"; - }; - 6EF7C58703D3BC6D00000104 = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = glxAGL.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; -//6E0 -//6E1 -//6E2 -//6E3 -//6E4 -//F50 -//F51 -//F52 -//F53 -//F54 - F51BF62A02026DAF01000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = Portuguese; - path = Portuguese.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F51BF62B02026DDA01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Portuguese; - path = Portuguese.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - F51BF62C02026E0601000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Portuguese; - path = Portuguese.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F51BF62D02026E1C01000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Portuguese; - path = Portuguese.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F51BF62E02026E3501000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = Portuguese; - path = Portuguese.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F51BF62F02026E5C01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = Portuguese; - path = Portuguese.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F51BF63002026E8D01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Portuguese; - path = Portuguese.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F5269C2D01D5BC3501000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = pseudoramiX.c; - refType = 4; - sourceTree = ""; - }; - F5269C2E01D5BC3501000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = pseudoramiX.h; - refType = 4; - sourceTree = ""; - }; - F53321390193CB6A01000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = German; - path = German.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F533213A0193CBA201000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = German; - path = German.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - F533213B0193CBB401000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = German; - path = German.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F533213C0193CBC901000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = German; - path = German.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F533213D0193CBE001000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = German; - path = German.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F533213E0193CBF401000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = German; - path = German.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F533213F0193CC2501000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = German; - path = German.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F53321400193CCF001000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = ApplicationServices.framework; - path = /System/Library/Frameworks/ApplicationServices.framework; - refType = 0; - sourceTree = ""; - }; - F53321410193CCF001000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = CoreAudio.framework; - path = /System/Library/Frameworks/CoreAudio.framework; - refType = 0; - sourceTree = ""; - }; - F533214201A4B3CE01000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = Dutch; - path = Dutch.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F533214301A4B3F001000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Dutch; - path = Dutch.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - F533214401A4B40F01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Dutch; - path = Dutch.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F533214501A4B42501000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Dutch; - path = Dutch.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F533214601A4B45401000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = Dutch; - path = Dutch.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F533214701A4B48301000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = Dutch; - path = Dutch.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F533214801A4B4D701000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Dutch; - path = Dutch.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F54BF6EA017D500901000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - path = startXClients.cpp; - refType = 4; - sourceTree = ""; - }; - F54BF6EC017D506E01000001 = { - isa = PBXFileReference; - lastKnownFileType = text.script.sh; - path = startXClients; - refType = 4; - sourceTree = ""; - }; - F54BF6ED017D506E01000001 = { - fileRef = F54BF6EC017D506E01000001; - isa = PBXBuildFile; - settings = { - }; - }; - F5582948015DAD3B01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = quartzCommon.h; - refType = 4; - sourceTree = ""; - }; - F5614B3B0251124C01000114 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = fullscreen.c; - refType = 4; - sourceTree = ""; - }; - F5614B3D025112D901000114 = { - children = ( - F5614B3B0251124C01000114, - 3576829A0077B8F17F000001, - 0338412F0083BFE57F000001, - ); - isa = PBXGroup; - path = fullscreen; - refType = 4; - sourceTree = ""; - }; - F587E16001924C1D01000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = Swedish; - path = Swedish.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F587E16101924C2F01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Swedish; - path = Swedish.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - F587E16201924C5301000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Swedish; - path = Swedish.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F587E16301924C5E01000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Swedish; - path = Swedish.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F587E16401924C6901000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = Swedish; - path = Swedish.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F587E16501924C7401000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = Swedish; - path = Swedish.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F587E16601924C9D01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Swedish; - path = Swedish.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F58D65DB018F793801000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = French; - path = French.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F58D65DC018F794D01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = French; - path = French.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F58D65DD018F798F01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = French; - path = French.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - F58D65DE018F79A001000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = French; - path = French.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F58D65DF018F79B101000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = French; - path = French.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F58D65E0018F79C001000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = French; - path = French.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F58D65E1018F79E001000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = French; - path = French.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F5A94EF10314BAC70100011B = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = darwinEvents.c; - refType = 4; - sourceTree = ""; - }; - F5ACD25CC5B5E96601000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = Spanish; - path = Spanish.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F5ACD25DC5B5E97701000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Spanish; - path = Spanish.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F5ACD25EC5B5E98D01000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = Spanish; - path = Spanish.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F5ACD25FC5B5E9AA01000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Spanish; - path = Spanish.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F5ACD260C5B5E9DF01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = Spanish; - path = Spanish.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F5ACD261C5B5EA2001000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = Spanish; - path = Spanish.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F5ACD262C5B5EA4D01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = Spanish; - path = Spanish.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - F5ACD263C5BE031F01000001 = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - name = ko; - path = ko.lproj/Credits.rtf; - refType = 4; - sourceTree = ""; - }; - F5ACD264C5BE035B01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = ko; - path = ko.lproj/InfoPlist.strings.cpp; - refType = 4; - sourceTree = ""; - }; - F5ACD265C5BE038601000001 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - name = ko; - path = ko.lproj/MainMenu.nib; - refType = 4; - sourceTree = ""; - }; - F5ACD266C5BE03C501000001 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = ko; - path = ko.lproj/Localizable.strings; - refType = 4; - sourceTree = ""; - }; - F5ACD267C5BE03FC01000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = ko; - path = ko.lproj/XDarwinHelp.html.cpp; - refType = 4; - sourceTree = ""; - }; - F5ACD268C5BE046401000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.html; - name = ko; - path = ko.lproj/XDarwinHelp.html; - refType = 4; - sourceTree = ""; - }; - F5ACD269C5BE049301000001 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = ko; - path = ko.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - }; - rootObject = 29B97313FDCFA39411CA2CEA; -} diff --git a/hw/darwin/quartz/XDarwinStartup.c b/hw/darwin/quartz/XDarwinStartup.c deleted file mode 100644 index 3ad4898a6..000000000 --- a/hw/darwin/quartz/XDarwinStartup.c +++ /dev/null @@ -1,166 +0,0 @@ -/************************************************************** - * - * Startup program for Darwin X servers - * - * This program selects the appropriate X server to launch: - * XDarwin IOKit X server (default) - * XDarwinQuartz A soft link to the Quartz X server - * executable (-quartz etc. option) - * - * If told to idle, the program will simply pause and not - * launch any X server. This is to support startx being - * run by XDarwin.app. - * - **************************************************************/ -/* - * Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * TORREY T. LYONS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Except as contained in this notice, the name of Torrey T. Lyons shall not - * be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from - * Torrey T. Lyons. - */ -#ifdef HAVE_XORG_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include -#include - -// Macros to build the path name -#ifndef XBINDIR -#define XBINDIR /usr/X11/bin -#endif -#define STR(s) #s -#define XSTRPATH(s) STR(s) "/" -#define XPATH(file) XSTRPATH(XBINDIR) STR(file) - -int main( - int argc, - char *argv[] ) -{ - int i, j, quartzMode = -1; - char **newargv; - - // Check if we are going to run in Quartz mode or idle - // to support startx from the Quartz server. The last - // parameter in the list is the one used. - for (i = argc-1; i; i--) { - if (!strcmp(argv[i], "-idle")) { - pause(); - return 0; - - } else if (!strcmp(argv[i], "-quartz") || - !strcmp(argv[i], "-rootless") || - !strcmp(argv[i], "-fullscreen")) - { - quartzMode = 1; - break; - - } else if (!strcmp(argv[i], "-iokit")) { - quartzMode = 0; - break; - } - } - - if (quartzMode == -1) { -#ifdef HAS_CG_MACH_PORT - // Check if the CoreGraphics window server is running. - // Mike Paquette says this is the fastest way to determine if it is running. - CFMachPortRef cgMachPortRef = CGWindowServerCFMachPort(); - if (cgMachPortRef == NULL) - quartzMode = 0; - else - quartzMode = 1; -#else - // On older systems we assume IOKit mode. - quartzMode = 0; -#endif - } - - if (quartzMode) { - // Launch the X server for the quartz modes - - char quartzPath[PATH_MAX+1]; - int pathLength; - OSStatus theStatus; - CFURLRef appURL; - CFStringRef appPath; - Boolean success; - - // Build the new argument list - newargv = (char **) malloc((argc+2) * sizeof(char *)); - for (j = argc; j; j--) - newargv[j] = argv[j]; - newargv[argc] = "-nostartx"; - newargv[argc+1] = NULL; - - // Use the XDarwinQuartz soft link if it is valid - pathLength = readlink(XPATH(XDarwinQuartz), quartzPath, PATH_MAX); - if (pathLength != -1) { - quartzPath[pathLength] = '\0'; - newargv[0] = quartzPath; - execv(newargv[0], newargv); - } - - // Otherwise query LaunchServices for the location of the XDarwin application - theStatus = LSFindApplicationForInfo(kLSUnknownCreator, - CFSTR("org.x.x11"), - NULL, NULL, &appURL); - if (theStatus) { - fprintf(stderr, "Could not find the XDarwin application. (Error = 0x%lx)\n", theStatus); - fprintf(stderr, "Launch XDarwin once from the Finder.\n"); - return theStatus; - } - - appPath = CFURLCopyFileSystemPath (appURL, kCFURLPOSIXPathStyle); - success = CFStringGetCString(appPath, quartzPath, PATH_MAX, CFStringGetSystemEncoding()); - if (! success) { - fprintf(stderr, "Could not find path to XDarwin application.\n"); - return success; - } - - // Launch the XDarwin application - strncat(quartzPath, "/Contents/MacOS/XDarwin", PATH_MAX); - newargv[0] = quartzPath; - execv(newargv[0], newargv); - fprintf(stderr, "Could not start XDarwin application at %s.\n", newargv[0]); - return errno; - - } else { - - // Build the new argument list - newargv = (char **) malloc((argc+1) * sizeof(char *)); - for (j = argc; j; j--) - newargv[j] = argv[j]; - newargv[0] = "XDarwin"; - newargv[argc] = NULL; - - // Launch the IOKit X server - execvp(newargv[0], newargv); - fprintf(stderr, "Could not start XDarwin IOKit X server.\n"); - return errno; - } -} diff --git a/hw/darwin/quartz/XDarwinStartup.man b/hw/darwin/quartz/XDarwinStartup.man deleted file mode 100644 index 1ad3bbced..000000000 --- a/hw/darwin/quartz/XDarwinStartup.man +++ /dev/null @@ -1,74 +0,0 @@ -.TH XDarwinStartup 1 -.SH NAME -XDarwinStartup - Startup program for the XDarwin X window server -.SH SYNOPSIS -.B XDarwinStartup -[\fI-iokit\fP] -[\fI-fullscreen\fP] -[\fI-rootless\fP] -[\fI-quartz\fP] -[\fI-idle\fP] -[\fIoptions\fP] -.SH DESCRIPTION -The \fIXDarwin(1)\fP X window server can be run in a variety of different -modes and is actually two different executables. The IOKit X server, -XDarwin, is used when running from the console. It is most commonly -located in __XBinDir__. The Quartz X server, for running in parallel with -Aqua, is a full-fledged Mac OS X application that can be started from -the Finder. Its application bundle is XDarwin.app, which is typically -located in /Applications. -.I XDarwinStartup -allows easy switching between these X servers and auto-detection of the -appropriate one to use when launching from the command line. -When run without any arguments, -.I XDarwinStartup -will start the Quartz X server if the Core Graphics window server -is currently running. Otherwise it will start the IOKit X server. -.PP -To locate the Quartz X server, -.I XDarwinStartup -will try to read the soft link at __XBinDir__/XDarwinQuartz. -This is typically a soft link to the executable of the XDarwin.app -application. If this fails, -.I XDarwinStartup -will call Launch Services to locate XDarwin.app. -.PP -To start the IOKit X server, -.I XDarwinStartup -will run the XDarwin executable, which should be present in the -user's path. -.SH OPTIONS -.I XDarwinStartup -accepts and passes on all options to the X server it -launches. In addition the following options have specific effects: -.TP 8 -.B \-iokit -Launch the IOKit X server. -.TP 8 -.B \-fullscreen -Launch the Quartz X server to run in full screen mode. -.TP 8 -.B \-rootless -Launch the Quartz X server to run in rootless mode. -.TP 8 -.B \-quartz -Launch the Quartz X server. -.TP 8 -.B \-idle -Pause and do nothing. This option is used by XDarwin.app when it is -started from the Finder. -.SH FILES -.TP 30 -__XBinDir__/XDarwin -IOKit mode X server -.TP 30 -/Applications/XDarwin.app -Quartz mode X server -.TP 30 -__XBinDir__/XDarwinQuartz -Soft link to Quartz mode X server executable -.SH SEE ALSO -XDarwin(1) -.SH BUGS -The path to XDarwinQuartz should not be hard coded. - diff --git a/hw/darwin/quartz/XServer.h b/hw/darwin/quartz/XServer.h deleted file mode 100644 index 030ccb51f..000000000 --- a/hw/darwin/quartz/XServer.h +++ /dev/null @@ -1,136 +0,0 @@ -// -// XServer.h -// -/* - * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved. - * Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization. - */ - -#define BOOL xBOOL -#include -#undef BOOL - -#import - -@interface XServer : NSObject { - // Server state - int serverState; - NSRecursiveLock *serverLock; - NSMutableArray *pendingClients; - BOOL serverVisible; - BOOL rootlessMenuBarVisible; - BOOL queueShowServer; - BOOL quitWithoutQuery; - BOOL pendingAppQuitReply; - UInt32 mouseState; - unsigned short swallowedKey; - BOOL sendServerEvents; - BOOL x11Active; - - // Aqua interface - IBOutlet NSWindow *modeWindow; - IBOutlet NSButton *startupModeButton; - IBOutlet NSButton *startFullScreenButton; - IBOutlet NSButton *startRootlessButton; - IBOutlet NSWindow *helpWindow; - IBOutlet NSButton *startupHelpButton; - IBOutlet NSPanel *switchWindow; - - // Menu elements setable by Apple-WM extension - IBOutlet NSMenu *windowMenu; - IBOutlet NSMenuItem *windowSeparator; - IBOutlet NSMenu *dockMenu; - int checkedWindowItem; -} - -- (id)init; - -- (BOOL)translateEvent:(NSEvent *)anEvent; -- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent; - -- (NSString *)makeSafePath:(NSString *)path; - -- (BOOL)loadDisplayBundle; -- (void)startX; -- (void)finishStartX; -- (BOOL)startXClients; -- (void)runClient:(NSString *)filename; -- (void)run; -- (void)toggle; -- (void)showServer:(BOOL)show; -- (void)forceShowServer:(BOOL)show; -- (void)setRootClip:(BOOL)enable; -- (void)readPasteboard; -- (void)writePasteboard; -- (void)quitServer; -- (void)sendXEvent:(xEvent *)xe; -- (void)sendShowHide:(BOOL)show; -- (void)clientProcessDone:(int)clientStatus; -- (void)activateX11:(BOOL)state; -- (void)windowBecameKey:(NSNotification *)notification; -- (void)setX11WindowList:(NSArray *)list; -- (void)setX11WindowCheck:(NSNumber *)nn; - -// Aqua interface actions -- (IBAction)startFullScreen:(id)sender; -- (IBAction)startRootless:(id)sender; -- (IBAction)closeHelpAndShow:(id)sender; -- (IBAction)showSwitchPanel:(id)sender; -- (IBAction)showAction:(id)sender; -- (IBAction)itemSelected:(id)sender; -- (IBAction)nextWindow:(id)sender; -- (IBAction)previousWindow:(id)sender; -- (IBAction)performClose:(id)sender; -- (IBAction)performMiniaturize:(id)sender; -- (IBAction)performZoom:(id)sender; -- (IBAction)bringAllToFront:(id)sender; -- (IBAction)copy:(id)sender; - -// NSApplication delegate -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; -- (void)applicationWillTerminate:(NSNotification *)aNotification; -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification; -- (void)applicationDidHide:(NSNotification *)aNotification; -- (void)applicationDidUnhide:(NSNotification *)aNotification; -- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag; -- (void)applicationWillResignActive:(NSNotification *)aNotification; -- (void)applicationWillBecomeActive:(NSNotification *)aNotification; -- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename; - -// NSPort delegate -- (void)handlePortMessage:(NSPortMessage *)portMessage; - -@end - -// X server states -enum { - server_NotStarted, - server_Starting, - server_Running, - server_Quitting, - server_Done -}; diff --git a/hw/darwin/quartz/XServer.m b/hw/darwin/quartz/XServer.m deleted file mode 100644 index 058741522..000000000 --- a/hw/darwin/quartz/XServer.m +++ /dev/null @@ -1,1539 +0,0 @@ -// -// XServer.m -// -// This class handles the interaction between the Cocoa front-end -// and the Darwin X server thread. -// -// Created by Andreas Monitzer on January 6, 2001. -// -/* - * Copyright (c) 2001 Andreas Monitzer. All Rights Reserved. - * Copyright (c) 2002-2005 Torrey T. Lyons. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization. - */ -#ifdef HAVE_XORG_CONFIG_H -#include -#endif -#include "quartzCommon.h" - -#define BOOL xBOOL -#include "X11/X.h" -#include "X11/Xproto.h" -#include "os.h" -#include "opaque.h" -#include "darwin.h" -#include "quartz.h" -#define _APPLEWM_SERVER_ -#include "X11/extensions/applewm.h" -#include "applewmExt.h" -#undef BOOL - -#import "XServer.h" -#import "Preferences.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -// For power management notifications -#import -#import -#import -#import -#import - -// Types of shells -enum { - shell_Unknown, - shell_Bourne, - shell_C -}; - -typedef struct { - char *name; - int type; -} shellList_t; - -static shellList_t const shellList[] = { - { "csh", shell_C }, // standard C shell - { "tcsh", shell_C }, // ... needs no introduction - { "sh", shell_Bourne }, // standard Bourne shell - { "zsh", shell_Bourne }, // Z shell - { "bash", shell_Bourne }, // GNU Bourne again shell - { NULL, shell_Unknown } -}; - -extern int argcGlobal; -extern char **argvGlobal; -extern char **envpGlobal; -extern int main(int argc, char *argv[], char *envp[]); -extern void HideMenuBar(void); -extern void ShowMenuBar(void); -static void childDone(int sig); -static void powerDidChange(void *x, io_service_t y, natural_t messageType, - void *messageArgument); - -static NSPort *signalPort; -static NSPort *returnPort; -static NSPortMessage *signalMessage; -static pid_t clientPID; -static XServer *oneXServer; -static NSRect aquaMenuBarBox; -static io_connect_t root_port; - - -@implementation XServer - -- (id)init -{ - self = [super init]; - oneXServer = self; - - serverState = server_NotStarted; - serverLock = [[NSRecursiveLock alloc] init]; - pendingClients = nil; - clientPID = 0; - sendServerEvents = NO; - x11Active = YES; - serverVisible = NO; - rootlessMenuBarVisible = YES; - queueShowServer = YES; - quartzServerQuitting = NO; - pendingAppQuitReply = NO; - mouseState = 0; - - // set up a port to safely send messages to main thread from server thread - signalPort = [[NSPort port] retain]; - returnPort = [[NSPort port] retain]; - signalMessage = [[NSPortMessage alloc] initWithSendPort:signalPort - receivePort:returnPort components:nil]; - - // set up receiving end - [signalPort setDelegate:self]; - [[NSRunLoop currentRunLoop] addPort:signalPort - forMode:NSDefaultRunLoopMode]; - [[NSRunLoop currentRunLoop] addPort:signalPort - forMode:NSModalPanelRunLoopMode]; - - return self; -} - -- (NSApplicationTerminateReply) - applicationShouldTerminate:(NSApplication *)sender -{ - // Quit if the X server is not running - if ([serverLock tryLock]) { - quartzServerQuitting = YES; - serverState = server_Done; - if (clientPID != 0) - kill(clientPID, SIGINT); - return NSTerminateNow; - } - - // Hide the X server and stop sending it events - [self showServer:NO]; - sendServerEvents = NO; - - if (!quitWithoutQuery && (clientPID != 0 || !quartzStartClients)) { - int but; - - but = NSRunAlertPanel(NSLocalizedString(@"Quit X server?",@""), - NSLocalizedString(@"Quitting the X server will terminate any running X Window System programs.",@""), - NSLocalizedString(@"Quit",@""), - NSLocalizedString(@"Cancel",@""), - nil); - - switch (but) { - case NSAlertDefaultReturn: // quit - break; - case NSAlertAlternateReturn: // cancel - if (serverState == server_Running) - sendServerEvents = YES; - return NSTerminateCancel; - } - } - - quartzServerQuitting = YES; - if (clientPID != 0) - kill(clientPID, SIGINT); - - // At this point the X server is either running or starting. - if (serverState == server_Starting) { - // Quit will be queued later when server is running - pendingAppQuitReply = YES; - return NSTerminateLater; - } else if (serverState == server_Running) { - [self quitServer]; - } - - return NSTerminateNow; -} - -// Ensure that everything has quit cleanly -- (void)applicationWillTerminate:(NSNotification *)aNotification -{ - // Make sure the client process has finished - if (clientPID != 0) { - NSLog(@"Waiting on client process..."); - sleep(2); - - // If the client process hasn't finished yet, kill it off - if (clientPID != 0) { - int clientStatus; - NSLog(@"Killing client process..."); - killpg(clientPID, SIGKILL); - waitpid(clientPID, &clientStatus, 0); - } - } - - // Wait until the X server thread quits - [serverLock lock]; -} - -// returns YES when event was handled -- (BOOL)translateEvent:(NSEvent *)anEvent -{ - xEvent xe; - static BOOL mouse1Pressed = NO; - NSEventType type; - unsigned int flags; - - if (!sendServerEvents) { - return NO; - } - - type = [anEvent type]; - flags = [anEvent modifierFlags]; - - if (!quartzRootless) { - // Check for switch keypress - if ((type == NSKeyDown) && (![anEvent isARepeat]) && - ([anEvent keyCode] == [Preferences keyCode])) - { - unsigned int switchFlags = [Preferences modifiers]; - - // Switch if all the switch modifiers are pressed, while none are - // pressed that should not be, except for caps lock. - if (((flags & switchFlags) == switchFlags) && - ((flags & ~(switchFlags | NSAlphaShiftKeyMask)) == 0)) - { - [self toggle]; - return YES; - } - } - - if (!serverVisible) - return NO; - } - - memset(&xe, 0, sizeof(xe)); - - switch (type) { - case NSLeftMouseUp: - if (quartzRootless && !mouse1Pressed) { - // MouseUp after MouseDown in menu - ignore - return NO; - } - mouse1Pressed = NO; - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 1; - break; - - case NSLeftMouseDown: - if (quartzRootless) { - // Check that event is in X11 window - if (!quartzProcs->IsX11Window([anEvent window], - [anEvent windowNumber])) - { - if (x11Active) - [self activateX11:NO]; - return NO; - } else { - if (!x11Active) - [self activateX11:YES]; - } - } - mouse1Pressed = YES; - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = ButtonPress; - xe.u.u.detail = 1; - break; - - case NSRightMouseUp: - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = ButtonRelease; - xe.u.u.detail = 3; - break; - - case NSRightMouseDown: - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = ButtonPress; - xe.u.u.detail = 3; - break; - - case NSOtherMouseUp: - { - int hwButton = [anEvent buttonNumber]; - - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = ButtonRelease; - xe.u.u.detail = (hwButton == 2) ? hwButton : hwButton + 1; - break; - } - - case NSOtherMouseDown: - { - int hwButton = [anEvent buttonNumber]; - - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = ButtonPress; - xe.u.u.detail = (hwButton == 2) ? hwButton : hwButton + 1; - break; - } - - case NSMouseMoved: - case NSLeftMouseDragged: - case NSRightMouseDragged: - case NSOtherMouseDragged: - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = MotionNotify; - break; - - case NSScrollWheel: - [self getMousePosition:&xe fromEvent:anEvent]; - xe.u.u.type = kXDarwinScrollWheel; - xe.u.clientMessage.u.s.shorts0 = [anEvent deltaX] + - [anEvent deltaY]; - break; - - case NSKeyDown: - case NSKeyUp: - if (!x11Active) { - swallowedKey = 0; - return NO; - } - - if (type == NSKeyDown) { - // If the mouse is not on the valid X display area, - // don't send the X server key events. - if (![self getMousePosition:&xe fromEvent:nil]) { - swallowedKey = [anEvent keyCode]; - return NO; - } - - // See if there are any global shortcuts for this key combo. - if (quartzEnableKeyEquivalents - && [[NSApp mainMenu] performKeyEquivalent:anEvent]) - { - swallowedKey = [anEvent keyCode]; - return YES; - } - } else { - // If the down key event was a valid key combo, - // don't pass the up event to X11. - if (swallowedKey != 0 && [anEvent keyCode] == swallowedKey) { - swallowedKey = 0; - return NO; - } - } - - xe.u.u.type = (type == NSKeyDown) ? KeyPress : KeyRelease; - xe.u.u.detail = [anEvent keyCode]; - break; - - case NSFlagsChanged: - if (!x11Active) - return NO; - xe.u.u.type = kXDarwinUpdateModifiers; - xe.u.clientMessage.u.l.longs0 = flags; - break; - - default: - return NO; - } - - [self sendXEvent:&xe]; - - // Rootless: Send first NSLeftMouseDown to Cocoa windows and views so - // window ordering can be suppressed. - // Don't pass further events - they (incorrectly?) bring the window - // forward no matter what. - if (quartzRootless && - (type == NSLeftMouseDown || type == NSLeftMouseUp) && - [anEvent clickCount] == 1 && [anEvent window]) - { - return NO; - } - - return YES; -} - -// Return mouse coordinates, inverting y coordinate. -// The coordinates are extracted from an event or the current mouse position. -// For rootless mode, the menu bar is treated as not part of the usable -// X display area and the cursor position is adjusted accordingly. -// Returns YES if the cursor is not in the menu bar. -- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent -{ - NSPoint pt; - - if (anEvent) { - NSWindow *eventWindow = [anEvent window]; - - if (eventWindow) { - pt = [anEvent locationInWindow]; - pt.x += [eventWindow frame].origin.x; - pt.y += [eventWindow frame].origin.y; - } else { - pt = [NSEvent mouseLocation]; - } - } else { - pt = [NSEvent mouseLocation]; - } - - xe->u.keyButtonPointer.rootX = (int)(pt.x); - - if (quartzRootless && NSMouseInRect(pt, aquaMenuBarBox, NO)) { - // mouse in menu bar - tell X11 that it's just below instead - xe->u.keyButtonPointer.rootY = aquaMenuBarHeight; - return NO; - } else { - xe->u.keyButtonPointer.rootY = - NSHeight([[NSScreen mainScreen] frame]) - (int)(pt.y); - return YES; - } -} - - -// Make a safe path -// -// Return the path in single quotes in case there are problematic characters in it. -// We still have to worry about there being single quotes in the path. So, replace -// all instances of the ' character in the path with '\''. -- (NSString *)makeSafePath:(NSString *)path -{ - NSMutableString *safePath = [NSMutableString stringWithString:path]; - NSRange aRange = NSMakeRange(0, [safePath length]); - - while (aRange.length) { - aRange = [safePath rangeOfString:@"'" options:0 range:aRange]; - if (!aRange.length) - break; - [safePath replaceCharactersInRange:aRange - withString:@"\'\\'\'"]; - aRange.location += 4; - aRange.length = [safePath length] - aRange.location; - } - - safePath = [NSMutableString stringWithFormat:@"'%@'", safePath]; - - return safePath; -} - - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification -{ - // Block SIGPIPE - // SIGPIPE repeatably killed the (rootless) server when closing a - // dozen xterms in rapid succession. Those SIGPIPEs should have been - // sent to the X server thread, which ignores them, but somehow they - // ended up in this thread instead. - { - sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGPIPE); - // pthread_sigmask not implemented yet - // pthread_sigmask(SIG_BLOCK, &set, NULL); - sigprocmask(SIG_BLOCK, &set, NULL); - } - - if (quartzRootless == -1) { - // The display mode was not set from the command line. - // Show mode pick panel? - if ([Preferences modeWindow]) { - if ([Preferences rootless]) - [startRootlessButton setKeyEquivalent:@"\r"]; - else - [startFullScreenButton setKeyEquivalent:@"\r"]; - [modeWindow makeKeyAndOrderFront:nil]; - } else { - // Otherwise use default mode - quartzRootless = [Preferences rootless]; - [self startX]; - } - } else { - [self startX]; - } -} - - -// Load the appropriate display mode bundle -- (BOOL)loadDisplayBundle -{ - if (quartzRootless) { - NSEnumerator *enumerator = [[Preferences displayModeBundles] - objectEnumerator]; - NSString *bundleName; - - while ((bundleName = [enumerator nextObject])) { - if (QuartzLoadDisplayBundle([bundleName cString])) - return YES; - } - - return NO; - } else { - return QuartzLoadDisplayBundle("fullscreen.bundle"); - } -} - - -// Start the X server thread and the client process -- (void)startX -{ - NSDictionary *appDictionary; - NSString *appVersion; - - [modeWindow close]; - - // Calculate the height of the menu bar so rootless mode can avoid it - if (quartzRootless) { - aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) - - NSMaxY([[NSScreen mainScreen] visibleFrame]) - 1; - aquaMenuBarBox = - NSMakeRect(0, NSMaxY([[NSScreen mainScreen] visibleFrame]) + 1, - NSWidth([[NSScreen mainScreen] frame]), - aquaMenuBarHeight); - } - - // Write the XDarwin version to the console log - appDictionary = [[NSBundle mainBundle] infoDictionary]; - appVersion = [appDictionary objectForKey:@"CFBundleShortVersionString"]; - if (appVersion) - NSLog(@"\n%@", appVersion); - else - NSLog(@"No version"); - - if (![self loadDisplayBundle]) - [NSApp terminate:nil]; - - if (quartzRootless) { - // We need to track whether the key window is an X11 window - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(windowBecameKey:) - name:NSWindowDidBecomeKeyNotification - object:nil]; - - // Request notification of screen layout changes even when this - // is not the active application - [[NSDistributedNotificationCenter defaultCenter] - addObserver:self - selector:@selector(applicationDidChangeScreenParameters:) - name:NSApplicationDidChangeScreenParametersNotification - object:nil]; - } - - // Start the X server thread - serverState = server_Starting; - [NSThread detachNewThreadSelector:@selector(run) toTarget:self - withObject:nil]; - - // Start the X clients if started from GUI - if (quartzStartClients) { - [self startXClients]; - } - - if (quartzRootless) { - // There is no help window for rootless; just start - [helpWindow close]; - helpWindow = nil; - } else { - IONotificationPortRef notify; - io_object_t anIterator; - - // Register for system power notifications - root_port = IORegisterForSystemPower(0, ¬ify, powerDidChange, - &anIterator); - if (root_port) { - CFRunLoopAddSource([[NSRunLoop currentRunLoop] getCFRunLoop], - IONotificationPortGetRunLoopSource(notify), - kCFRunLoopDefaultMode); - } else { - NSLog(@"Failed to register for system power notifications."); - } - - // Show the X switch window if not using dock icon switching - if (![Preferences dockSwitch]) - [switchWindow orderFront:nil]; - - if ([Preferences startupHelp]) { - // display the full screen mode help - [helpWindow makeKeyAndOrderFront:nil]; - queueShowServer = NO; - } else { - // start running full screen and make sure X is visible - ShowMenuBar(); - [self closeHelpAndShow:nil]; - } - } -} - -// Finish starting the X server thread -// This includes anything that must be done after the X server is -// ready to process events after the first or subsequent generations. -- (void)finishStartX -{ - sendServerEvents = YES; - serverState = server_Running; - - if (quartzRootless) { - [self forceShowServer:[NSApp isActive]]; - } else { - [self forceShowServer:queueShowServer]; - } - - if (quartzServerQuitting) { - [self quitServer]; - if (pendingAppQuitReply) - [NSApp replyToApplicationShouldTerminate:YES]; - return; - } - - if (pendingClients) { - NSEnumerator *enumerator = [pendingClients objectEnumerator]; - NSString *filename; - - while ((filename = [enumerator nextObject])) { - [self runClient:filename]; - } - - [pendingClients release]; - pendingClients = nil; - } -} - -// Start the first X clients in a separate process -- (BOOL)startXClients -{ - struct passwd *passwdUser; - NSString *shellPath, *dashShellName, *commandStr, *startXPath; - NSString *safeStartXPath; - NSBundle *thisBundle; - const char *shellPathStr, *newargv[3], *shellNameStr; - int fd[2], outFD, length, shellType, i; - - // Register to catch the signal when the client processs finishes - signal(SIGCHLD, childDone); - - // Get user's password database entry - passwdUser = getpwuid(getuid()); - - // Find the shell to use - if ([Preferences useDefaultShell]) - shellPath = [NSString stringWithCString:passwdUser->pw_shell]; - else - shellPath = [Preferences shellString]; - - dashShellName = [NSString stringWithFormat:@"-%@", - [shellPath lastPathComponent]]; - shellPathStr = [shellPath cString]; - shellNameStr = [[shellPath lastPathComponent] cString]; - - if (access(shellPathStr, X_OK)) { - NSLog(@"Shell %s is not valid!", shellPathStr); - return NO; - } - - // Find the type of shell - for (i = 0; shellList[i].name; i++) { - if (!strcmp(shellNameStr, shellList[i].name)) - break; - } - shellType = shellList[i].type; - - newargv[0] = [dashShellName cString]; - if (shellType == shell_Bourne) { - // Bourne shells need to be told they are interactive to make - // sure they read all their initialization files. - newargv[1] = "-i"; - newargv[2] = NULL; - } else { - newargv[1] = NULL; - } - - // Create a pipe to communicate with the X client process - NSAssert(pipe(fd) == 0, @"Could not create new pipe."); - - // Open a file descriptor for writing to stdout and stderr - outFD = open("/dev/console", O_WRONLY, 0); - if (outFD == -1) { - outFD = open("/dev/null", O_WRONLY, 0); - NSAssert(outFD != -1, @"Could not open shell output."); - } - - // Fork process to start X clients in user's default shell - // Sadly we can't use NSTask because we need to start a login shell. - // Login shells are started by passing "-" as the first character of - // argument 0. NSTask forces argument 0 to be the shell's name. - clientPID = vfork(); - if (clientPID == 0) { - - // Inside the new process: - if (fd[0] != STDIN_FILENO) { - dup2(fd[0], STDIN_FILENO); // Take stdin from pipe - close(fd[0]); - } - close(fd[1]); // Close write end of pipe - if (outFD == STDOUT_FILENO) { // Setup stdout and stderr - dup2(outFD, STDERR_FILENO); - } else if (outFD == STDERR_FILENO) { - dup2(outFD, STDOUT_FILENO); - } else { - dup2(outFD, STDERR_FILENO); - dup2(outFD, STDOUT_FILENO); - close(outFD); - } - - // Setup environment - setenv("HOME", passwdUser->pw_dir, 1); - setenv("SHELL", shellPathStr, 1); - setenv("LOGNAME", passwdUser->pw_name, 1); - setenv("USER", passwdUser->pw_name, 1); - setenv("TERM", "unknown", 1); - if (chdir(passwdUser->pw_dir)) // Change to user's home dir - NSLog(@"Could not change to user's home directory."); - - execv(shellPathStr, (char * const *)newargv); // Start user's shell - - NSLog(@"Could not start X client process with errno = %i.", errno); - _exit(127); - } - - // In parent process: - close(fd[0]); // Close read end of pipe - close(outFD); // Close output file descriptor - - thisBundle = [NSBundle bundleForClass:[self class]]; - startXPath = [thisBundle pathForResource:@"startXClients" ofType:nil]; - if (!startXPath) { - NSLog(@"Could not find startXClients in application bundle!"); - return NO; - } - - safeStartXPath = [self makeSafePath:startXPath]; - - if ([Preferences addToPath]) { - commandStr = [NSString stringWithFormat:@"%@ :%d %@\n", - safeStartXPath, [Preferences display], - [Preferences addToPathString]]; - } else { - commandStr = [NSString stringWithFormat:@"%@ :%d\n", - safeStartXPath, [Preferences display]]; - } - - length = [commandStr cStringLength]; - if (write(fd[1], [commandStr cString], length) != length) { - NSLog(@"Write to X client process failed."); - return NO; - } - - // Close the pipe so that shell will terminate when xinit quits - close(fd[1]); - - return YES; -} - -// Start the specified client in its own task -// FIXME: This should be unified with startXClients -- (void)runClient:(NSString *)filename -{ - const char *command = [[self makeSafePath:filename] UTF8String]; - const char *shell; - const char *argv[5]; - int child1, child2 = 0; - int status; - - shell = getenv("SHELL"); - if (shell == NULL) - shell = "/bin/bash"; - - /* At least [ba]sh, [t]csh and zsh all work with this syntax. We - need to use an interactive shell to force it to load the user's - environment. */ - - argv[0] = shell; - argv[1] = "-i"; - argv[2] = "-c"; - argv[3] = command; - argv[4] = NULL; - - /* Do the fork-twice trick to avoid having to reap zombies */ - - child1 = fork(); - - switch (child1) { - case -1: /* error */ - break; - - case 0: /* child1 */ - child2 = fork(); - - switch (child2) { - int max_files, i; - char buf[1024], *tem; - - case -1: /* error */ - _exit(1); - - case 0: /* child2 */ - /* close all open files except for standard streams */ - max_files = sysconf(_SC_OPEN_MAX); - for (i = 3; i < max_files; i++) - close(i); - - /* ensure stdin is on /dev/null */ - close(0); - open("/dev/null", O_RDONLY); - - /* cd $HOME */ - tem = getenv("HOME"); - if (tem != NULL) - chdir(tem); - - /* Setup environment */ -// snprintf(buf, sizeof(buf), ":%s", display); -// setenv("DISPLAY", buf, TRUE); - tem = getenv("PATH"); - if (tem != NULL && tem[0] != NULL) - snprintf(buf, sizeof(buf), "%s:/usr/X11/bin", tem); - else - snprintf(buf, sizeof(buf), "/bin:/usr/bin:/usr/X11/bin"); - setenv("PATH", buf, TRUE); - - execvp(argv[0], (char **const) argv); - - _exit(2); - - default: /* parent (child1) */ - _exit(0); - } - break; - - default: /* parent */ - waitpid(child1, &status, 0); - } -} - -// Run the X server thread -- (void)run -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - [serverLock lock]; - main(argcGlobal, argvGlobal, envpGlobal); - serverVisible = NO; - [pool release]; - [serverLock unlock]; - QuartzMessageMainThread(kQuartzServerDied, nil, 0); -} - -// Full screen mode was picked in the mode pick panel -- (IBAction)startFullScreen:(id)sender -{ - [Preferences setModeWindow:[startupModeButton intValue]]; - [Preferences saveToDisk]; - quartzRootless = FALSE; - [self startX]; -} - -// Rootless mode was picked in the mode pick panel -- (IBAction)startRootless:(id)sender -{ - [Preferences setModeWindow:[startupModeButton intValue]]; - [Preferences saveToDisk]; - quartzRootless = TRUE; - [self startX]; -} - -// Close the help splash screen and show the X server -- (IBAction)closeHelpAndShow:(id)sender -{ - if (sender) { - int helpVal = [startupHelpButton intValue]; - [Preferences setStartupHelp:helpVal]; - [Preferences saveToDisk]; - } - [helpWindow close]; - helpWindow = nil; - - [self forceShowServer:YES]; - [NSApp activateIgnoringOtherApps:YES]; -} - -// Show the Aqua-X11 switch panel useful for fullscreen mode -- (IBAction)showSwitchPanel:(id)sender -{ - [switchWindow orderFront:nil]; -} - -// Show the X server when sent message from GUI -- (IBAction)showAction:(id)sender -{ - [self forceShowServer:YES]; -} - -// Show or hide the X server or menu bar in rootless mode -- (void)toggle -{ - if (quartzRootless) { -#if 0 - // FIXME: Remove or add option to not dodge menubar - if (rootlessMenuBarVisible) - HideMenuBar(); - else - ShowMenuBar(); - rootlessMenuBarVisible = !rootlessMenuBarVisible; -#endif - } else { - [self showServer:!serverVisible]; - } -} - -// Show or hide the X server on screen -- (void)showServer:(BOOL)show -{ - // Do not show or hide multiple times in a row - if (serverVisible == show) - return; - - if (sendServerEvents) { - [self sendShowHide:show]; - } else if (serverState == server_Starting) { - queueShowServer = show; - } -} - -// Show or hide the X server irregardless of the current state -- (void)forceShowServer:(BOOL)show -{ - serverVisible = !show; - [self showServer:show]; -} - -// Tell the X server to show or hide itself. -// This ignores the current X server visible state. -// -// In full screen mode, the order we do things is important and must be -// preserved between the threads. X drawing operations have to be performed -// in the X server thread. It appears that we have the additional -// constraint that we must hide and show the menu bar in the main thread. -// -// To show the X server: -// 1. Capture the displays. (Main thread) -// 2. Hide the menu bar. (Must be in main thread) -// 3. Send event to X server thread to redraw X screen. -// 4. Redraw the X screen. (Must be in X server thread) -// -// To hide the X server: -// 1. Send event to X server thread to stop drawing. -// 2. Stop drawing to the X screen. (Must be in X server thread) -// 3. Message main thread that drawing is stopped. -// 4. If main thread still wants X server hidden: -// a. Release the displays. (Main thread) -// b. Unhide the menu bar. (Must be in main thread) -// Otherwise we have already queued an event to start drawing again. -// -- (void)sendShowHide:(BOOL)show -{ - xEvent xe; - - [self getMousePosition:&xe fromEvent:nil]; - - if (show) { - if (!quartzRootless) { - quartzProcs->CaptureScreens(); - HideMenuBar(); - } - [self activateX11:YES]; - - // the mouse location will have moved; track it - xe.u.u.type = MotionNotify; - [self sendXEvent:&xe]; - - // inform the X server of the current modifier state - xe.u.u.type = kXDarwinUpdateModifiers; - xe.u.clientMessage.u.l.longs0 = [[NSApp currentEvent] modifierFlags]; - [self sendXEvent:&xe]; - - // If there is no AppleWM-aware cut and paste manager, do what we can. - if ((AppleWMSelectedEvents() & AppleWMPasteboardNotifyMask) == 0) { - // put the pasteboard into the X cut buffer - [self readPasteboard]; - } - } else { - // If there is no AppleWM-aware cut and paste manager, do what we can. - if ((AppleWMSelectedEvents() & AppleWMPasteboardNotifyMask) == 0) { - // put the X cut buffer on the pasteboard - [self writePasteboard]; - } - - [self activateX11:NO]; - } - - serverVisible = show; -} - -// Enable or disable rendering to the X screen -- (void)setRootClip:(BOOL)enable -{ - xEvent xe; - - xe.u.u.type = kXDarwinSetRootClip; - xe.u.clientMessage.u.l.longs0 = enable; - [self sendXEvent:&xe]; -} - -// Tell the X server to read from the pasteboard into the X cut buffer -- (void)readPasteboard -{ - xEvent xe; - - xe.u.u.type = kXDarwinReadPasteboard; - [self sendXEvent:&xe]; -} - -// Tell the X server to write the X cut buffer into the pasteboard -- (void)writePasteboard -{ - xEvent xe; - - xe.u.u.type = kXDarwinWritePasteboard; - [self sendXEvent:&xe]; -} - -- (void)quitServer -{ - xEvent xe; - - xe.u.u.type = kXDarwinQuit; - [self sendXEvent:&xe]; - - // Revert to the Mac OS X arrow cursor. The main thread sets the cursor - // and it won't be responding to future requests to change it. - [[NSCursor arrowCursor] set]; - - serverState = server_Quitting; -} - -- (void)sendXEvent:(xEvent *)xe -{ - // This field should be filled in for every event - xe->u.keyButtonPointer.time = GetTimeInMillis(); - - DarwinEQEnqueue(xe); -} - -// Handle messages from the X server thread -- (void)handlePortMessage:(NSPortMessage *)portMessage -{ - unsigned msg = [portMessage msgid]; - - switch (msg) { - case kQuartzServerHidden: - // Make sure the X server wasn't queued to be shown again while - // the hide was pending. - if (!quartzRootless && !serverVisible) { - quartzProcs->ReleaseScreens(); - ShowMenuBar(); - } - break; - - case kQuartzServerStarted: - [self finishStartX]; - break; - - case kQuartzServerDied: - sendServerEvents = NO; - serverState = server_Done; - if (!quartzServerQuitting) { - [NSApp terminate:nil]; // quit if we aren't already - } - break; - - case kQuartzCursorUpdate: - if (quartzProcs->CursorUpdate) - quartzProcs->CursorUpdate(); - break; - - case kQuartzPostEvent: - { - const xEvent *xe = [[[portMessage components] lastObject] bytes]; - DarwinEQEnqueue(xe); - break; - } - - case kQuartzSetWindowMenu: - { - NSArray *list; - [[[portMessage components] lastObject] getBytes:&list]; - [self setX11WindowList:list]; - [list release]; - break; - } - - case kQuartzSetWindowMenuCheck: - { - int n; - [[[portMessage components] lastObject] getBytes:&n]; - [self setX11WindowCheck:[NSNumber numberWithInt:n]]; - break; - } - - case kQuartzSetFrontProcess: - [NSApp activateIgnoringOtherApps:YES]; - break; - - case kQuartzSetCanQuit: - { - int n; - [[[portMessage components] lastObject] getBytes:&n]; - quitWithoutQuery = (BOOL) n; - break; - } - - default: - NSLog(@"Unknown message from server thread."); - } -} - -// Quit the X server when the X client process finishes -- (void)clientProcessDone:(int)clientStatus -{ - if (WIFEXITED(clientStatus)) { - int exitStatus = WEXITSTATUS(clientStatus); - if (exitStatus != 0) - NSLog(@"X client process terminated with status %i.", exitStatus); - } else { - NSLog(@"X client process terminated abnormally."); - } - - if (!quartzServerQuitting) { - [NSApp terminate:nil]; // quit if we aren't already - } -} - -// User selected an X11 window from a menu -- (IBAction)itemSelected:(id)sender -{ - xEvent xe; - - [NSApp activateIgnoringOtherApps:YES]; - - // Notify the client of the change through the X server thread - xe.u.u.type = kXDarwinControllerNotify; - xe.u.clientMessage.u.l.longs0 = AppleWMWindowMenuItem; - xe.u.clientMessage.u.l.longs1 = [sender tag]; - [self sendXEvent:&xe]; -} - -// User selected Next from window menu -- (IBAction)nextWindow:(id)sender -{ - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMNextWindow); -} - -// User selected Previous from window menu -- (IBAction)previousWindow:(id)sender -{ - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMPreviousWindow); -} - -/* - * The XPR implementation handles close, minimize, and zoom actions for X11 - * windows here, while CR handles these in the NSWindow class. - */ - -// Handle Close from window menu for X11 window in XPR implementation -- (IBAction)performClose:(id)sender -{ - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMCloseWindow); -} - -// Handle Minimize from window menu for X11 window in XPR implementation -- (IBAction)performMiniaturize:(id)sender -{ - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMMinimizeWindow); -} - -// Handle Zoom from window menu for X11 window in XPR implementation -- (IBAction)performZoom:(id)sender -{ - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMZoomWindow); -} - -// Handle "Bring All to Front" from window menu -- (IBAction)bringAllToFront:(id)sender -{ - if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) { - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMBringAllToFront); - } else { - [NSApp arrangeInFront:nil]; - } -} - -// This ends up at the end of the responder chain. -- (IBAction)copy:(id)sender -{ - QuartzMessageServerThread(kXDarwinPasteboardNotify, 1, - AppleWMCopyToPasteboard); -} - -// Set whether or not X11 is active and should receive all key events -- (void)activateX11:(BOOL)state -{ - if (state) { - QuartzMessageServerThread(kXDarwinActivate, 0); - } - else { - QuartzMessageServerThread(kXDarwinDeactivate, 0); - } - - x11Active = state; -} - -// Some NSWindow became the key window -- (void)windowBecameKey:(NSNotification *)notification -{ - NSWindow *window = [notification object]; - - if (quartzProcs->IsX11Window(window, [window windowNumber])) { - if (!x11Active) - [self activateX11:YES]; - } else { - if (x11Active) - [self activateX11:NO]; - } -} - -// Set the Apple-WM specifiable part of the window menu -- (void)setX11WindowList:(NSArray *)list -{ - NSMenuItem *item; - int first, count, i; - xEvent xe; - - /* Work backwards so we don't mess up the indices */ - first = [windowMenu indexOfItem:windowSeparator] + 1; - if (first > 0) { - count = [windowMenu numberOfItems]; - for (i = count - 1; i >= first; i--) - [windowMenu removeItemAtIndex:i]; - } else { - windowSeparator = (NSMenuItem *)[windowMenu addItemWithTitle:@"" - action:nil - keyEquivalent:@""]; - } - - count = [dockMenu numberOfItems]; - for (i = 0; i < count; i++) - [dockMenu removeItemAtIndex:0]; - - count = [list count]; - - for (i = 0; i < count; i++) - { - NSString *name, *shortcut; - - name = [[list objectAtIndex:i] objectAtIndex:0]; - shortcut = [[list objectAtIndex:i] objectAtIndex:1]; - - item = (NSMenuItem *)[windowMenu addItemWithTitle:name - action:@selector(itemSelected:) - keyEquivalent:shortcut]; - [item setTarget:self]; - [item setTag:i]; - [item setEnabled:YES]; - - item = (NSMenuItem *)[dockMenu insertItemWithTitle:name - action:@selector(itemSelected:) - keyEquivalent:shortcut atIndex:i]; - [item setTarget:self]; - [item setTag:i]; - [item setEnabled:YES]; - } - - if (checkedWindowItem >= 0 && checkedWindowItem < count) - { - item = (NSMenuItem *)[windowMenu itemAtIndex:first + checkedWindowItem]; - [item setState:NSOnState]; - item = (NSMenuItem *)[dockMenu itemAtIndex:checkedWindowItem]; - [item setState:NSOnState]; - } - - // Notify the client of the change through the X server thread - xe.u.u.type = kXDarwinControllerNotify; - xe.u.clientMessage.u.l.longs0 = AppleWMWindowMenuNotify; - [self sendXEvent:&xe]; -} - -// Set the checked item on the Apple-WM specifiable window menu -- (void)setX11WindowCheck:(NSNumber *)nn -{ - NSMenuItem *item; - int first, count; - int n = [nn intValue]; - - first = [windowMenu indexOfItem:windowSeparator] + 1; - count = [windowMenu numberOfItems] - first; - - if (checkedWindowItem >= 0 && checkedWindowItem < count) - { - item = (NSMenuItem *)[windowMenu itemAtIndex:first + checkedWindowItem]; - [item setState:NSOffState]; - item = (NSMenuItem *)[dockMenu itemAtIndex:checkedWindowItem]; - [item setState:NSOffState]; - } - if (n >= 0 && n < count) - { - item = (NSMenuItem *)[windowMenu itemAtIndex:first + n]; - [item setState:NSOnState]; - item = (NSMenuItem *)[dockMenu itemAtIndex:n]; - [item setState:NSOnState]; - } - checkedWindowItem = n; -} - -// Return whether or not a menu item should be enabled -- (BOOL)validateMenuItem:(NSMenuItem *)item -{ - NSMenu *menu = [item menu]; - - if (menu == windowMenu && [item tag] == 30) { - // Mode switch panel is for fullscreen only - return !quartzRootless; - } - else if ((menu == windowMenu && [item tag] != 40) || menu == dockMenu) { - // The special window and dock menu items should not be active unless - // there is an AppleWM-aware window manager running. - return (AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0; - } - else { - return TRUE; - } -} - -/* - * Application Delegate Methods - */ - -- (void)applicationDidChangeScreenParameters:(NSNotification *)aNotification -{ - if (quartzProcs->ScreenChanged) - quartzProcs->ScreenChanged(); -} - -- (void)applicationDidHide:(NSNotification *)aNotification -{ - if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) { - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMHideAll); - } else { - if (quartzProcs->HideWindows) - quartzProcs->HideWindows(YES); - } -} - -- (void)applicationDidUnhide:(NSNotification *)aNotification -{ - if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) != 0) { - QuartzMessageServerThread(kXDarwinControllerNotify, 1, - AppleWMShowAll); - } else { - if (quartzProcs->HideWindows) - quartzProcs->HideWindows(NO); - } -} - -// Called when the user clicks the application icon, -// but not when Cmd-Tab is used. -// Rootless: Don't switch until applicationWillBecomeActive. -- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication - hasVisibleWindows:(BOOL)flag -{ - if ([Preferences dockSwitch] && !quartzRootless) { - [self showServer:YES]; - } - return NO; -} - -- (void)applicationWillResignActive:(NSNotification *)aNotification -{ - [self showServer:NO]; -} - -- (void)applicationWillBecomeActive:(NSNotification *)aNotification -{ - if (quartzRootless) { - [self showServer:YES]; - - // If there is no AppleWM-aware window manager, we can't allow - // interleaving of Aqua and X11 windows. - if ((AppleWMSelectedEvents() & AppleWMControllerNotifyMask) == 0) { - [NSApp arrangeInFront:nil]; - } - } -} - -// Called when the user opens a document type that we claim (ie. an X11 executable). -- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename -{ - if (serverState == server_Running) { - [self runClient:filename]; - return YES; - } - else if (serverState == server_NotStarted || serverState == server_Starting) { - if ([filename UTF8String][0] != ':') { // Ignore display names - if (!pendingClients) { - pendingClients = [[NSMutableArray alloc] initWithCapacity:1]; - } - [pendingClients addObject:filename]; - return YES; // Assume it will launch successfully - } - return NO; - } - - // If the server is quitting or done, - // its too late to launch new clients this time. - return NO; -} - -@end - - -// Send a message to the main thread, which calls handlePortMessage in -// response. Must only be called from the X server thread because -// NSPort is not thread safe. -void QuartzMessageMainThread(unsigned msg, void *data, unsigned length) -{ - if (length > 0) { - NSData *eventData = [NSData dataWithBytes:data length:length]; - NSArray *eventArray = [NSArray arrayWithObject:eventData]; - NSPortMessage *newMessage = - [[NSPortMessage alloc] - initWithSendPort:signalPort - receivePort:returnPort components:eventArray]; - [newMessage setMsgid:msg]; - [newMessage sendBeforeDate:[NSDate distantPast]]; - [newMessage release]; - } else { - [signalMessage setMsgid:msg]; - [signalMessage sendBeforeDate:[NSDate distantPast]]; - } -} - -void -QuartzSetWindowMenu(int nitems, const char **items, - const char *shortcuts) -{ - NSMutableArray *array; - int i; - - array = [[NSMutableArray alloc] initWithCapacity:nitems]; - - for (i = 0; i < nitems; i++) { - NSMutableArray *subarray = [NSMutableArray arrayWithCapacity:2]; - NSString *string = [NSString stringWithUTF8String:items[i]]; - - [subarray addObject:string]; - - if (shortcuts[i] != 0) { - NSString *number = [NSString stringWithFormat:@"%d", - shortcuts[i]]; - [subarray addObject:number]; - } else - [subarray addObject:@""]; - - [array addObject:subarray]; - } - - /* Send the array of strings over to the main thread. */ - /* Will be released in main thread. */ - QuartzMessageMainThread(kQuartzSetWindowMenu, &array, sizeof(NSArray *)); -} - -// Handle SIGCHLD signals -static void childDone(int sig) -{ - int clientStatus; - - if (clientPID == 0) - return; - - // Make sure it was the client task that finished - if (waitpid(clientPID, &clientStatus, WNOHANG) == clientPID) { - if (WIFSTOPPED(clientStatus)) - return; - clientPID = 0; - [oneXServer clientProcessDone:clientStatus]; - } -} - -static void powerDidChange( - void *x, - io_service_t y, - natural_t messageType, - void *messageArgument) -{ - switch (messageType) { - case kIOMessageSystemWillSleep: - if (!quartzRootless) { - [oneXServer setRootClip:FALSE]; - } - IOAllowPowerChange(root_port, (long)messageArgument); - break; - case kIOMessageCanSystemSleep: - IOAllowPowerChange(root_port, (long)messageArgument); - break; - case kIOMessageSystemHasPoweredOn: - if (!quartzRootless) { - [oneXServer setRootClip:TRUE]; - } - break; - } - -}