diff options
-rw-r--r-- | Makefile.am | 7 | ||||
-rw-r--r-- | dix/privates.c | 5 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Init.c | 6 | ||||
-rw-r--r-- | include/os.h | 3 | ||||
-rw-r--r-- | os/osinit.c | 1 | ||||
-rw-r--r-- | os/utils.c | 13 |
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. |