[97971] trunk/dports/x11
jeremyhu at macports.org
jeremyhu at macports.org
Thu Sep 20 22:30:12 PDT 2012
Revision: 97971
http://trac.macports.org//changeset/97971
Author: jeremyhu at macports.org
Date: 2012-09-20 22:30:12 -0700 (Thu, 20 Sep 2012)
Log Message:
-----------
xorg-server*: Fix a deadlock with wine on 10.7.5 and 10.8.2
Modified Paths:
--------------
trunk/dports/x11/xorg-server/Portfile
trunk/dports/x11/xorg-server-devel/Portfile
Added Paths:
-----------
trunk/dports/x11/xorg-server/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch
trunk/dports/x11/xorg-server/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch
trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch
trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch
Removed Paths:
-------------
trunk/dports/x11/xorg-server-devel/files/1001-list-Use-offsetof-to-determine-member-offsets-within.patch
Modified: trunk/dports/x11/xorg-server/Portfile
===================================================================
--- trunk/dports/x11/xorg-server/Portfile 2012-09-21 04:51:31 UTC (rev 97970)
+++ trunk/dports/x11/xorg-server/Portfile 2012-09-21 05:30:12 UTC (rev 97971)
@@ -6,6 +6,7 @@
conflicts xorg-server-devel
set my_name xorg-server
version 1.13.0
+revision 1
categories x11 devel
license X11 BSD
maintainers jeremyhu openmaintainer
@@ -82,6 +83,8 @@
RAWCPP=${configure.cpp}
patchfiles \
+ 0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch \
+ 0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch \
5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
Added: trunk/dports/x11/xorg-server/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch 2012-09-21 05:30:12 UTC (rev 97971)
@@ -0,0 +1,41 @@
+From b6b4287a1db26f75e88f53486c91bfefeb7726fd Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Thu, 20 Sep 2012 21:49:40 -0700
+Subject: [PATCH 1/2] XQuartz: Avoid a possible deadlock with DRI on OS X
+ 10.7.5 and OS X 10.8.2
+
+<rdar://problem/12338921>
+http://bugs.winehq.org/show_bug.cgi?id=31751
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+---
+ hw/xquartz/xpr/dri.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
+index 03af163..4fa4aa8 100644
+--- a/hw/xquartz/xpr/dri.c
++++ b/hw/xquartz/xpr/dri.c
+@@ -64,6 +64,7 @@
+ #include "mi.h"
+ #include "mipointer.h"
+ #include "rootless.h"
++#include "rootlessCommon.h"
+ #include "x-hash.h"
+ #include "x-hook.h"
+ #include "driWrap.h"
+@@ -385,6 +386,11 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id,
+
+ if (NULL == pDRIDrawablePriv)
+ return FALSE; /*error*/
++
++ /* <rdar://problem/12338921>
++ * http://bugs.winehq.org/show_bug.cgi?id=31751
++ */
++ RootlessStopDrawing((WindowPtr)pDrawable, FALSE);
+ }
+ #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+ else if (pDrawable->type == DRAWABLE_PIXMAP) {
+--
+1.7.11.5
+
Added: trunk/dports/x11/xorg-server/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch 2012-09-21 05:30:12 UTC (rev 97971)
@@ -0,0 +1,67 @@
+From a55ccb7e8f80992e985694a5ec40b5aa72526d39 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Thu, 20 Sep 2012 21:11:21 -0700
+Subject: [PATCH 2/2] XQuartz: Add some verbose logging to debug
+ xp_lock_window being unbalanced
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+---
+ hw/xquartz/xpr/xprFrame.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/hw/xquartz/xpr/xprFrame.c b/hw/xquartz/xpr/xprFrame.c
+index 01f1def..aad375b 100644
+--- a/hw/xquartz/xpr/xprFrame.c
++++ b/hw/xquartz/xpr/xprFrame.c
+@@ -49,6 +49,10 @@
+ #include <pthread.h>
+ #endif
+
++#ifdef DEBUG_XP_LOCK_WINDOW
++#include <execinfo.h>
++#endif
++
+ #define DEFINE_ATOM_HELPER(func, atom_name) \
+ static Atom func(void) { \
+ static int generation; \
+@@ -376,6 +380,18 @@ xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow)
+ unsigned int rowbytes[2];
+ xp_error err;
+
++#ifdef DEBUG_XP_LOCK_WINDOW
++ void* callstack[128];
++ int i, frames = backtrace(callstack, 128);
++ char** strs = backtrace_symbols(callstack, frames);
++
++ ErrorF("=== LOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid));
++ for (i = 0; i < frames; ++i) {
++ ErrorF(" %s\n", strs[i]);
++ }
++ free(strs);
++#endif
++
+ err = xp_lock_window(x_cvt_vptr_to_uint(
+ wid), NULL, NULL, data, rowbytes, NULL);
+ if (err != Success)
+@@ -395,6 +411,18 @@ xprStopDrawing(RootlessFrameID wid, Bool flush)
+ {
+ xp_error err;
+
++#ifdef DEBUG_XP_LOCK_WINDOW
++ void* callstack[128];
++ int i, frames = backtrace(callstack, 128);
++ char** strs = backtrace_symbols(callstack, frames);
++
++ ErrorF("=== UNLOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid));
++ for (i = 0; i < frames; ++i) {
++ ErrorF(" %s\n", strs[i]);
++ }
++ free(strs);
++#endif
++
+ err = xp_unlock_window(x_cvt_vptr_to_uint(wid), flush);
+ /* This should be a FatalError, but we started tripping over it. Make it a
+ * FatalError after http://xquartz.macosforge.org/trac/ticket/482 is fixed.
+--
+1.7.11.5
+
Modified: trunk/dports/x11/xorg-server-devel/Portfile
===================================================================
--- trunk/dports/x11/xorg-server-devel/Portfile 2012-09-21 04:51:31 UTC (rev 97970)
+++ trunk/dports/x11/xorg-server-devel/Portfile 2012-09-21 05:30:12 UTC (rev 97971)
@@ -5,8 +5,7 @@
name xorg-server-devel
conflicts xorg-server
set my_name xorg-server
-version 1.12.99.905
-revision 1
+version 1.13.99.0
categories x11 devel
maintainers jeremyhu openmaintainer
description The X.org / Xquartz X server.
@@ -16,7 +15,7 @@
fetch.type git
git.url git://anongit.freedesktop.org/xorg/xserver
-git.branch a557edca6152ad09c685a00e01534c35a1f00f2e
+git.branch d01921ec18c21f21d377b60626cc2d3418b84a7c
use_parallel_build yes
@@ -74,7 +73,8 @@
RAWCPP=${configure.cpp}
patchfiles \
- 1001-list-Use-offsetof-to-determine-member-offsets-within.patch \
+ 0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch \
+ 0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch \
5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
Added: trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch 2012-09-21 05:30:12 UTC (rev 97971)
@@ -0,0 +1,41 @@
+From b6b4287a1db26f75e88f53486c91bfefeb7726fd Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Thu, 20 Sep 2012 21:49:40 -0700
+Subject: [PATCH 1/2] XQuartz: Avoid a possible deadlock with DRI on OS X
+ 10.7.5 and OS X 10.8.2
+
+<rdar://problem/12338921>
+http://bugs.winehq.org/show_bug.cgi?id=31751
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+---
+ hw/xquartz/xpr/dri.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
+index 03af163..4fa4aa8 100644
+--- a/hw/xquartz/xpr/dri.c
++++ b/hw/xquartz/xpr/dri.c
+@@ -64,6 +64,7 @@
+ #include "mi.h"
+ #include "mipointer.h"
+ #include "rootless.h"
++#include "rootlessCommon.h"
+ #include "x-hash.h"
+ #include "x-hook.h"
+ #include "driWrap.h"
+@@ -385,6 +386,11 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id,
+
+ if (NULL == pDRIDrawablePriv)
+ return FALSE; /*error*/
++
++ /* <rdar://problem/12338921>
++ * http://bugs.winehq.org/show_bug.cgi?id=31751
++ */
++ RootlessStopDrawing((WindowPtr)pDrawable, FALSE);
+ }
+ #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
+ else if (pDrawable->type == DRAWABLE_PIXMAP) {
+--
+1.7.11.5
+
Added: trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch 2012-09-21 05:30:12 UTC (rev 97971)
@@ -0,0 +1,67 @@
+From a55ccb7e8f80992e985694a5ec40b5aa72526d39 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Thu, 20 Sep 2012 21:11:21 -0700
+Subject: [PATCH 2/2] XQuartz: Add some verbose logging to debug
+ xp_lock_window being unbalanced
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+---
+ hw/xquartz/xpr/xprFrame.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/hw/xquartz/xpr/xprFrame.c b/hw/xquartz/xpr/xprFrame.c
+index 01f1def..aad375b 100644
+--- a/hw/xquartz/xpr/xprFrame.c
++++ b/hw/xquartz/xpr/xprFrame.c
+@@ -49,6 +49,10 @@
+ #include <pthread.h>
+ #endif
+
++#ifdef DEBUG_XP_LOCK_WINDOW
++#include <execinfo.h>
++#endif
++
+ #define DEFINE_ATOM_HELPER(func, atom_name) \
+ static Atom func(void) { \
+ static int generation; \
+@@ -376,6 +380,18 @@ xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow)
+ unsigned int rowbytes[2];
+ xp_error err;
+
++#ifdef DEBUG_XP_LOCK_WINDOW
++ void* callstack[128];
++ int i, frames = backtrace(callstack, 128);
++ char** strs = backtrace_symbols(callstack, frames);
++
++ ErrorF("=== LOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid));
++ for (i = 0; i < frames; ++i) {
++ ErrorF(" %s\n", strs[i]);
++ }
++ free(strs);
++#endif
++
+ err = xp_lock_window(x_cvt_vptr_to_uint(
+ wid), NULL, NULL, data, rowbytes, NULL);
+ if (err != Success)
+@@ -395,6 +411,18 @@ xprStopDrawing(RootlessFrameID wid, Bool flush)
+ {
+ xp_error err;
+
++#ifdef DEBUG_XP_LOCK_WINDOW
++ void* callstack[128];
++ int i, frames = backtrace(callstack, 128);
++ char** strs = backtrace_symbols(callstack, frames);
++
++ ErrorF("=== UNLOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid));
++ for (i = 0; i < frames; ++i) {
++ ErrorF(" %s\n", strs[i]);
++ }
++ free(strs);
++#endif
++
+ err = xp_unlock_window(x_cvt_vptr_to_uint(wid), flush);
+ /* This should be a FatalError, but we started tripping over it. Make it a
+ * FatalError after http://xquartz.macosforge.org/trac/ticket/482 is fixed.
+--
+1.7.11.5
+
Deleted: trunk/dports/x11/xorg-server-devel/files/1001-list-Use-offsetof-to-determine-member-offsets-within.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/1001-list-Use-offsetof-to-determine-member-offsets-within.patch 2012-09-21 04:51:31 UTC (rev 97970)
+++ trunk/dports/x11/xorg-server-devel/files/1001-list-Use-offsetof-to-determine-member-offsets-within.patch 2012-09-21 05:30:12 UTC (rev 97971)
@@ -1,55 +0,0 @@
-From 4939530bb86b9356156ac83d720e2b157e37deae Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Tue, 28 Aug 2012 10:06:51 -0700
-Subject: [PATCH] list: Use offsetof() to determine member offsets within a
- structure
-
-Some compilers have difficulty with the previous implementation which
-relies on undefined behavior according to the C standard. Using
-offsetof() from <stddef.h> (which most likely just uses
-__builtin_offsetof on modern compilers) allows us to accomplish this
-without ambiguity.
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
----
- include/list.h | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/include/list.h b/include/list.h
-index d54a207..ae5431c 100644
---- a/include/list.h
-+++ b/include/list.h
-@@ -26,6 +26,8 @@
- #ifndef _XORG_LIST_H_
- #define _XORG_LIST_H_
-
-+#include <stddef.h> /* offsetof() */
-+
- /**
- * @file Classic doubly-link circular list implementation.
- * For real usage examples of the linked list, see the file test/list.c
-@@ -232,7 +234,7 @@ xorg_list_is_empty(struct xorg_list *head)
- */
- #ifndef container_of
- #define container_of(ptr, type, member) \
-- (type *)((char *)(ptr) - (char *) &((type *)0)->member)
-+ (type *)((char *)(ptr) - (char *) offsetof(type, member))
- #endif
-
- /**
-@@ -271,9 +273,9 @@ xorg_list_is_empty(struct xorg_list *head)
- #define xorg_list_last_entry(ptr, type, member) \
- xorg_list_entry((ptr)->prev, type, member)
-
--#define __container_of(ptr, sample, member) \
-- (void *)((char *)(ptr) \
-- - ((char *)&(sample)->member - (char *)(sample)))
-+#define __container_of(ptr, sample, member) \
-+ container_of(ptr, typeof(*sample), member)
-+
- /**
- * Loop through the list given by head and set pos to struct in the list.
- *
---
-1.7.11.5
-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20120920/aebd4a2e/attachment-0001.html>
More information about the macports-changes
mailing list