From 12fa9ece663f24eff44197befe546a92e6c90724 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Tue, 13 Nov 2012 17:53:42 +0100 Subject: Avoid global static data ...that (indirectly) allocates memory via rtl/alloc.h, thereby causing the rtl_cache_wsupdate_init thread to be spawned before main, as on Mac OS X that would interfere with the code in sal_detail_initialize to close all file descriptors >= 3 -- on Mac OS X the pthreads implementation makes use of KQUEUE file descriptors. * This commit removes enough global static data to make ui-preview work again on Mac OS X (where it crashed at startup when the main thread closed the KQUEUE fd used by pthreads implementation threads). gengal uses further static data (at least from module sb), so needs further clean-up. * Avoiding global static instances derived from class Application required the introduction of vcl/vclmain.hxx. * That the vcl library was linked against the static vclmain library (which only provides an implementation of main) appears to me to be a historic relic (all executables should either include a SAL_IMPLEMENT_MAIN or link against vclmain), so I removed that. Change-Id: I048aa616208cb3a1b9bd8dcc3b729ba1665729bd --- vcl/source/uipreviewer/previewer.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'vcl/source/uipreviewer') diff --git a/vcl/source/uipreviewer/previewer.cxx b/vcl/source/uipreviewer/previewer.cxx index 7abb9def5c3b..939c55342744 100644 --- a/vcl/source/uipreviewer/previewer.cxx +++ b/vcl/source/uipreviewer/previewer.cxx @@ -18,6 +18,7 @@ #include #include #include +#include class UIPreviewApp : public Application { @@ -88,6 +89,9 @@ int UIPreviewApp::Main() return EXIT_SUCCESS; } -UIPreviewApp aApp; +void vclmain::createApplication() +{ + static UIPreviewApp aApp; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit