Makefile.am | 7 + Xext/xselinux.c | 22 +-- Xext/xselinux.h | 45 ++++++- Xi/queryst.c | 14 +- Xi/xiquerydevice.c | 41 ++++--- Xi/xiquerydevice.h | 8 - composite/compinit.c | 4 configure.ac | 56 +++++++-- dev/null |binary dix/Makefile.am | 9 - dix/colormap.c | 3 dix/cursor.c | 3 dix/devices.c | 15 +- dix/dixfonts.c | 2 dix/events.c | 73 +++++++----- exa/exa_driver.c | 4 exa/exa_mixed.c | 4 exa/exa_render.c | 71 +++++++----- glx/glapi.c | 7 + glx/unpack.h | 2 hw/dmx/dmx.c | 3 hw/dmx/dmxwindow.c | 3 hw/dmx/input/dmxinputinit.c | 22 +-- hw/kdrive/fake/Makefile.am | 3 hw/kdrive/fake/kbd.c | 137 ----------------------- hw/kdrive/linux/evdev.c | 15 ++ hw/kdrive/linux/tslib.c | 4 hw/xfree86/Makefile.am | 5 hw/xfree86/common/xf86Events.c | 5 hw/xfree86/common/xf86Init.c | 4 hw/xfree86/common/xf86Mode.c | 29 ++-- hw/xfree86/common/xf86Xinput.c | 26 +--- hw/xfree86/common/xf86cmap.c | 2 hw/xfree86/dri2/dri2ext.c | 2 hw/xfree86/i2c/fi1236.c | 10 - hw/xfree86/loader/loadmod.c | 7 - hw/xfree86/loader/sdksyms.sh | 1 hw/xfree86/modes/xf86Crtc.c | 31 ----- hw/xfree86/modes/xf86EdidModes.c | 51 ++++++++ hw/xfree86/modes/xf86Modes.c | 34 +++++ hw/xfree86/modes/xf86Modes.h | 3 hw/xfree86/os-support/linux/lnx_axp.c | 16 +- hw/xfree86/os-support/linux/lnx_ev56.c | 18 ++- hw/xfree86/os-support/misc/SlowBcopy.c | 62 ++++++---- hw/xfree86/parser/Flags.c | 2 hw/xquartz/X11Application.h | 1 hw/xquartz/X11Application.m | 15 ++ hw/xquartz/X11Controller.h | 5 hw/xquartz/X11Controller.m | 20 +-- hw/xquartz/applewm.c | 20 +-- hw/xquartz/bundle/Info.plist.cpp | 4 hw/xquartz/mach-startup/bundle-main.c | 83 +++++++------- hw/xquartz/mach-startup/stub.c | 2 hw/xquartz/pbproxy/app-main.m | 4 hw/xquartz/pbproxy/main.m | 16 ++ hw/xquartz/quartzKeyboard.c | 193 +++++++++++++++++++++------------ hw/xquartz/xpr/xprFrame.c | 47 +++++++- hw/xwin/InitOutput.c | 2 hw/xwin/Makefile.am | 1 hw/xwin/XWin.rc | 11 - hw/xwin/winmouse.c | 2 hw/xwin/winprocarg.c | 4 hw/xwin/winresource.h | 1 hw/xwin/winscrinit.c | 6 - include/dix.h | 4 m4/dolt.m4 | 3 mi/miinitext.c | 28 +++- miext/rootless/rootless.h | 9 + miext/rootless/rootlessCommon.c | 3 miext/rootless/rootlessCommon.h | 4 miext/rootless/rootlessScreen.c | 4 miext/rootless/rootlessWindow.c | 76 ++---------- miext/rootless/rootlessWindow.h | 2 os/Makefile.am | 4 os/access.c | 3 randr/randrstr.h | 12 +- render/mipict.c | 8 - test/Makefile.am | 4 test/xi2/Makefile.am | 4 xkb/ddxLoad.c | 5 xkb/xkb.c | 2 81 files changed, 845 insertions(+), 652 deletions(-)
New commits: commit 19b24f014f4dad1cc73e2454d15c64ae05ac8ef2 Author: Peter Hutterer <[email protected]> Date: Fri Nov 20 15:29:05 2009 +1000 xserver 1.7.1.902 Signed-off-by: Peter Hutterer <[email protected]> diff --git a/configure.ac b/configure.ac index 29e7da8..cfe8e59 100644 --- a/configure.ac +++ b/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([xorg-server], 1.7.1.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2009-11-6" +AC_INIT([xorg-server], 1.7.1.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2009-11-20" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE commit bebf7b1a342eaa37849a5b373bd1a507052233a8 Author: Julien Cristau <[email protected]> Date: Sat Nov 14 18:39:00 2009 +0100 xfree86: set a sane umask before opening the log Xorg creates its log file following the umask of the user running startx, which may result in a world-writable log. Set umask to 022 to prevent this. Debian bug#555308 <http://bugs.debian.org/555308> See also http://thread.gmane.org/gmane.comp.security.oss.general/2299 Signed-off-by: Julien Cristau <[email protected]> Reviewed-by: Adam Jackson <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit 30be7ceaf228497ac1ff0a1123c1b35e3aa1fc73) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index c9baff3..d3de670 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -1142,8 +1142,10 @@ OsVendorInit(void) signal(SIGCHLD, SIG_DFL); /* Need to wait for child processes */ #endif - if (!beenHere) + if (!beenHere) { + umask(022); xf86LogInit(); + } /* Set stderr to non-blocking. */ #ifndef O_NONBLOCK commit e6872c89bcb8a0308cf83089194051e0ef69fba9 Author: Chase Douglas <[email protected]> Date: Mon Nov 9 22:54:39 2009 -0500 Move FD_CLR above pInfo->read_input The event fd may be invalidated by the pInfo->read_input call. If it is invalidated, the subsequent FD_CLR call will segfault. Thus, the FD_CLR call must precede the pInfo->read_input call. Signed-off-by: Chase Douglas <[email protected]> Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit b5aa2e0a5fe233dc883084a5026013472e85bca4) diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c index 9487fe7..8cd765a 100644 --- a/hw/xfree86/common/xf86Events.c +++ b/hw/xfree86/common/xf86Events.c @@ -263,13 +263,14 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask) (FD_ISSET(pInfo->fd, &devicesWithInput) != 0)) { int sigstate = xf86BlockSIGIO(); - pInfo->read_input(pInfo); - xf86UnblockSIGIO(sigstate); /* * Remove the descriptior from the set because more than one * device may share the same file descriptor. */ FD_CLR(pInfo->fd, &devicesWithInput); + + pInfo->read_input(pInfo); + xf86UnblockSIGIO(sigstate); } pInfo = pInfo->next; } commit a2e4bcc2a02f86ca3c23ccf1b4abc2f1d3fa3218 Author: Peter Hutterer <[email protected]> Date: Tue Nov 10 09:50:50 2009 +1000 dix: increase default number of buttons to 10. Currently the XTEST device is limited to the same number of buttons the core device has. This breaks if a user has a mouse with more than 3 buttons connected and is using a core client to fake button 8+ presses. Rather than expecting all clients to fix themselves, just increase the default number of buttons to 10, which is somewhat a compromise. Ideally, the XTEST devices should adjust themselves to the highest number of buttons available on the slave devices (like the master pointers already do), but that's a taks for another day. Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit 982f6648fd29d085265bf6035c1bf4d1b2499316) diff --git a/dix/devices.c b/dix/devices.c index 7486827..395e19a 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -539,7 +539,7 @@ CoreKeyboardProc(DeviceIntPtr pDev, int what) int CorePointerProc(DeviceIntPtr pDev, int what) { -#define NBUTTONS 7 +#define NBUTTONS 10 #define NAXES 2 BYTE map[NBUTTONS + 1]; int i = 0; commit 2b9ad701967d6fd9c1d98e87ce94a806a05125e5 Author: Jon TURNEY <[email protected]> Date: Sun Nov 1 18:19:14 2009 +0000 Avoid a null dereference if IFF_BROADCAST is set but there is no broadcast address It seems that the getifaddrs() function can return interfaces with IFF_BROADCAST & IFF_UP set, but no broadcast address (at least under Cygwin 1.7, this seems to happen for v6 mapped v4 addresses) Avoid a null dereference if this ever happens Signed-off-by: Jon TURNEY <[email protected]> Reviewed-by: Colin Harrison <[email protected]> (cherry picked from commit 28eb61fc04811bb9bbb523e0a252933313bb16ce) diff --git a/os/access.c b/os/access.c index 8c5b50a..2a171fa 100644 --- a/os/access.c +++ b/os/access.c @@ -811,7 +811,8 @@ DefineSelf (int fd) continue; #endif if ((ifr->ifa_flags & IFF_BROADCAST) && - (ifr->ifa_flags & IFF_UP)) + (ifr->ifa_flags & IFF_UP) && + ifr->ifa_broadaddr) broad_addr = *ifr->ifa_broadaddr; else continue; commit 71f4b404c0c5b4e8f41d779687e026efd580a988 Author: Colin Harrison <[email protected]> Date: Wed Nov 4 15:16:03 2009 +0000 Xming: Add mouse motion events with flag POINTER_SCREEN in winEnqueueMotion() Add mouse motion events with flag POINTER_SCREEN in winEnqueueMotion(), as they are in screen coordindates and may need to be scaled to the axis range appropriately Signed-off-by: Jon TURNEY <[email protected]> (cherry picked from commit 019a601de6a8ae083852c2d384c814dcc7aeeb72) diff --git a/hw/xwin/winmouse.c b/hw/xwin/winmouse.c index b537d32..3d25aeb 100644 --- a/hw/xwin/winmouse.c +++ b/hw/xwin/winmouse.c @@ -382,7 +382,7 @@ void winEnqueueMotion(int x, int y) valuators[0] = x; valuators[1] = y; nevents = GetPointerEvents(events, g_pwinPointer, MotionNotify, 0, - POINTER_ABSOLUTE, 0, 2, valuators); + POINTER_ABSOLUTE | POINTER_SCREEN, 0, 2, valuators); for (i = 0; i < nevents; i++) mieqEnqueue(g_pwinPointer, events[i].event); commit f0325c2f6007f358bcc7c2632476dd6370fa0919 Author: Jon TURNEY <[email protected]> Date: Fri Jun 19 21:12:55 2009 +0100 Cygwin/X: Remove a couple of extraneous '\n' in logged version info Signed-off-by: Jon TURNEY <[email protected]> (cherry picked from commit 2a38f7c0dbc890e6408eee143d77719f265d583d) diff --git a/hw/xwin/winprocarg.c b/hw/xwin/winprocarg.c index f20598d..56af643 100755 --- a/hw/xwin/winprocarg.c +++ b/hw/xwin/winprocarg.c @@ -1514,8 +1514,8 @@ winLogVersionInfo (void) ErrorF ("Welcome to the XWin X Server\n"); ErrorF ("Vendor: %s\n", VENDOR_STRING); - ErrorF ("Release: %d.%d.%d.%d (%d)\n\n", XORG_VERSION_MAJOR, XORG_VERSION_MINOR, XORG_VERSION_PATCH, XORG_VERSION_SNAP, XORG_VERSION_CURRENT); - ErrorF ("Contact: %s\n\n", VENDOR_CONTACT); + ErrorF ("Release: %d.%d.%d.%d (%d)\n", XORG_VERSION_MAJOR, XORG_VERSION_MINOR, XORG_VERSION_PATCH, XORG_VERSION_SNAP, XORG_VERSION_CURRENT); + ErrorF ("Contact: %s\n", VENDOR_CONTACT); } /* commit 20beb2580f33add2ca7911a6d9410422a1d3079b Author: Adam Jackson <[email protected]> Date: Mon Nov 9 11:12:22 2009 -0500 randr: Fill in errorValue when verifying outputs/crtcs/modes Signed-off-by: Adam Jackson <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit c7d1319872e0ae0b7d945e9af8c4027ee5aa2055) diff --git a/randr/randrstr.h b/randr/randrstr.h index af14374..975fe33 100644 --- a/randr/randrstr.h +++ b/randr/randrstr.h @@ -344,24 +344,30 @@ extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType; {\ int rc = dixLookupResourceByType((pointer *)&(ptr), id,\ RROutputType, client, a);\ - if (rc != Success)\ + if (rc != Success) {\ + client->errorValue = id;\ return (rc == BadValue) ? RRErrorBase + BadRROutput : rc;\ + }\ } #define VERIFY_RR_CRTC(id, ptr, a)\ {\ int rc = dixLookupResourceByType((pointer *)&(ptr), id,\ RRCrtcType, client, a);\ - if (rc != Success)\ + if (rc != Success) {\ + client->errorValue = id;\ return (rc == BadValue) ? RRErrorBase + BadRRCrtc : rc;\ + }\ } #define VERIFY_RR_MODE(id, ptr, a)\ {\ int rc = dixLookupResourceByType((pointer *)&(ptr), id,\ RRModeType, client, a);\ - if (rc != Success)\ + if (rc != Success) {\ + client->errorValue = id;\ return (rc == BadValue) ? RRErrorBase + BadRRMode : rc;\ + }\ } #define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey)) commit 2db157924b582933c4b6897505e6f4170e23b56f Author: Dave Airlie <[email protected]> Date: Tue Oct 13 10:15:00 2009 +1000 loader: actually stat something that has some chance of existing. (v2) FindModuleInSubdir seems to expect a / at the end of the subdir its finding for, so we add the / early, the stat will fail if its not a subdir, I'm leaving the S_ISDIR in just in case there is another reason it could return 0. This does look a bit silly in strace but it seems to work fine. I have a very intermittent issue where drivers loses its / that I've been seeing on/off for a while, this may or may not fix it. Signed-off-by: Dave Airlie <[email protected]> Reviewed-by: Julien Cristau <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit d85ab6b6483d6ca7d9d22298d05ed1fa3076b042) diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c index 0b220f1..5b175a5 100644 --- a/hw/xfree86/loader/loadmod.c +++ b/hw/xfree86/loader/loadmod.c @@ -399,8 +399,11 @@ FindModuleInSubdir(const char *dirpath, const char *module) while ((direntry = readdir(dir))) { if (direntry->d_name[0] == '.') continue; - if ((stat(direntry->d_name, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) { - snprintf(tmpBuf, PATH_MAX, "%s/%s", dirpath, direntry->d_name); + snprintf(tmpBuf, PATH_MAX, "%s%s/", dirpath, direntry->d_name); + /* the stat with the appended / fails for normal files, + and works for sub dirs fine, looks a bit strange in strace + but does seem to work */ + if ((stat(tmpBuf, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) { if ((ret = FindModuleInSubdir(tmpBuf, module))) break; continue; commit 7e7e7935eeb86b5990664a662471800cfd2e7ce0 Author: Jeremy Huddleston <[email protected]> Date: Mon Nov 9 13:09:55 2009 -0800 XQuartz: Explicitly pass a bellProc to make XBell() work again. Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 9071b0d69748cfa7ecca17b4cb0e431bbb0ef2a4) diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c index c504762..62b2ebb 100644 --- a/hw/xquartz/quartzKeyboard.c +++ b/hw/xquartz/quartzKeyboard.c @@ -184,6 +184,12 @@ static void DarwinChangeKeyboardControl(DeviceIntPtr device, KeybdCtrl *ctrl) { // keyclick, bell volume / pitch, autorepead, LED's } +static void DarwinKeyboardBell(int volume, DeviceIntPtr pDev, pointer arg, int something) { + KeybdCtrl *ctrl = arg; + + DDXRingBell(volume, ctrl->bell_pitch, ctrl->bell_duration); +} + //----------------------------------------------------------------------------- // Utility functions to help parse Darwin keymap //----------------------------------------------------------------------------- @@ -297,7 +303,7 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) { /* We need to really have rules... or something... */ //XkbSetRulesDflts("base", "pc105", "us", NULL, NULL); - InitKeyboardDeviceStruct(pDev, NULL, NULL, DarwinChangeKeyboardControl); + InitKeyboardDeviceStruct(pDev, NULL, DarwinKeyboardBell, DarwinChangeKeyboardControl); DarwinKeyboardReloadHandler(); commit d6495bb272c9be8b3376d65b16bf0342c5975bd0 Author: Jeremy Huddleston <[email protected]> Date: Tue Oct 27 17:16:57 2009 -0700 XQuartz: pbproxy: Wait for the server to finish starting up, so display is valid. Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit e87a03fd531ce7974877688680d3bf9b85c2d835) diff --git a/hw/xquartz/pbproxy/app-main.m b/hw/xquartz/pbproxy/app-main.m index d4b43c6..f3f683a 100644 --- a/hw/xquartz/pbproxy/app-main.m +++ b/hw/xquartz/pbproxy/app-main.m @@ -37,7 +37,11 @@ static const char *app_prefs_domain = "org.x.X11"; CFStringRef app_prefs_domain_cfstr; +/* Stubs */ char *display = NULL; +BOOL serverInitComplete = YES; +pthread_mutex_t serverInitCompleteMutex = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t serverInitCompleteCond = PTHREAD_COND_INITIALIZER; static void signal_handler (int sig) { switch(sig) { diff --git a/hw/xquartz/pbproxy/main.m b/hw/xquartz/pbproxy/main.m index 5bc5182..d26b1b1 100644 --- a/hw/xquartz/pbproxy/main.m +++ b/hw/xquartz/pbproxy/main.m @@ -47,6 +47,20 @@ BOOL xpbproxy_is_standalone = NO; x_selection *_selection_object; +extern BOOL serverInitComplete; +extern pthread_mutex_t serverInitCompleteMutex; +extern pthread_cond_t serverInitCompleteCond; + +static inline void wait_for_server_init(void) { + /* If the server hasn't finished initializing, wait for it... */ + if(!serverInitComplete) { + pthread_mutex_lock(&serverInitCompleteMutex); + while(!serverInitComplete) + pthread_cond_wait(&serverInitCompleteCond, &serverInitCompleteMutex); + pthread_mutex_unlock(&serverInitCompleteMutex); + } +} + static int x_io_error_handler (Display *dpy) { /* We lost our connection to the server. */ @@ -85,6 +99,8 @@ static void *xpbproxy_x_thread(void *args) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; size_t i; + wait_for_server_init(); + for(i=0, xpbproxy_dpy=NULL; !xpbproxy_dpy && i<5; i++) { xpbproxy_dpy = XOpenDisplay(NULL); commit 909d04000cf3a9a2cc11f7f890f4c14408453e08 Author: Jeremy Huddleston <[email protected]> Date: Sun Nov 8 20:25:42 2009 -0800 XQuartz: Buildfix for Leopard and older Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 15fc56addcc906592af7c0f4c0a5ac906fa5c389) diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h index bb28447..9e16f75 100644 --- a/hw/xquartz/X11Controller.h +++ b/hw/xquartz/X11Controller.h @@ -55,7 +55,11 @@ typedef unsigned int NSUInteger; #endif #endif +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 @interface X11Controller : NSObject <NSTableViewDataSource> +#else +...@interface X11Controller : NSObject +#endif { IBOutlet NSPanel *prefs_panel; diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c index 90f6610..c504762 100644 --- a/hw/xquartz/quartzKeyboard.c +++ b/hw/xquartz/quartzKeyboard.c @@ -40,6 +40,7 @@ #define HACK_MISSING 1 #define HACK_KEYPAD 1 +#include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> commit afc7663f0dc4e268ba12c8065238b34add8bdcdf Author: Jeremy Huddleston <[email protected]> Date: Wed Nov 4 18:39:16 2009 -0800 XQuartz: Cleanup X11Controller.m compilation warnings. Declare X11Controller as implementing NSTableViewDataSource. Use selectRowIndexes:byExtendingSelection instead of selectRow:byExtendingSelection Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 840a68dc5e3b4d285894f86df2a8c41fca5a4bec) diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h index 88f50a1..bb28447 100644 --- a/hw/xquartz/X11Controller.h +++ b/hw/xquartz/X11Controller.h @@ -55,7 +55,7 @@ typedef unsigned int NSUInteger; #endif #endif -...@interface X11Controller : NSObject +...@interface X11Controller : NSObject <NSTableViewDataSource> { IBOutlet NSPanel *prefs_panel; diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m index 1191547..b28f4d3 100644 --- a/hw/xquartz/X11Controller.m +++ b/hw/xquartz/X11Controller.m @@ -426,8 +426,8 @@ [[columns objectAtIndex:2] setIdentifier:@"2"]; [apps_table setDataSource:self]; - [apps_table selectRow:0 byExtendingSelection:NO]; - + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:NO]; + [[apps_table window] makeKeyAndOrderFront:sender]; [apps_table reloadData]; if(oldapps != nil) @@ -474,7 +474,7 @@ [item release]; [apps_table reloadData]; - [apps_table selectRow:row byExtendingSelection:NO]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; } - (IBAction) apps_table_duplicate:sender @@ -497,7 +497,7 @@ [item release]; [apps_table reloadData]; - [apps_table selectRow:row+1 byExtendingSelection:NO]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:row+1] byExtendingSelection:NO]; } - (IBAction) apps_table_delete:sender @@ -519,10 +519,10 @@ row = MIN (row, [table_apps count] - 1); if (row >= 0) - [apps_table selectRow:row byExtendingSelection:NO]; + [apps_table selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; } -- (int) numberOfRowsInTableView:(NSTableView *)tableView +- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView { if (table_apps == nil) return 0; @@ -530,7 +530,7 @@ } - (id) tableView:(NSTableView *)tableView -objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row +objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSArray *item; int col; @@ -547,7 +547,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row } - (void) tableView:(NSTableView *)tableView setObjectValue:(id)object - forTableColumn:(NSTableColumn *)tableColumn row:(int)row + forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSMutableArray *item; int col; commit 6b70e145b7544a36c05e8bef960f377cc52e0ddc Author: Jeremy Huddleston <[email protected]> Date: Wed Nov 4 18:15:08 2009 -0800 XQuartz: Use dixLookupResourceByType instead of LookupIDByType Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 0e3ad44c3b05cbe7b1d8f5ce7949fec3c7ae2e7c) diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c index d2cca13..d1a6175 100644 --- a/hw/xquartz/applewm.c +++ b/hw/xquartz/applewm.c @@ -213,10 +213,11 @@ static int WMFreeClient (pointer data, XID id) { WMEventPtr pEvent; WMEventPtr *pHead, pCur, pPrev; + int i; pEvent = (WMEventPtr) data; - pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType); - if (pHead) { + i = dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, serverClient, DixReadAccess | DixWriteAccess | DixDestroyAccess); + if (i == Success && pHead) { pPrev = 0; for (pCur = *pHead; pCur && pCur != pEvent; pCur=pCur->next) pPrev = pCur; @@ -254,12 +255,12 @@ ProcAppleWMSelectInput (register ClientPtr client) REQUEST(xAppleWMSelectInputReq); WMEventPtr pEvent, pNewEvent, *pHead; XID clientResource; + int i; REQUEST_SIZE_MATCH (xAppleWMSelectInputReq); - pHead = (WMEventPtr *)SecurityLookupIDByType(client, - eventResource, EventType, DixWriteAccess); + i = dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, client, DixWriteAccess); if (stuff->mask != 0) { - if (pHead) { + if (i == Success && pHead) { /* check for existing entry. */ for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { @@ -293,7 +294,7 @@ ProcAppleWMSelectInput (register ClientPtr client) * the list may be arbitrarily rearranged which cannot be * done through the resource database. */ - if (!pHead) + if (i != Success || !pHead) { pHead = (WMEventPtr *) xalloc (sizeof (WMEventPtr)); if (!pHead || @@ -309,7 +310,7 @@ ProcAppleWMSelectInput (register ClientPtr client) updateEventMask (pHead); } else if (stuff->mask == 0) { /* delete the interest */ - if (pHead) { + if (i == Success && pHead) { pNewEvent = 0; for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { if (pEvent->client == client) @@ -342,9 +343,10 @@ AppleWMSendEvent (int type, unsigned int mask, int which, int arg) { WMEventPtr *pHead, pEvent; ClientPtr client; xAppleWMNotifyEvent se; + int i; - pHead = (WMEventPtr *) LookupIDByType(eventResource, EventType); - if (!pHead) + i = dixLookupResourceByType((pointer *)&pHead, eventResource, EventType, serverClient, DixReadAccess); + if (i != Success || !pHead) return; for (pEvent = *pHead; pEvent; pEvent = pEvent->next) { client = pEvent->client; commit f203963678d42644a803bc45e82b08e6bde0b2a7 Author: Jeremy Huddleston <[email protected]> Date: Wed Nov 4 16:18:06 2009 -0800 XQuartz: Don't weed out duplicates in generated keymap There seems to be an issue in the 1.5+ server where shift-space does not produce a space when 'keycode 57 = space' but it does when 'keycode 57 = space space' Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 069fc6ce0a0e7f2c418e11941568ffcc52b6b331) diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c index 1b3c27e..90f6610 100644 --- a/hw/xquartz/quartzKeyboard.c +++ b/hw/xquartz/quartzKeyboard.c @@ -387,6 +387,7 @@ void DarwinKeyboardReloadHandler(void) { keySyms.minKeyCode = MIN_KEYCODE; keySyms.maxKeyCode = MAX_KEYCODE; + // TODO: We should build the entire XkbDescRec and use XkbCopyKeymap /* Apply the mappings to darwinKeyboard */ XkbApplyMappingChange(darwinKeyboard, &keySyms, keySyms.minKeyCode, keySyms.maxKeyCode - keySyms.minKeyCode + 1, @@ -767,9 +768,12 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { #endif } - 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; + // 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; } /* Fix up some things that are normally missing.. */ @@ -780,7 +784,7 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { if (k[0] == NoSymbol && k[1] == NoSymbol && k[2] == NoSymbol && k[3] == NoSymbol) - k[0] = known_keys[i].keysym; + k[0] = k[1] = k[2] = k[3] = known_keys[i].keysym; } } @@ -793,7 +797,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] = known_numeric_keys[i].keypad; + k[0] = k[1] = k[2] = k[3] = known_numeric_keys[i].keypad; } } commit dfb0c502946853a5a4b39a3e9814e8d576749d69 Author: Jeremy Huddleston <[email protected]> Date: Wed Nov 4 13:34:20 2009 -0800 XQuartz: Controller thread launches clients This avoids a memory leak due to no active auto-release pool on the server thread. Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 6d6e8fb27f00f0c3128cef624b39a60aa754fdc8) diff --git a/hw/xquartz/X11Application.h b/hw/xquartz/X11Application.h index 5e828a4..d7e9a5f 100644 --- a/hw/xquartz/X11Application.h +++ b/hw/xquartz/X11Application.h @@ -71,6 +71,7 @@ void X11ApplicationSetFrontProcess (void); void X11ApplicationSetCanQuit (int state); void X11ApplicationServerReady (void); void X11ApplicationShowHideMenubar (int state); +void X11ApplicationLaunchClient (const char *cmd); void X11ApplicationMain(int argc, char **argv, char **envp); diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index 2c95485..f3c8a30 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -411,6 +411,9 @@ static void message_kit_thread (SEL selector, NSObject *arg) { SetSystemUIMode(kUIModeAllHidden, quartzFullscreenMenu ? kUIOptionAutoShowMenuBar : 0); // kUIModeAllSuppressed or kUIOptionAutoShowMenuBar can be used to allow "mouse-activation" } +- (void) launch_client:(NSString *)cmd { + (void)[_controller application:self openFile:cmd]; +} /* user preferences */ @@ -856,6 +859,16 @@ void X11ApplicationShowHideMenubar (int state) { [n release]; } +void X11ApplicationLaunchClient (const char *cmd) { + NSString *string; + + string = [[NSString alloc] initWithUTF8String:cmd]; + + message_kit_thread (@selector (launch_client:), string); + + [string release]; +} + static void check_xinitrc (void) { char *tem, buf[1024]; NSString *msg; @@ -961,12 +974,6 @@ void X11ApplicationMain (int argc, char **argv, char **envp) { /* not reached */ } -void launch_client(const char *cmd) { - NSString *string = [[NSString alloc] initWithUTF8String:cmd]; - [[X11App controller] launch_client:string]; - [string release]; -} - @implementation X11Application (Private) #ifdef NX_DEVICELCMDKEYMASK diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h index 3d8e007..88f50a1 100644 --- a/hw/xquartz/X11Controller.h +++ b/hw/xquartz/X11Controller.h @@ -120,6 +120,7 @@ typedef unsigned int NSUInteger; #endif - (void) set_can_quit:(OSX_BOOL)state; - (void) server_ready; +- (OSX_BOOL) application:(NSApplication *)app openFile:(NSString *)filename; - (IBAction) apps_table_show:(id)sender; - (IBAction) apps_table_done:(id)sender; @@ -144,6 +145,5 @@ typedef unsigned int NSUInteger; #endif /* __OBJC__ */ void X11ControllerMain(int argc, char **argv, char **envp); -void launch_client(const char *cmd); #endif /* X11CONTROLLER_H */ diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c index 5bbb9c9..1b3c27e 100644 --- a/hw/xquartz/quartzKeyboard.c +++ b/hw/xquartz/quartzKeyboard.c @@ -408,7 +408,7 @@ void DarwinKeyboardReloadHandler(void) { if (access(xmodmap, F_OK) == 0) { if (access(sysmodmap, F_OK) == 0) { snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, sysmodmap); - launch_client(cmd); + X11ApplicationLaunchClient(cmd); } } @@ -417,7 +417,7 @@ void DarwinKeyboardReloadHandler(void) { snprintf (usermodmap, sizeof(usermodmap), "%s/.Xmodmap", homedir); if (access(usermodmap, F_OK) == 0) { snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, usermodmap); - launch_client(cmd); + X11ApplicationLaunchClient(cmd); } } } commit 2d55b842b8cda6a0292269304c9d86ff90dec40f Author: Peter Hutterer <[email protected]> Date: Fri Nov 6 14:38:22 2009 +1000 xserver 1.7.1.901 Signed-off-by: Peter Hutterer <[email protected]> diff --git a/configure.ac b/configure.ac index 9a86f5f..29e7da8 100644 --- a/configure.ac +++ b/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([xorg-server], 1.7.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2009-10-23" +AC_INIT([xorg-server], 1.7.1.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2009-11-6" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2 foreign]) AM_MAINTAINER_MODE commit 4fe904f2d50d4a7cc68ab6056483b6d8b4178539 Author: Alan Coopersmith <[email protected]> Date: Thu Nov 5 11:42:34 2009 -0800 Enable XF86PM on all Solaris platforms, not just x86/x64 Signed-off-by: Alan Coopersmith <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit f7b375bd141d0cf1e3add5443a5838dd8f554ef6) diff --git a/configure.ac b/configure.ac index e913c66..9a86f5f 100644 --- a/configure.ac +++ b/configure.ac @@ -1529,6 +1529,7 @@ if test "x$XORG" = xyes; then solaris*) XORG_OS="solaris" XORG_OS_SUBDIR="solaris" + XORG_CFLAGS="$XORG_CFLAGS -DXF86PM" # Use the same stubs as BSD for old functions, since we now # use libpciaccess for PCI xorg_bus_bsdpci="yes" @@ -1561,7 +1562,6 @@ if test "x$XORG" = xyes; then else SOLARIS_INOUT_ARCH="ia32" fi - XORG_CFLAGS="$XORG_CFLAGS -DXF86PM" ;; *) AC_MSG_ERROR([Unsupported Solaris platform. Only SPARC & x86 \ commit f0dc842b1487edeb6c058cdb92995e2a4673028c Author: Alan Coopersmith <[email protected]> Date: Thu Nov 5 11:42:33 2009 -0800 Use $(MAKE) instead of "make" to build Solaris inline assembly Signed-off-by: Alan Coopersmith <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit f77262513ea17401092479e17ad20fc0eb91ffb5) diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am index 159b935..914e11f 100644 --- a/hw/xfree86/Makefile.am +++ b/hw/xfree86/Makefile.am @@ -92,7 +92,8 @@ if SOLARIS_ASM_INLINE BUILT_SOURCES += os-support/solaris/solar...@[email protected] os-support/solaris/solar...@[email protected]: - cd os-support/solaris ; make solar...@[email protected] + cd os-support/solaris ; \ + $(MAKE) $(AM_MAKEFLAGS) solar...@[email protected] endif # do not use $(mkdir_p) if you want automake 1.7 to work commit 05d6672a1b551916e832d24920a97b6eed8fa026 Author: Tiago Vignatti <[email protected]> Date: Wed Nov 4 15:35:37 2009 +0200 EXA: Preserve pPixmap->devPrivate.ptr in exaPixmapIsOffscreen_driver It crash the server when the drawable is 32 bit and the framebuffer is 16. This is pretty much a copy-past from commit 8e873185. Signed-off-by: Tiago Vignatti <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit 964040764387d89ef64324cfbee31872ee6ce41c) diff --git a/exa/exa_driver.c b/exa/exa_driver.c index 9703695..a9165a1 100644 --- a/exa/exa_driver.c +++ b/exa/exa_driver.c @@ -204,11 +204,13 @@ exaPixmapIsOffscreen_driver(PixmapPtr pPixmap) { ScreenPtr pScreen = pPixmap->drawable.pScreen; ExaScreenPriv(pScreen); + pointer saved_ptr; Bool ret; + saved_ptr = pPixmap->devPrivate.ptr; pPixmap->devPrivate.ptr = ExaGetPixmapAddress(pPixmap); ret = pExaScr->info->PixmapIsOffscreen(pPixmap); - pPixmap->devPrivate.ptr = NULL; + pPixmap->devPrivate.ptr = saved_ptr; return ret; } commit 269202982d4a3ab8bb31caa0fd72088d61eba66c Author: Rami Ylimaki <[email protected]> Date: Wed Nov 4 15:59:30 2009 +0200 dix: Fixes a memory leak when a cursor resource is released. Just open and close a client that creates cursors in order to reproduce. In the problem case bits->refcnt is -1 and therefore bits->devPrivates is never released. Signed-off-by: Rami Ylimaki <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit 0573042cddb6f9942e408687a16c6842e62a8bfa) diff --git a/dix/cursor.c b/dix/cursor.c index 086d008..6103b15 100644 --- a/dix/cursor.c +++ b/dix/cursor.c @@ -86,6 +86,8 @@ FreeCursorBits(CursorBitsPtr bits) #ifdef ARGB_CURSOR xfree(bits->argb); #endif + dixFreePrivates(bits->devPrivates); + bits->devPrivates = NULL; if (bits->refcnt == 0) { GlyphSharePtr *prev, this; @@ -100,7 +102,6 @@ FreeCursorBits(CursorBitsPtr bits) CloseFont(this->font, (Font)0); xfree(this); } - dixFreePrivates(bits->devPrivates); xfree(bits); -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

