summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-07-10 00:52:11 -0700
committerKeith Packard <keithp@keithp.com>2012-07-10 00:52:11 -0700
commit6e12cb147da58bd12a158807b2cd5afac32ae70f (patch)
tree2bf09b363a6f34b3f67a79b1f8fe970e10de2366
parent532fbc29c900469ef4867ccb7eabb953019dcab5 (diff)
parent023127915e6922bc53e4c768de760d8a4f25c07c (diff)
Merge branch 'local-fixes'
-rw-r--r--Makefile.am7
-rw-r--r--dix/privates.c5
-rw-r--r--hw/xfree86/common/xf86Init.c6
-rw-r--r--include/os.h3
-rw-r--r--os/osinit.c1
-rw-r--r--os/utils.c13
6 files changed, 33 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index cea140bea..9a628537d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -95,3 +95,10 @@ DIST_SUBDIRS = \
# gross hack
relink: all
$(AM_V_at)$(MAKE) -C hw relink
+
+install-headers: Makefile
+ +find . -name Makefile | while read m; do \
+ if grep -q install-sdkHEADERS $$m; then \
+ (cd `dirname "$$m"` && make install-sdkHEADERS) \
+ fi \
+ done
diff --git a/dix/privates.c b/dix/privates.c
index 740ead739..55b9345a7 100644
--- a/dix/privates.c
+++ b/dix/privates.c
@@ -317,6 +317,11 @@ grow_screen_specific_set(DevPrivateType type, unsigned bytes)
grow_private_set(&pScreen->screenSpecificPrivates[type], bytes);
}
+ for (s = 0; s < screenInfo.numGPUScreens; s++) {
+ ScreenPtr pScreen = screenInfo.gpuscreens[s];
+
+ grow_private_set(&pScreen->screenSpecificPrivates[type], bytes);
+ }
}
/*
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 16991b38b..e4a6b8613 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -401,6 +401,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
MessageType pix24From = X_DEFAULT;
Bool pix24Fail = FALSE;
Bool autoconfig = FALSE;
+ Bool sigio_blocked = FALSE;
GDevPtr configured_device;
xf86Initialising = TRUE;
@@ -821,6 +822,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
#endif
xf86AccessEnter();
OsBlockSIGIO();
+ sigio_blocked = TRUE;
}
}
@@ -926,7 +928,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
xf86VGAarbiterWrapFunctions();
- OsReleaseSIGIO();
+ if (sigio_blocked)
+ OsReleaseSIGIO();
xf86InitOrigins();
@@ -1011,7 +1014,6 @@ OsVendorInit(void)
}
#endif
#endif
- OsReleaseSIGIO();
beenHere = TRUE;
}
diff --git a/include/os.h b/include/os.h
index 34ca1f557..7701c3977 100644
--- a/include/os.h
+++ b/include/os.h
@@ -340,6 +340,9 @@ OsBlockSIGIO(void);
extern _X_EXPORT void
OsReleaseSIGIO(void);
+extern void
+OsResetSignals(void);
+
extern _X_EXPORT void
OsAbort(void)
_X_NORETURN;
diff --git a/os/osinit.c b/os/osinit.c
index 6cc040178..2eb1f7a8f 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -288,6 +288,7 @@ OsInit(void)
}
TimerInit();
OsVendorInit();
+ OsResetSignals();
/*
* No log file by default. OsVendorInit() should call LogInit() with the
* log file name if logging to a file is desired.
diff --git a/os/utils.c b/os/utils.c
index b50cbdbdf..a6f6ef549 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -1242,6 +1242,19 @@ OsReleaseSignals(void)
#endif
}
+void
+OsResetSignals(void)
+{
+#ifdef SIG_BLOCK
+ while (BlockedSignalCount > 0)
+ OsReleaseSignals();
+#ifdef SIGIO
+ while (sigio_blocked > 0)
+ OsReleaseSIGIO();
+#endif
+#endif
+}
+
/*
* Pending signals may interfere with core dumping. Provide a
* mechanism to block signals when aborting.