xserver: Branch 'master' - 2 commits
Jeremy Huddleston
jeremyhu at kemper.freedesktop.org
Sat Jun 27 18:27:00 PDT 2009
hw/xquartz/applewm.c | 2 -
hw/xquartz/mach-startup/bundle-main.c | 40 ++++++++++++++++++++++++++++++++--
2 files changed, 39 insertions(+), 3 deletions(-)
New commits:
commit b8050bb6deebdb1ee60731f63884ffca575c09ce
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date: Sat Jun 27 15:28:34 2009 -0700
XQuartz: Don't leave zombied processes at startup
(cherry picked from commit 40c1406830588fa85d880e9f4e9ca570db1db306)
diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c
index fd70f26..ef5d757 100644
--- a/hw/xquartz/mach-startup/bundle-main.c
+++ b/hw/xquartz/mach-startup/bundle-main.c
@@ -44,6 +44,7 @@
#include <sys/un.h>
#include <sys/time.h>
+#include <fcntl.h>
#include <mach/mach.h>
#include <mach/mach_error.h>
@@ -514,8 +515,43 @@ int main(int argc, char **argv, char **envp) {
* thread handle it.
*/
if(!listenOnly) {
- if(fork() == 0) {
- return startup_trigger(argc, argv, envp);
+ pid_t child1, child2;
+ int status;
+
+ /* Do the fork-twice trick to avoid having to reap zombies */
+ child1 = fork();
+ switch (child1) {
+ case -1: /* error */
+ break;
+
+ case 0: /* child1 */
+ child2 = fork();
+
+ switch (child2) {
+ int max_files, i;
+
+ case -1: /* error */
+ break;
+
+ case 0: /* child2 */
+ /* close all open files except for standard streams */
+ max_files = sysconf(_SC_OPEN_MAX);
+ for(i = 3; i < max_files; i++)
+ close(i);
+
+ /* ensure stdin is on /dev/null */
+ close(0);
+ open("/dev/null", O_RDONLY);
+
+ return startup_trigger(argc, argv, envp);
+
+ default: /* parent (child1) */
+ _exit(0);
+ }
+ break;
+
+ default: /* parent */
+ waitpid(child1, &status, 0);
}
}
commit aaff92c8c22a47804a21010d023ef76d82e7ec7e
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date: Sat Jun 27 14:40:03 2009 -0700
XQuartz: 64bit fix for screen origin in AppleWM
(cherry picked from commit 60a757d2802a5c34acd91ca9a052937b5a169ede)
diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c
index ebfd256..418c5de 100644
--- a/hw/xquartz/applewm.c
+++ b/hw/xquartz/applewm.c
@@ -137,7 +137,7 @@ AppleWMSetScreenOrigin(
WindowPtr pWin
)
{
- long data[2];
+ int32_t data[2];
data[0] = (dixScreenOrigins[pWin->drawable.pScreen->myNum].x
+ darwinMainScreenX);
More information about the xorg-commit
mailing list