[Xquartz-changes] xserver: Branch 'master' - 2 commits

Jeremy Huddleston jeremyhu at freedesktop.org
Mon Nov 22 20:27:56 PST 2010


 hw/xquartz/X11Application.m |   46 ++++++++++++++++++
 hw/xquartz/xpr/dri.c        |  112 --------------------------------------------
 2 files changed, 46 insertions(+), 112 deletions(-)

New commits:
commit 6eed13ad5998ba80296bba2bb3f89928ee51194a
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date:   Mon Nov 22 20:25:33 2010 -0800

    XQuartz dri: Don't check CoreGraphics version
    
    The version check is hackish, and I highly doubt anyone using this code is on
    a version of OS X that predates this support (10.2 has support for it).
    
    Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>

diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
index 0d2c51a..3474d27 100644
--- a/hw/xquartz/xpr/dri.c
+++ b/hw/xquartz/xpr/dri.c
@@ -89,14 +89,6 @@ static x_hash_table *surface_hash;      /* maps surface ids -> drawablePrivs */
 
 static Bool DRIFreePixmapImp(DrawablePtr pDrawable);
 
-/* FIXME: don't hardcode this? */
-#define CG_INFO_FILE "/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Resources/Info-macos.plist"
-
-/* Corresponds to SU Jaguar Green */
-#define CG_REQUIRED_MAJOR 1
-#define CG_REQUIRED_MINOR 157
-#define CG_REQUIRED_MICRO 11
-
 typedef struct {
     DrawablePtr pDrawable;
     int refCount;
@@ -109,96 +101,6 @@ typedef struct {
     void *buffer;       
 } DRIPixmapBuffer, *DRIPixmapBufferPtr;
 
-/* Returns version as major.minor.micro in 10.10.10 fixed form */
-static unsigned int
-get_cg_version (void)
-{
-    static unsigned int version;
-
-    FILE *fh;
-    char *ptr;
-
-    if (version != 0)
-        return version;
-
-    /* I tried CFBundleGetVersion, but it returns zero, so.. */
-
-    fh = fopen (CG_INFO_FILE, "r");
-    if (fh != NULL)
-    {
-        char buf[256];
-
-        while (fgets (buf, sizeof (buf), fh) != NULL)
-        {
-            unsigned char c;
-
-            if (!strstr (buf, "<key>CFBundleShortVersionString</key>")
-                || fgets (buf, sizeof (buf), fh) == NULL)
-            {
-                continue;
-            }
-
-            ptr = strstr (buf, "<string>");
-            if (ptr == NULL)
-                continue;
-
-            ptr += strlen ("<string>");
-
-            /* Now PTR points to "MAJOR.MINOR.MICRO". */
-
-            version = 0;
-
-        again:
-            switch ((c = *ptr++))
-            {
-            case '.':
-                version = version * 1024;
-                goto again;
-
-            case '0': case '1': case '2': case '3': case '4':
-            case '5': case '6': case '7': case '8': case '9':
-                version = ((version & ~0x3ff)
-                          + (version & 0x3ff) * 10 + (c - '0'));
-                goto again;
-            }
-            break;
-        }
-
-        fclose (fh);
-    }
-
-    return version;
-}
-
-static Bool
-test_cg_version (unsigned int major, unsigned int minor, unsigned int micro)
-{
-    unsigned int cg_ver = get_cg_version ();
-
-    unsigned int cg_major = (cg_ver >> 20) & 0x3ff;
-    unsigned int cg_minor = (cg_ver >> 10) & 0x3ff;
-    unsigned int cg_micro =  cg_ver        & 0x3ff;
-
-    if (cg_major > major)
-        return TRUE;
-    else if (cg_major < major)
-        return FALSE;
-
-    /* cg_major == major */
-
-    if (cg_minor > minor)
-        return TRUE;
-    else if (cg_minor < minor)
-        return FALSE;
-
-    /* cg_minor == minor */
-
-    if (cg_micro < micro)
-        return FALSE;
-
-    return TRUE;
-}
-
 Bool
 DRIScreenInit(ScreenPtr pScreen)
 {
@@ -224,20 +126,6 @@ DRIScreenInit(ScreenPtr pScreen)
     pDRIPriv->directRenderingSupport = TRUE;
     pDRIPriv->nrWindows = 0;
 
-    /* Need recent cg for window access update */
-    if (!test_cg_version (CG_REQUIRED_MAJOR,
-                          CG_REQUIRED_MINOR,
-                          CG_REQUIRED_MICRO))
-    {
-        ErrorF ("[DRI] disabled direct rendering; requires CoreGraphics %d.%d.%d\n",
-                CG_REQUIRED_MAJOR, CG_REQUIRED_MINOR, CG_REQUIRED_MICRO);
-
-        pDRIPriv->directRenderingSupport = FALSE;
-
-        /* Note we don't nuke the dri private, since we need it for
-           managing indirect surfaces. */
-    }
-
     /* Initialize drawable tables */
     for (i = 0; i < DRI_MAX_DRAWABLES; i++) {
         pDRIPriv->DRIDrawables[i] = NULL;
commit a4698754c1da1cf2ca64add5276d0c6012960504
Author: Jeremy Huddleston <jeremyhu at apple.com>
Date:   Sun Nov 21 10:49:24 2010 -0800

    XQuartz: Add pointer debugging
    
    Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>

diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
index 8f4f23f..c3563b6 100644
--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -1023,6 +1023,34 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
 }
 #endif
 
+#ifdef DEBUG_UNTRUSTED_POINTER_DELTA
+static const char *untrusted_str(NSEvent *e) {
+    switch([e type]) {
+        case NSScrollWheel:
+            return "NSScrollWheel";
+        case NSTabletPoint:
+            return "NSTabletPoint";
+        case NSOtherMouseDown:
+            return "NSOtherMouseDown";
+        case NSOtherMouseUp:
+            return "NSOtherMouseUp";
+        case NSLeftMouseDown:
+            return "NSLeftMouseDown";
+        case NSLeftMouseUp:
+            return "NSLeftMouseUp";
+        default:
+            switch([e subtype]) {
+                case NSTabletPointEventSubtype:
+                    return "NSTabletPointEventSubtype";
+                case NSTabletProximityEventSubtype:
+                    return "NSTabletProximityEventSubtype";
+                default:
+                    return "Other";
+            }
+    }
+}
+#endif
+
 - (void) sendX11NSEvent:(NSEvent *)e {
     NSPoint location = NSZeroPoint, tilt = NSZeroPoint;
     int ev_button, ev_type;
@@ -1060,6 +1088,10 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
         // The deltaXY for scroll events correspond to the scroll delta, not the pointer delta
         // <rdar://problem/7989690> deltaXY for wheel events are being sent as mouse movement
         hasUntrustedPointerDelta = hasUntrustedPointerDelta || [e type] == NSScrollWheel;
+
+#ifdef DEBUG_UNTRUSTED_POINTER_DELTA
+        hasUntrustedPointerDelta = hasUntrustedPointerDelta || [e type] == NSLeftMouseDown || [e type] == NSLeftMouseUp;
+#endif
         
         if (window != nil)	{
             NSRect frame = [window frame];
@@ -1068,8 +1100,22 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
             location.y += frame.origin.y;
             lastpt = location;
         } else if(hasUntrustedPointerDelta) {
+#ifdef DEBUG_UNTRUSTED_POINTER_DELTA
+            ErrorF("--- Begin Event Debug ---\n");
+            ErrorF("Event type: %s\n", untrusted_str(e));
+            ErrorF("old lastpt: (%0.2f, %0.2f)\n", lastpt.x, lastpt.y);
+            ErrorF("     delta: (%0.2f, %0.2f)\n", [e deltaX], -[e deltaY]);
+            ErrorF("  location: (%0.2f, %0.2f)\n", lastpt.x + [e deltaX], lastpt.y - [e deltaY]);
+            ErrorF("workaround: (%0.2f, %0.2f)\n", [e locationInWindow].x, [e locationInWindow].y);
+            ErrorF("--- End Event Debug ---\n");
+
+            location.x = lastpt.x + [e deltaX];
+            location.y = lastpt.y - [e deltaY];
+            lastpt = [e locationInWindow];
+#else
             location = [e locationInWindow];
             lastpt = location;
+#endif
         } else {
             location.x = lastpt.x + [e deltaX];
             location.y = lastpt.y - [e deltaY];


More information about the Xquartz-changes mailing list