xserver: Branch 'xorg-server-1.5-apple' - 2 commits

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Fri Jul 3 19:44:34 PDT 2009


 configure.ac                |    8 ++++----
 hw/xquartz/applewm.c        |   32 ++++++++++++++++++++++++++++++++
 hw/xquartz/applewmExt.h     |    2 ++
 hw/xquartz/xpr/xprAppleWM.c |   37 +++++++++++++++++++++++++++++++++++--
 4 files changed, 73 insertions(+), 6 deletions(-)

New commits:
commit 64016ccc462b86a49521fd9933aae9a6dda9214d
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Fri Jul 3 19:27:03 2009 -0700

    1.5.3-apple10

diff --git a/configure.ac b/configure.ac
index 735e3cc..df0a4b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.5.3-apple9, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="27 June 2009"
-REMEMBER_REMEMBER="The Twenty-seventh of June"
+AC_INIT([xorg-server], 1.5.3-apple10, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="3 July 2009"
+REMEMBER_REMEMBER="The Third of July"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2 foreign])
 AM_MAINTAINER_MODE
commit ddc0242d8f291d0f961ba9aa8c883e39861ce2ad
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Fri Jul 3 19:25:33 2009 -0700

    XQuartz: ProcAppleWMAttachTransient to play nice with the new Dock in SL

diff --git a/configure.ac b/configure.ac
index 342465f..735e3cc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1678,7 +1678,7 @@ if test "x$XQUARTZ" = xyes; then
 
 	CFLAGS="${CFLAGS} -DROOTLESS_WORKAROUND -DROOTLESS_SAFEALPHA -DNO_ALLOCA"
 
-	PKG_CHECK_MODULES(XPBPROXY, [applewmproto >= 1.2] [applewm >= 1.2] xfixes fixesproto x11)
+	PKG_CHECK_MODULES(XPBPROXY, [applewmproto >= 1.3] [applewm >= 1.3] xfixes fixesproto x11)
 
 	if test "x$STANDALONE_XPBPROXY" = xyes ; then
 		AC_DEFINE(STANDALONE_XPBPROXY,1,[Build a standalone xpbproxy])
diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c
index cb2855c..57bc2f3 100644
--- a/hw/xquartz/applewm.c
+++ b/hw/xquartz/applewm.c
@@ -524,6 +524,36 @@ ProcAppleWMSendPSN(register ClientPtr client)
 }
 
 static int
+ProcAppleWMAttachTransient(register ClientPtr client)
+{
+    WindowPtr pWinChild, pWinParent;
+    REQUEST(xAppleWMAttachTransientReq);
+    int err;
+    
+    REQUEST_SIZE_MATCH(xAppleWMAttachTransientReq);
+    
+    if(!appleWMProcs->AttachTransient)
+        return BadRequest;
+
+    if (Success != dixLookupWindow(&pWinChild, stuff->child, client, DixReadAccess))
+        return BadValue;
+
+    if(stuff->parent) {
+        if(Success != dixLookupWindow(&pWinParent, stuff->parent, client, DixReadAccess))
+            return BadValue;
+    } else {
+        pWinParent = NULL;
+    }
+
+    err = appleWMProcs->AttachTransient(pWinChild, pWinParent);
+    if (err != Success) {
+        return err;
+    }
+
+    return (client->noClientException);
+}
+
+static int
 ProcAppleWMSetCanQuit(
     register ClientPtr client
 )
@@ -685,6 +715,8 @@ ProcAppleWMDispatch (
         return ProcAppleWMFrameDraw(client);
     case X_AppleWMSendPSN:
         return ProcAppleWMSendPSN(client);
+    case X_AppleWMAttachTransient:
+        return ProcAppleWMAttachTransient(client);
     default:
         return BadRequest;
     }
diff --git a/hw/xquartz/applewmExt.h b/hw/xquartz/applewmExt.h
index 3fc3766..5ef8b54 100644
--- a/hw/xquartz/applewmExt.h
+++ b/hw/xquartz/applewmExt.h
@@ -46,6 +46,7 @@ typedef int (*FrameDrawProc)(WindowPtr pWin, int class, unsigned int attr,
                              unsigned int title_len,
                              const unsigned char *title_bytes);
 typedef int (*SendPSNProc)(uint32_t hi, uint32_t lo);
+typedef int (*AttachTransientProc)(WindowPtr pWinChild, WindowPtr pWinParent);
 
 /*
  * AppleWM implementation function list
@@ -58,6 +59,7 @@ typedef struct _AppleWMProcs {
     FrameHitTestProc FrameHitTest;
     FrameDrawProc FrameDraw;
     SendPSNProc SendPSN;
+    AttachTransientProc AttachTransient;
 } AppleWMProcsRec, *AppleWMProcsPtr;
 
 void AppleWMExtensionInit(
diff --git a/hw/xquartz/xpr/xprAppleWM.c b/hw/xquartz/xpr/xprAppleWM.c
index 9c44e20..0a25719 100644
--- a/hw/xquartz/xpr/xprAppleWM.c
+++ b/hw/xquartz/xpr/xprAppleWM.c
@@ -82,6 +82,34 @@ static int xprSetWindowLevel(
     return Success;
 }
 
+#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 3
+static int xprAttachTransient(WindowPtr pWinChild, WindowPtr pWinParent) {
+    xp_window_id child_wid, parent_wid; 
+    xp_window_changes wc;
+
+    child_wid = x_cvt_vptr_to_uint(RootlessFrameForWindow(pWinChild, TRUE));
+    if (child_wid == 0)
+        return BadWindow;
+
+    if(pWinParent) {
+        parent_wid = x_cvt_vptr_to_uint(RootlessFrameForWindow(pWinParent, TRUE));
+        if (parent_wid == 0)
+            return BadWindow;
+    } else {
+        parent_wid = 0;
+    }
+     
+    wc.transient_for = parent_wid;
+
+    RootlessStopDrawing (pWinChild, FALSE);
+
+    if (xp_configure_window(child_wid, XP_ATTACH_TRANSIENT, &wc) != Success) {
+        return BadValue;
+    }
+
+    return Success;    
+}
+#endif
 
 static int xprFrameDraw(
     WindowPtr pWin,
@@ -114,9 +142,14 @@ static AppleWMProcsRec xprAppleWMProcs = {
     xp_frame_get_rect,
     xp_frame_hit_test,
     xprFrameDraw,
-#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 2
-    xp_set_dock_proxy
+#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 3
+    xp_set_dock_proxy,
+    xprAttachTransient
+#elif defined(XPLUGIN_VERSION) && XPLUGIN_VERSION >= 2
+    xp_set_dock_proxy,
+    NULL
 #else
+    NULL,
     NULL
 #endif
 };


More information about the xorg-commit mailing list