[63840] trunk/dports/x11/xorg-server
jeremyhu at macports.org
jeremyhu at macports.org
Tue Feb 16 16:27:30 PST 2010
Revision: 63840
http://trac.macports.org/changeset/63840
Author: jeremyhu at macports.org
Date: 2010-02-16 16:27:30 -0800 (Tue, 16 Feb 2010)
Log Message:
-----------
xorg-server: Bump to 1.7.5 plus some fixes not yet upstream
Modified Paths:
--------------
trunk/dports/x11/xorg-server/Portfile
Added Paths:
-----------
trunk/dports/x11/xorg-server/files/0002-XQuartz-clang-static-analysis-fixes.patch
trunk/dports/x11/xorg-server/files/0003-XQuartz-Fix-a-possible-buffer-overrun-in-quartzAudio.patch
trunk/dports/x11/xorg-server/files/0004-XQuartz-Use-an-empty-xkb-keymap-by-default.patch
trunk/dports/x11/xorg-server/files/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
trunk/dports/x11/xorg-server/files/0006-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch
Modified: trunk/dports/x11/xorg-server/Portfile
===================================================================
--- trunk/dports/x11/xorg-server/Portfile 2010-02-17 00:17:08 UTC (rev 63839)
+++ trunk/dports/x11/xorg-server/Portfile 2010-02-17 00:27:30 UTC (rev 63840)
@@ -3,7 +3,7 @@
PortSystem 1.0
name xorg-server
-version 1.7.4
+version 1.7.5
categories x11 devel
maintainers jeremyhu openmaintainer
description The X.org / Xquartz X server.
@@ -14,9 +14,9 @@
#master_sites http://xquartz.macosforge.org/downloads/src
master_sites http://xorg.freedesktop.org/archive/individual/xserver/
-checksums md5 75d27c3a1c12293f620a2d6518fcbdfa \
- sha1 26de24d7ced735bd717a21c5110d22d662221a58 \
- rmd160 fe65b14831bda0dd8423df2ffbb3634e0f15bce6
+checksums md5 2856130aebf56e3df7b7d9be419bfb28 \
+ sha1 c385293b66a6b0bc6bad648588f611d844c26ee7 \
+ rmd160 900863aeb73967e33265e0445ddaa61feeecc452
use_bzip2 yes
use_parallel_build yes
@@ -73,6 +73,15 @@
# GL/internal/dri_interface.h is missing in prefix (provided by libdrm for the xorg DDX... not helpful for us)
configure.cppflags-append -I/usr/include -I${filespath}/dri
+patchfiles \
+ 0002-XQuartz-clang-static-analysis-fixes.patch \
+ 0003-XQuartz-Fix-a-possible-buffer-overrun-in-quartzAudio.patch \
+ 0004-XQuartz-Use-an-empty-xkb-keymap-by-default.patch \
+ 0005-fb-Revert-fb-changes-that-broke-XQuartz.patch \
+ 0006-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch
+
+patch.args -p1
+
build.args V=1
post-destroot {
Added: trunk/dports/x11/xorg-server/files/0002-XQuartz-clang-static-analysis-fixes.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0002-XQuartz-clang-static-analysis-fixes.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0002-XQuartz-clang-static-analysis-fixes.patch 2010-02-17 00:27:30 UTC (rev 63840)
@@ -0,0 +1,272 @@
+From 4127e8e5be5c366eb752bbb8d7f0ff5b519e641b Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston <jeremyhu at apple.com>
+Date: Wed, 10 Feb 2010 17:56:30 -0800
+Subject: [PATCH 2/6] XQuartz: clang static analysis fixes
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ hw/xquartz/GL/indirect.c | 2 +-
+ hw/xquartz/GL/visualConfigs.c | 3 +--
+ hw/xquartz/X11Application.m | 18 ++++++++++--------
+ hw/xquartz/mach-startup/bundle-main.c | 30 +++++++++++++++++++++++-------
+ hw/xquartz/mach-startup/stub.c | 7 -------
+ hw/xquartz/pbproxy/x-selection.h | 9 ---------
+ hw/xquartz/quartzAudio.c | 1 +
+ hw/xquartz/quartzKeyboard.c | 2 +-
+ 8 files changed, 37 insertions(+), 35 deletions(-)
+
+diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
+index 1762825..44380ff 100644
+--- a/hw/xquartz/GL/indirect.c
++++ b/hw/xquartz/GL/indirect.c
+@@ -548,7 +548,7 @@ static CGLPixelFormatObj makeFormat(__GLXconfig *conf) {
+ attr[i++] = conf->samples;
+ }
+
+- attr[i++] = 0;
++ attr[i + 1] = 0;
+
+ error = CGLChoosePixelFormat(attr, &fobj, &formats);
+ if(error) {
+diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
+index f926778..bef27f0 100644
+--- a/hw/xquartz/GL/visualConfigs.c
++++ b/hw/xquartz/GL/visualConfigs.c
+@@ -62,7 +62,7 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
+ int numConfigs = 0;
+ __GLXconfig *visualConfigs, *c;
+ struct glCapabilities caps;
+- struct glCapabilitiesConfig *conf = NULL;
++ struct glCapabilitiesConfig *conf;
+ int stereo, depth, aux, buffers, stencil, accum, color, msample;
+
+ if(getGlCapabilities(&caps)) {
+@@ -94,7 +94,6 @@ __GLXconfig *__glXAquaCreateVisualConfigs(int *numConfigsPtr, int screenNumber)
+ */
+
+ assert(NULL != caps.configurations);
+- conf = caps.configurations;
+
+ numConfigs = 0;
+
+diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
+index f3c8a30..3faa1cb 100644
+--- a/hw/xquartz/X11Application.m
++++ b/hw/xquartz/X11Application.m
+@@ -482,7 +482,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ return out;
+ }
+
+-- (CFPropertyListRef) prefs_get:(NSString *)key {
++- (CFPropertyListRef) prefs_get_copy:(NSString *)key {
+ CFPropertyListRef value;
+
+ value = CFPreferencesCopyAppValue ((CFStringRef) key, app_prefs_domain_cfstr);
+@@ -543,7 +543,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ CFPropertyListRef value;
+ int ret;
+
+- value = [self prefs_get:key];
++ value = [self prefs_get_copy:key];
+
+ if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ())
+ CFNumberGetValue (value, kCFNumberIntType, &ret);
+@@ -561,7 +561,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ CFPropertyListRef value;
+ const char *ret = NULL;
+
+- value = [self prefs_get:key];
++ value = [self prefs_get_copy:key];
+
+ if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
+ NSString *s = (NSString *) value;
+@@ -578,12 +578,13 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ CFPropertyListRef value;
+ NSURL *ret = NULL;
+
+- value = [self prefs_get:key];
++ value = [self prefs_get_copy:key];
+
+ if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
+ NSString *s = (NSString *) value;
+
+ ret = [NSURL URLWithString:s];
++ [ret retain];
+ }
+
+ if (value != NULL) CFRelease (value);
+@@ -595,7 +596,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ CFPropertyListRef value;
+ float ret = def;
+
+- value = [self prefs_get:key];
++ value = [self prefs_get_copy:key];
+
+ if (value != NULL
+ && CFGetTypeID (value) == CFNumberGetTypeID ()
+@@ -613,7 +614,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ CFPropertyListRef value;
+ int ret = def;
+
+- value = [self prefs_get:key];
++ value = [self prefs_get_copy:key];
+
+ if (value != NULL) {
+ if (CFGetTypeID (value) == CFNumberGetTypeID ())
+@@ -637,7 +638,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ NSArray *ret = nil;
+ CFPropertyListRef value;
+
+- value = [self prefs_get:key];
++ value = [self prefs_get_copy:key];
+
+ if (value != NULL) {
+ if (CFGetTypeID (value) == CFArrayGetTypeID ())
+@@ -757,7 +758,7 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
+ NSURL *url = [self prefs_copy_url:@PREFS_UPDATE_FEED default:nil];
+ if(url) {
+ [[SUUpdater sharedUpdater] setFeedURL:url];
+- CFRelease(url);
++ [url release];
+ }
+ #endif
+ }
+@@ -970,6 +971,7 @@ void X11ApplicationMain (int argc, char **argv, char **envp) {
+ // [[SUUpdater sharedUpdater] checkForUpdates:X11App];
+ #endif
+
++ [pool release];
+ [NSApp run];
+ /* not reached */
+ }
+diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c
+index 0366f3b..4872ff5 100644
+--- a/hw/xquartz/mach-startup/bundle-main.c
++++ b/hw/xquartz/mach-startup/bundle-main.c
+@@ -641,30 +641,46 @@ static int execute(const char *command) {
+ static char *command_from_prefs(const char *key, const char *default_value) {
+ char *command = NULL;
+
+- CFStringRef cfKey = CFStringCreateWithCString(NULL, key, kCFStringEncodingASCII);
+- CFPropertyListRef PlistRef = CFPreferencesCopyAppValue(cfKey, kCFPreferencesCurrentApplication);
++ CFStringRef cfKey;
++ CFPropertyListRef PlistRef;
++
++ if(!key)
++ return NULL;
++
++ cfKey = CFStringCreateWithCString(NULL, key, kCFStringEncodingASCII);
++
++ if(!cfKey)
++ return NULL;
++
++ PlistRef = CFPreferencesCopyAppValue(cfKey, kCFPreferencesCurrentApplication);
+
+ if ((PlistRef == NULL) || (CFGetTypeID(PlistRef) != CFStringGetTypeID())) {
+ CFStringRef cfDefaultValue = CFStringCreateWithCString(NULL, default_value, kCFStringEncodingASCII);
+ int len = strlen(default_value) + 1;
+
++ if(!cfDefaultValue)
++ goto command_from_prefs_out;
++
+ CFPreferencesSetAppValue(cfKey, cfDefaultValue, kCFPreferencesCurrentApplication);
+ CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
++ CFRelease(cfDefaultValue);
+
+ command = (char *)malloc(len * sizeof(char));
+ if(!command)
+- return NULL;
++ goto command_from_prefs_out;
+ strcpy(command, default_value);
+ } else {
+ int len = CFStringGetLength((CFStringRef)PlistRef) + 1;
+ command = (char *)malloc(len * sizeof(char));
+ if(!command)
+- return NULL;
++ goto command_from_prefs_out;
+ CFStringGetCString((CFStringRef)PlistRef, command, len, kCFStringEncodingASCII);
+- }
+-
++ }
++
++command_from_prefs_out:
+ if (PlistRef)
+ CFRelease(PlistRef);
+-
++ if(cfKey)
++ CFRelease(cfKey);
+ return command;
+ }
+diff --git a/hw/xquartz/mach-startup/stub.c b/hw/xquartz/mach-startup/stub.c
+index 89f9e10..ccf5ab4 100644
+--- a/hw/xquartz/mach-startup/stub.c
++++ b/hw/xquartz/mach-startup/stub.c
+@@ -73,7 +73,6 @@ static void set_x11_path(void) {
+ #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
+
+ CFURLRef appURL = NULL;
+- CFBundleRef bundle = NULL;
+ OSStatus osstatus = LSFindApplicationForInfo(kLSUnknownCreator, CFSTR(kX11AppBundleId), nil, nil, &appURL);
+
+ switch (osstatus) {
+@@ -84,12 +83,6 @@ static void set_x11_path(void) {
+ exit(1);
+ }
+
+- bundle = CFBundleCreate(NULL, appURL);
+- if(!bundle) {
+- fprintf(stderr, "Xquartz: Null value returned from CFBundleCreate().\n");
+- exit(2);
+- }
+-
+ if (!CFURLGetFileSystemRepresentation(appURL, true, (unsigned char *)x11_path, sizeof(x11_path))) {
+ fprintf(stderr, "Xquartz: Error resolving URL for %s\n", kX11AppBundleId);
+ exit(3);
+diff --git a/hw/xquartz/pbproxy/x-selection.h b/hw/xquartz/pbproxy/x-selection.h
+index fc903d0..614c8b0 100644
+--- a/hw/xquartz/pbproxy/x-selection.h
++++ b/hw/xquartz/pbproxy/x-selection.h
+@@ -58,15 +58,6 @@ struct atom_list {
+ /* The unmapped window we use for fetching selections. */
+ Window _selection_window;
+
+- /* Last time we declared anything on the pasteboard. */
+- int _my_last_change;
+-
+- /* Name of the selection we're proxying onto the pasteboard. */
+- Atom _proxied_selection;
+-
+- /* When true, we're expecting a SelectionNotify event. */
+- unsigned int _pending_notify :1;
+-
+ Atom request_atom;
+
+ struct {
+diff --git a/hw/xquartz/quartzAudio.c b/hw/xquartz/quartzAudio.c
+index af63d18..e4b49fc 100644
+--- a/hw/xquartz/quartzAudio.c
++++ b/hw/xquartz/quartzAudio.c
+@@ -204,6 +204,7 @@ QuartzAudioIOProc(
+ if (wasPlaying && !data->playing) {
+ OSStatus err;
+ err = AudioDeviceStop(inDevice, QuartzAudioIOProc);
++ fprintf(stderr, "Error stopping audio device: %ld\n", (long int)err);
+ }
+ pthread_mutex_unlock(&data->lock);
+ return 0;
+diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
+index 96b5fa5..3b4eac3 100644
+--- a/hw/xquartz/quartzKeyboard.c
++++ b/hw/xquartz/quartzKeyboard.c
+@@ -368,7 +368,7 @@ void DarwinKeyboardReloadHandler(void) {
+ KeySymsRec keySyms;
+ CFIndex initialKeyRepeatValue, keyRepeatValue;
+ BOOL ok;
+- DeviceIntPtr pDev = darwinKeyboard;
++ DeviceIntPtr pDev;
+ const char *xmodmap = PROJECTROOT "/bin/xmodmap";
+ const char *sysmodmap = PROJECTROOT "/lib/X11/xinit/.Xmodmap";
+ const char *homedir = getenv("HOME");
+--
+1.6.6.1
+
Added: trunk/dports/x11/xorg-server/files/0003-XQuartz-Fix-a-possible-buffer-overrun-in-quartzAudio.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0003-XQuartz-Fix-a-possible-buffer-overrun-in-quartzAudio.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0003-XQuartz-Fix-a-possible-buffer-overrun-in-quartzAudio.patch 2010-02-17 00:27:30 UTC (rev 63840)
@@ -0,0 +1,112 @@
+From 4e8bf12b13690afa6d9fee0e339d3819ef16fb3f Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston <jeremyhu at apple.com>
+Date: Mon, 15 Feb 2010 16:46:21 -0800
+Subject: [PATCH 3/6] XQuartz: Fix a possible buffer overrun in quartzAudio
+
+Also dropped deprecated API while there
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ hw/xquartz/quartzAudio.c | 36 ++++++++++++++++++------------------
+ 1 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/hw/xquartz/quartzAudio.c b/hw/xquartz/quartzAudio.c
+index e4b49fc..708202b 100644
+--- a/hw/xquartz/quartzAudio.c
++++ b/hw/xquartz/quartzAudio.c
+@@ -62,7 +62,6 @@ typedef struct QuartzAudioRec {
+ UInt32 curFrame;
+ UInt32 remainingFrames;
+ UInt32 totalFrames;
+- UInt32 bytesPerFrame;
+ double sampleRate;
+ UInt32 fadeLength;
+
+@@ -117,9 +116,9 @@ static void QuartzFillBuffer(
+ unsigned int bufferFrameCount;
+ float multiplier, v;
+ int i;
+-
++
+ buffer = (float *)audiobuffer->mData;
+- bufferFrameCount = audiobuffer->mDataByteSize / data->bytesPerFrame;
++ bufferFrameCount = audiobuffer->mDataByteSize / (sizeof(float) * audiobuffer->mNumberChannels);
+
+ frameCount = min(bufferFrameCount, data->remainingFrames);
+
+@@ -141,7 +140,7 @@ static void QuartzFillBuffer(
+ data->prevFrame = 0;
+
+ // adjust for space eaten by prev fade
+- buffer += audiobuffer->mNumberChannels*frame;
++ b += audiobuffer->mNumberChannels*frame;
+ bufferFrameCount -= frame;
+ frameCount = min(bufferFrameCount, data->remainingFrames);
+ }
+@@ -204,7 +203,8 @@ QuartzAudioIOProc(
+ if (wasPlaying && !data->playing) {
+ OSStatus err;
+ err = AudioDeviceStop(inDevice, QuartzAudioIOProc);
+- fprintf(stderr, "Error stopping audio device: %ld\n", (long int)err);
++ if(err != noErr)
++ fprintf(stderr, "Error stopping audio device: %ld\n", (long int)err);
+ }
+ pthread_mutex_unlock(&data->lock);
+ return 0;
+@@ -263,16 +263,17 @@ void QuartzAudioInit(void)
+ UInt32 propertySize;
+ OSStatus status;
+ AudioDeviceID outputDevice;
+- AudioStreamBasicDescription outputStreamDescription;
+ double sampleRate;
+-
++ AudioObjectPropertyAddress devicePropertyAddress = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
++ AudioObjectPropertyAddress sampleRatePropertyAddress = { kAudioDevicePropertyNominalSampleRate, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
++
+ // Get the default output device
+ propertySize = sizeof(outputDevice);
+- status = AudioHardwareGetProperty(
+- kAudioHardwarePropertyDefaultOutputDevice,
+- &propertySize, &outputDevice);
++ status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &devicePropertyAddress,
++ 0, NULL,
++ &propertySize, &outputDevice);
+ if (status) {
+- ErrorF("QuartzAudioInit: AudioHardwareGetProperty returned %ld\n",
++ ErrorF("QuartzAudioInit: AudioObjectGetPropertyData(output device) returned %ld\n",
+ (long)status);
+ return;
+ }
+@@ -282,23 +283,22 @@ void QuartzAudioInit(void)
+ }
+
+ // Get the basic device description
+- propertySize = sizeof(outputStreamDescription);
+- status = AudioDeviceGetProperty(outputDevice, 0, FALSE,
+- kAudioDevicePropertyStreamFormat,
+- &propertySize, &outputStreamDescription);
++ sampleRate = 0.;
++ propertySize = sizeof(sampleRate);
++ status = AudioObjectGetPropertyData(outputDevice, &sampleRatePropertyAddress,
++ 0, NULL,
++ &propertySize, &sampleRate);
+ if (status) {
+- ErrorF("QuartzAudioInit: GetProperty(stream format) returned %ld\n",
++ ErrorF("QuartzAudioInit: AudioObjectGetPropertyData(sample rate) returned %ld\n",
+ (long)status);
+ return;
+ }
+- sampleRate = outputStreamDescription.mSampleRate;
+
+ // Fill in the playback data
+ data.frequency = 0;
+ data.amplitude = 0;
+ data.curFrame = 0;
+ data.remainingFrames = 0;
+- data.bytesPerFrame = outputStreamDescription.mBytesPerFrame;
+ data.sampleRate = sampleRate;
+ // data.bufferByteCount = bufferByteCount;
+ data.playing = FALSE;
+--
+1.6.6.1
+
Added: trunk/dports/x11/xorg-server/files/0004-XQuartz-Use-an-empty-xkb-keymap-by-default.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0004-XQuartz-Use-an-empty-xkb-keymap-by-default.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0004-XQuartz-Use-an-empty-xkb-keymap-by-default.patch 2010-02-17 00:27:30 UTC (rev 63840)
@@ -0,0 +1,86 @@
+From 89727d3db19a6eaa06125b982fff866a88901ce9 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston <jeremyhu at apple.com>
+Date: Wed, 10 Feb 2010 15:52:14 -0800
+Subject: [PATCH 4/6] XQuartz: Use an empty xkb keymap by default
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ hw/xquartz/darwin.c | 6 ++++++
+ hw/xquartz/quartzKeyboard.c | 16 +++++-----------
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
+index 3feacdc..066f5a5 100644
+--- a/hw/xquartz/darwin.c
++++ b/hw/xquartz/darwin.c
+@@ -45,6 +45,7 @@
+ #include "site.h"
+ #include "globals.h"
+ #include "dix.h"
++#include "xkbsrv.h"
+
+ #include <X11/extensions/XI.h>
+ #include <X11/extensions/XIproto.h>
+@@ -461,6 +462,11 @@ int DarwinParseModifierList(const char *constmodifiers, int separatelr)
+ */
+ void InitInput( int argc, char **argv )
+ {
++ XkbRMLVOSet rmlvo = { .rules = "base", .model = "empty", .layout = "empty",
++ .variant = NULL, .options = NULL };
++ /* We need to really have rules... or something... */
++ XkbSetRulesDflts(&rmlvo);
++
+ darwinKeyboard = AddInputDevice(serverClient, DarwinKeybdProc, TRUE);
+ RegisterKeyboardDevice( darwinKeyboard );
+ darwinKeyboard->name = strdup("keyboard");
+diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
+index 3b4eac3..7e36a9a 100644
+--- a/hw/xquartz/quartzKeyboard.c
++++ b/hw/xquartz/quartzKeyboard.c
+@@ -301,9 +301,6 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) {
+ // for a kIOHIDParamConnectType connection.
+ assert(darwinParamConnect = NXOpenEventStatus());
+
+- /* We need to really have rules... or something... */
+- //XkbSetRulesDflts("base", "pc105", "us", NULL, NULL);
+-
+ InitKeyboardDeviceStruct(pDev, NULL, DarwinKeyboardBell, DarwinChangeKeyboardControl);
+
+ DarwinKeyboardReloadHandler();
+@@ -775,12 +772,9 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
+ #endif
+ }
+
+- // There seems to be an issue with this in 1.5+, shift-space is not
+- // producing space, it's sending NoSymbol... ?
+- //if (k[3] == k[2]) k[3] = 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[0] && k[2] == k[1] && k[2] == NoSymbol) k[3] = NoSymbol;
++ if (k[3] == k[2]) k[3] = 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.. */
+@@ -791,7 +785,7 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
+
+ if (k[0] == NoSymbol && k[1] == NoSymbol
+ && k[2] == NoSymbol && k[3] == NoSymbol)
+- k[0] = k[1] = k[2] = k[3] = known_keys[i].keysym;
++ k[0] = known_keys[i].keysym;
+ }
+ }
+
+@@ -804,7 +798,7 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
+ k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY;
+
+ if (k[0] == known_numeric_keys[i].normal)
+- k[0] = k[1] = k[2] = k[3] = known_numeric_keys[i].keypad;
++ k[0] = known_numeric_keys[i].keypad;
+ }
+ }
+
+--
+1.6.6.1
+
Added: trunk/dports/x11/xorg-server/files/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch 2010-02-17 00:27:30 UTC (rev 63840)
@@ -0,0 +1,339 @@
+From 6fe17ebe537692735ae1cf17b66c3d2c155ffdc8 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston <jeremyhu at freedesktop.org>
+Date: Sun, 31 Jan 2010 01:38:53 -0800
+Subject: [PATCH] fb: Revert fb changes that broke XQuartz
+
+http://bugs.freedesktop.org/show_bug.cgi?id=26124
+
+Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
+Revert "fb: backport fb changes from master for src window operations."
+
+This reverts commit 66b6e2fd49fdc650703e56aa176a902e4921251c.
+This reverts commit 2d6a8f668342a5190cdf43b5d385f592d10f5900.
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at freedesktop.org>
+---
+ fb/fb.h | 76 +++++++++++++++++++++----------------------------
+ fb/fbpict.c | 86 ++++++++++++++++---------------------------------------
+ fb/fbtrap.c | 6 +--
+ fb/wfbrename.h | 1 -
+ 4 files changed, 60 insertions(+), 109 deletions(-)
+
+diff --git a/fb/fb.h b/fb/fb.h
+index 8b2839a..37de71e 100644
+--- a/fb/fb.h
++++ b/fb/fb.h
+@@ -700,41 +700,38 @@ typedef struct {
+ #define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix))
+ #define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix))
+
+-#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \
+- if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
+- (pixmap) = fbGetWindowPixmap(pDrawable); \
+- (xoff) = __fbPixOffXWin(pixmap); \
+- (yoff) = __fbPixOffYWin(pixmap); \
+- } else { \
+- (pixmap) = (PixmapPtr) (pDrawable); \
+- (xoff) = __fbPixOffXPix(pixmap); \
+- (yoff) = __fbPixOffYPix(pixmap); \
+- } \
+- fbPrepareAccess(pDrawable); \
+-}
+-
+-#define fbGetPixmapBitsData(pixmap, pointer, stride, bpp) { \
+- (pointer) = (FbBits *) (pixmap)->devPrivate.ptr; \
+- (stride) = ((int) (pixmap)->devKind) / sizeof (FbBits); (void)(stride); \
+- (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
+-}
+-
+-#define fbGetPixmapStipData(pixmap, pointer, stride, bpp) { \
+- (pointer) = (FbStip *) (pixmap)->devPrivate.ptr; \
+- (stride) = ((int) (pixmap)->devKind) / sizeof (FbStip); (void)(stride); \
+- (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
+-}
+-
+-#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
+- PixmapPtr _pPix; \
+- fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
+- fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \
++#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
++ PixmapPtr _pPix; \
++ if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
++ _pPix = fbGetWindowPixmap(pDrawable); \
++ (xoff) = __fbPixOffXWin(_pPix); \
++ (yoff) = __fbPixOffYWin(_pPix); \
++ } else { \
++ _pPix = (PixmapPtr) (pDrawable); \
++ (xoff) = __fbPixOffXPix(_pPix); \
++ (yoff) = __fbPixOffYPix(_pPix); \
++ } \
++ fbPrepareAccess(pDrawable); \
++ (pointer) = (FbBits *) _pPix->devPrivate.ptr; \
++ (stride) = ((int) _pPix->devKind) / sizeof (FbBits); (void)(stride); \
++ (bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
+ }
+
+-#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
+- PixmapPtr _pPix; \
+- fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
+- fbGetPixmapStipData(_pPix, pointer, stride, bpp); \
++#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
++ PixmapPtr _pPix; \
++ if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
++ _pPix = fbGetWindowPixmap(pDrawable); \
++ (xoff) = __fbPixOffXWin(_pPix); \
++ (yoff) = __fbPixOffYWin(_pPix); \
++ } else { \
++ _pPix = (PixmapPtr) (pDrawable); \
++ (xoff) = __fbPixOffXPix(_pPix); \
++ (yoff) = __fbPixOffYPix(_pPix); \
++ } \
++ fbPrepareAccess(pDrawable); \
++ (pointer) = (FbStip *) _pPix->devPrivate.ptr; \
++ (stride) = ((int) _pPix->devKind) / sizeof (FbStip); (void)(stride); \
++ (bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
+ }
+
+ /*
+@@ -2082,16 +2079,9 @@ fbFillRegionSolid (DrawablePtr pDrawable,
+ FbBits xor);
+
+ extern _X_EXPORT pixman_image_t *
+-image_from_pict (PicturePtr pict,
+- Bool has_clip,
+- Bool is_src);
+-
+-extern _X_EXPORT pixman_image_t *
+-image_from_pict_18 (PicturePtr pict,
+- Bool has_clip,
+- int *xoff,
+- int *yoff);
+-
++image_from_pict (PicturePtr pict,
++ Bool has_clip,
++ Bool is_src);
+ extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
+
+ #endif /* _FB_H_ */
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index c046bae..8fdaa58 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -158,24 +158,19 @@ fbComposite (CARD8 op,
+ CARD16 height)
+ {
+ pixman_image_t *src, *mask, *dest;
+- int src_xoff, src_yoff;
+- int msk_xoff, msk_yoff;
+- int dst_xoff, dst_yoff;
+
+- miCompositeSourceValidate (pSrc, xSrc - xDst, ySrc - yDst, width, height);
++ miCompositeSourceValidate (pSrc, xSrc, ySrc, width, height);
+ if (pMask)
+- miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height);
++ miCompositeSourceValidate (pMask, xMask, yMask, width, height);
+
+- src = image_from_pict_18 (pSrc, FALSE, &src_xoff, &src_yoff);
+- mask = image_from_pict_18 (pMask, FALSE, &msk_xoff, &msk_yoff);
+- dest = image_from_pict_18 (pDst, TRUE, &dst_xoff, &dst_yoff);
++ src = image_from_pict (pSrc, TRUE, TRUE);
++ mask = image_from_pict (pMask, TRUE, TRUE);
++ dest = image_from_pict (pDst, TRUE, FALSE);
+
+ if (src && dest && !(pMask && !mask))
+ {
+ pixman_image_composite (op, src, mask, dest,
+- xSrc + src_xoff, ySrc + src_yoff,
+- xMask + msk_xoff, yMask + msk_yoff,
+- xDst + dst_xoff, yDst + dst_yoff,
++ xSrc, ySrc, xMask, yMask, xDst, yDst,
+ width, height);
+ }
+
+@@ -275,22 +270,22 @@ create_conical_gradient_image (PictGradient *gradient)
+
+ static pixman_image_t *
+ create_bits_picture (PicturePtr pict,
+- Bool has_clip,
+- int *xoff,
+- int *yoff)
++ Bool has_clip)
+ {
+- PixmapPtr pixmap;
+ FbBits *bits;
+ FbStride stride;
+- int bpp;
++ int bpp, xoff, yoff;
+ pixman_image_t *image;
+
+- fbGetDrawablePixmap (pict->pDrawable, pixmap, *xoff, *yoff);
+- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
++ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
++
++ bits = (FbBits*)((CARD8*)bits +
++ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
++ (pict->pDrawable->x + xoff) * (bpp / 8));
+
+ image = pixman_image_create_bits (
+ pict->format,
+- pixmap->drawable.width, pixmap->drawable.height,
++ pict->pDrawable->width, pict->pDrawable->height,
+ (uint32_t *)bits, stride * sizeof (FbStride));
+
+
+@@ -316,52 +311,30 @@ create_bits_picture (PicturePtr pict,
+ if (pict->clientClipType != CT_NONE)
+ pixman_image_set_has_client_clip (image, TRUE);
+
+- if (*xoff || *yoff)
+- pixman_region_translate (pict->pCompositeClip, *xoff, *yoff);
++ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
+
+ pixman_image_set_clip_region (image, pict->pCompositeClip);
+
+- if (*xoff || *yoff)
+- pixman_region_translate (pict->pCompositeClip, -*xoff, -*yoff);
++ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
+ }
+
+ /* Indexed table */
+ if (pict->pFormat->index.devPrivate)
+ pixman_image_set_indexed (image, pict->pFormat->index.devPrivate);
+
+- /* Add in drawable origin to position within the image */
+- *xoff += pict->pDrawable->x;
+- *yoff += pict->pDrawable->y;
+-
+ return image;
+ }
+
+ static void
+-set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++set_image_properties (pixman_image_t *image, PicturePtr pict)
+ {
+ pixman_repeat_t repeat;
+ pixman_filter_t filter;
+
+ if (pict->transform)
+ {
+- /* For source images, adjust the transform to account
+- * for the drawable offset within the pixman image,
+- * then set the offset to 0 as it will be used
+- * to compute positions within the transformed image.
+- */
+- if (!has_clip) {
+- struct pixman_transform adjusted;
+-
+- adjusted = *pict->transform;
+- pixman_transform_translate(&adjusted,
+- NULL,
+- pixman_int_to_fixed(*xoff),
+- pixman_int_to_fixed(*yoff));
+- pixman_image_set_transform (image, &adjusted);
+- *xoff = 0;
+- *yoff = 0;
+- } else
+- pixman_image_set_transform (image, pict->transform);
++ pixman_image_set_transform (
++ image, (pixman_transform_t *)pict->transform);
+ }
+
+ switch (pict->repeatType)
+@@ -388,8 +361,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int
+
+ if (pict->alphaMap)
+ {
+- int alpha_xoff, alpha_yoff;
+- pixman_image_t *alpha_map = image_from_pict_18 (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff);
++ pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE, TRUE);
+
+ pixman_image_set_alpha_map (
+ image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
+@@ -421,9 +393,10 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int
+ pixman_image_set_source_clipping (image, TRUE);
+ }
+
+-
+ pixman_image_t *
+-image_from_pict_18 (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++image_from_pict (PicturePtr pict,
++ Bool has_clip,
++ Bool is_src)
+ {
+ pixman_image_t *image = NULL;
+
+@@ -432,7 +405,7 @@ image_from_pict_18 (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+
+ if (pict->pDrawable)
+ {
+- image = create_bits_picture (pict, has_clip, xoff, yoff);
++ image = create_bits_picture (pict, has_clip);
+ }
+ else if (pict->pSourcePict)
+ {
+@@ -453,22 +426,14 @@ image_from_pict_18 (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+ else if (sp->type == SourcePictTypeConical)
+ image = create_conical_gradient_image (gradient);
+ }
+- *xoff = *yoff = 0;
+ }
+
+ if (image)
+- set_image_properties (image, pict, has_clip, xoff, yoff);
++ set_image_properties (image, pict);
+
+ return image;
+ }
+
+-pixman_image_t *
+-image_from_pict (PicturePtr pict, Bool has_clip, Bool is_src)
+-{
+- int xoff = 0, yoff = 0;
+- return image_from_pict_18(pict, has_clip, &xoff, &yoff);
+-}
+-
+ void
+ free_pixman_pict (PicturePtr pict, pixman_image_t *image)
+ {
+@@ -498,4 +463,3 @@ fbPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+
+ return TRUE;
+ }
+-
+diff --git a/fb/fbtrap.c b/fb/fbtrap.c
+index 5b5aeae..b1e1eff 100644
+--- a/fb/fbtrap.c
++++ b/fb/fbtrap.c
+@@ -40,8 +40,7 @@ fbAddTraps (PicturePtr pPicture,
+ int ntrap,
+ xTrap *traps)
+ {
+- int image_xoff, image_yoff;
+- pixman_image_t *image = image_from_pict_18 (pPicture, FALSE, &image_xoff, &image_yoff);
++ pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
+
+ if (!image)
+ return;
+@@ -57,8 +56,7 @@ fbRasterizeTrapezoid (PicturePtr pPicture,
+ int x_off,
+ int y_off)
+ {
+- int mask_xoff, mask_yoff;
+- pixman_image_t *image = image_from_pict_18 (pPicture, FALSE, &mask_xoff, &mask_yoff);
++ pixman_image_t *image = image_from_pict (pPicture, FALSE, FALSE);
+
+ if (!image)
+ return;
+diff --git a/fb/wfbrename.h b/fb/wfbrename.h
+index e9cdca8..73ee510 100644
+--- a/fb/wfbrename.h
++++ b/fb/wfbrename.h
+@@ -187,5 +187,4 @@
+ #define fbZeroSegment wfbZeroSegment
+ #define free_pixman_pict wfb_free_pixman_pict
+ #define image_from_pict wfb_image_from_pict
+-#define image_from_pict_18 wfb_image_from_pict_18
+ #define composeFunctions wfbComposeFunctions
+--
+1.6.6.1
+
Added: trunk/dports/x11/xorg-server/files/0006-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0006-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0006-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch 2010-02-17 00:27:30 UTC (rev 63840)
@@ -0,0 +1,84 @@
+From 3369deaa34e73540bc3528e1ba3c32e93240c536 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Fri, 15 Jan 2010 11:39:36 +1000
+Subject: [PATCH 6/6] dix: if owner-events is true for passive grabs, add the window mask (#25400)
+
+A client requesting a GrabModeSync button grab, owner-events true, with only
+the ButtonRelease mask set would never receive the press event even if the
+grab window had the ButtonPress mask set.
+
+The protocol requires that if owner-events is true, then the delivery mask
+is the combination of the grab mask + the window event mask.
+
+X.Org Bug 25400 <http://bugs.freedesktop.org/show_bug.cgi?id=25400>
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+Tested-by: Jim Ramsay <i.am at jimramsay.com>
+---
+ dix/events.c | 36 ++++++++++++++++++++++++++++++++++++
+ 1 files changed, 36 insertions(+), 0 deletions(-)
+
+diff --git a/dix/events.c b/dix/events.c
+index 85c8f9a..b854d98 100644
+--- a/dix/events.c
++++ b/dix/events.c
+@@ -3580,6 +3580,8 @@ CheckPassiveGrabsOnWindow(
+ xE = &core;
+ count = 1;
+ mask = grab->eventMask;
++ if (grab->ownerEvents)
++ mask |= pWin->eventMask;
+ } else if (match & XI2_MATCH)
+ {
+ rc = EventToXI2((InternalEvent*)event, &xE);
+@@ -3601,6 +3603,24 @@ CheckPassiveGrabsOnWindow(
+ mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
+ else if (event->type == XI_Enter || event->type == XI_FocusIn)
+ mask = grab->xi2mask[device->id][event->type/8];
++
++ if (grab->ownerEvents && wOtherInputMasks(grab->window))
++ {
++ InputClientsPtr icp =
++ wOtherInputMasks(grab->window)->inputClients;
++
++ while(icp)
++ {
++ if (rClient(icp) == rClient(grab))
++ {
++ int evtype = (xE) ? ((xGenericEvent*)xE)->evtype : event->type;
++ mask |= icp->xi2mask[device->id][evtype/8];
++ break;
++ }
++
++ icp = icp->next;
++ }
++ }
+ } else
+ {
+ rc = EventToXI((InternalEvent*)event, &xE, &count);
+@@ -3612,6 +3632,22 @@ CheckPassiveGrabsOnWindow(
+ continue;
+ }
+ mask = grab->eventMask;
++ if (grab->ownerEvents && wOtherInputMasks(grab->window))
++ {
++ InputClientsPtr icp =
++ wOtherInputMasks(grab->window)->inputClients;
++
++ while(icp)
++ {
++ if (rClient(icp) == rClient(grab))
++ {
++ mask |= icp->mask[device->id];
++ break;
++ }
++
++ icp = icp->next;
++ }
++ }
+ }
+
+ (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
+--
+1.6.6.1
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100216/bdff2d28/attachment-0001.html>
More information about the macports-changes
mailing list