summaryrefslogtreecommitdiff
path: root/vcl/source/app/svmain.cxx
AgeCommit message (Collapse)Author
2019-10-15move HAVE_FEATURE_DESKTOP/OPENCL to their dedicated headersLuboš Luňák
HAVE_FEATURE_OPENCL is included by a common Calc header and HAVE_FEATURE_DESKTOP is included by a common Writer header, causing pretty much their full rebuilds if any feature changes. Change-Id: If29bf78bd4fd70b37981e0826a577777fd255c89 Reviewed-on: https://gerrit.libreoffice.org/80776 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
2019-09-04tdf#118314 Code clean up on imestatuswindowSzabolcs Toth
Change-Id: I8bc5a73a91f28fcfd22ef716e9cf87d53997b1ad Reviewed-on: https://gerrit.libreoffice.org/77337 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: László Németh <nemeth@numbertext.org>
2019-07-02tdf#42949 Fix IWYU warnings in vcl/source/[a-e]*Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I386e913f9002eed164c26137a0e184993d010b86 Reviewed-on: https://gerrit.libreoffice.org/74090 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-06-18loplugin:logexceptionnicely in vclNoel Grandin
Change-Id: I0ed575a11c84c2e8aabfa1b4204ba6ae27393d5f Reviewed-on: https://gerrit.libreoffice.org/74245 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-06-13unopkg gui crashes on shutdownCaolán McNamara
since... commit e655dc8bbf010e5ef89c32c2ebde56281b323925 Date: Thu May 9 18:24:18 2019 +0100 unipoll: let InitVCL tolerate double init. which changed InitVCL to return true if it was already initialized, tricking toolkit into thinking it was the first one to call InitVCL Change-Id: I33552a5e2caca909f8d63fbf5f23b9fbc4c2dfbd Reviewed-on: https://gerrit.libreoffice.org/73956 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-05-10unipoll: let InitVCL tolerate double init.Michael Meeks
We need to get VCL initialized early in UniPoll mode, since the main setup doesn't occur until runPoll is invoked, and we want to call lots of virtual methods that take the SolarMutex before then - which requires VCL to be initialized. Change-Id: Id9c1b74c126cf7bb71d6560b7585d37327a9f5ef Reviewed-on: https://gerrit.libreoffice.org/72071 Tested-by: Jenkins Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2019-04-27Fix typosAndrea Gelmini
Change-Id: Id81e8db5a38b4e4a88cc21c50234c2338e9c41bf Reviewed-on: https://gerrit.libreoffice.org/71421 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-04-27Use AutoTimer for SystemDependentDataBufferJan-Marek Glogowski
This cache eviction timer is periodic, so just use an AutoTimer, to prevent the "expensive" Start() calls. This will instantly re-schedule the task again. OTOH Stop() is really cheap, as it just sets a bool. Same for IsActive(), which just checks that bool. We do lazy cleanup of stopped tasks in the scheduler. This patch also changes the logic to just start the AutoTimer, if it's not already running and just stops it in the timer handling function, if there is nothing more to do. This way we can save allmost all the previous Start() and Stop() calls, but eventually have a single unneeded wakeup a second later. Change-Id: Iae05483f557b94e07e51c4baae25315596923c9c Reviewed-on: https://gerrit.libreoffice.org/71376 Tested-by: Jenkins Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2019-03-11cache file based widget images and draw commandsTomaž Vajngerl
It is wasteful to parse svg icons all the time so lets cache the result when this make sense in a LRU map. Change-Id: I95cc317c9301138a9e384d270223ba147a123e59 Reviewed-on: https://gerrit.libreoffice.org/69055 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2019-02-22loplugin:unusedfields in vclNoel Grandin
maStatusText in HelpTextWindow is dead since commit bd3ea40ed49074c4fa4439de7b5dea4fc3161880 Date: Fri Jan 21 14:48:58 2011 +0200 Remove ShowHelpStatusText and HideHelpStatusText and associated cruft Change-Id: I7a74e2a1b909a479f9338bd4da5fad06ccc25283 Reviewed-on: https://gerrit.libreoffice.org/68153 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-11loplugin:indentation in vclNoel Grandin
Change-Id: Idd7166833764fdf1d9c42a050490572a8b330199 Reviewed-on: https://gerrit.libreoffice.org/67610 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-02-07tdf#123165 cache recently scaled bitmaps for reuseCaolán McNamara
dropping the cached scaled bitmap when the bitmap is accesed via BitmapAccessMode::Write for writing Change-Id: Ib6539522944838238bd699ec3531039d21dc0f8b Reviewed-on: https://gerrit.libreoffice.org/67459 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-01-11OSX Re-Introduce NSApplicationMain usageJan-Marek Glogowski
This restores the nested NSApplicationMain and default run loop usage. Without it the Java AWT integration will start its own event loop, effectively blocking any non-system event processing. Reproducible via "Tools - Macros - Organize Macros - BeanShell... - LibreOffice Macros - HelloWorld - helloworld.bsh - Edit". The blocking can be prevented by overriding NSApplication::run and running our own event loop using Application::Execute. But this still doesn't show the Java AWT editor window and I couldn't find any information how to fix this. Since OSX now is a VCL plugin, this can't restore the old hook mechanism, but instead adds a new function to SalInstance. SalInstance initialization happens at InitVCL() start just a little bit later in the call stack. Somehow NSApplicationMain manages to run the Java VM in an extra thread, so it doesn't block the main loop. Probably this could also be handled by LO starting the JVM as a thread. Further information for an implementation eventually can be found in the "Technical Note TN2147" "JNI Development on Mac OS X." Change-Id: I04a0c2bf7949571f1b678ada9ab3592e0fe30c1f Regression-from: 925e2edb6f3f8fffcff9eddb31ed18bc77e2a690 Reviewed-on: https://gerrit.libreoffice.org/65836 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2018-11-08Revert "Use the backend SalInstance method IsMainThread for ↵Markus Mohrhard
Application::IsMainThread" vcl/inc/unx/gtk/gtkinst.hxx's IsMainThread returns always false. This breaks in iahndl.cxx on Linux. This reverts commit bc089afb13029bae65b993992b3815430657ac24. Change-Id: I8fbd945e3704214d242f6f9e65760d44b0cc7d40 Reviewed-on: https://gerrit.libreoffice.org/63044 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins
2018-11-06Use the backend SalInstance method IsMainThread for Application::IsMainThreadAndras Timar
Change-Id: I3258268b12cb0914a5e8d1c9b57d7891e83080c6 Reviewed-on: https://gerrit.libreoffice.org/62951 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins
2018-10-14unowrap.hxx is also exposed for toolkit onlyCaolán McNamara
Change-Id: Ife3648c8ca84c942f02fb6eab2990ec3eb3eb3f9 Reviewed-on: https://gerrit.libreoffice.org/61764 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-10-02Unify sal plugin loadersJan-Marek Glogowski
Change-Id: Ic099761eaff80349e985ccf62e3f4aa6b2e98022 Reviewed-on: https://gerrit.libreoffice.org/61103 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2018-09-27Do build cppunit for iOS, tooTor Lillqvist
I am writing a separate unit test app that will include selected existing unit tests that make sense and are important to run on iOS. Change-Id: I4722f1ed872ba21e181eeba5ed3b58e82d8fed72 Reviewed-on: https://gerrit.libreoffice.org/61049 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com>
2018-09-18Drop NSApplicationMain usageJan-Marek Glogowski
Allows to drop all the special SVMain handling introduced for MacOSX. This way LO can also be build via SSH, because gengal won't abort / fail because of the missing window system. Currently this just implements the global menu. I don't know what else is missing. Eventually we want to reimplement the Cocoa debug option forwarding (NSAccessibilityDebugLogLevel). Change-Id: I359c46fd03e2436a8a37fd211e59e4e305f8aba0 Reviewed-on: https://gerrit.libreoffice.org/60571 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2018-09-17New loplugin:externalStephan Bergmann
...warning about (for now only) functions and variables with external linkage that likely don't need it. The problems with moving entities into unnamed namespacs and breaking ADL (as alluded to in comments in compilerplugins/clang/external.cxx) are illustrated by the fact that while struct S1 { int f() { return 0; } }; int f(S1 s) { return s.f(); } namespace N { struct S2: S1 { int f() { return 1; } }; int f(S2 s) { return s.f(); } } int main() { return f(N::S2()); } returns 1, both moving just the struct S2 into an nunnamed namespace, struct S1 { int f() { return 0; } }; int f(S1 s) { return s.f(); } namespace N { namespace { struct S2: S1 { int f() { return 1; } }; } int f(S2 s) { return s.f(); } } int main() { return f(N::S2()); } as well as moving just the function f overload into an unnamed namespace, struct S1 { int f() { return 0; } }; int f(S1 s) { return s.f(); } namespace N { struct S2: S1 { int f() { return 1; } }; namespace { int f(S2 s) { return s.f(); } } } int main() { return f(N::S2()); } would each change the program to return 0 instead. Change-Id: I4d09f7ac5e8f9bcd6e6bde4712608444b642265c Reviewed-on: https://gerrit.libreoffice.org/60539 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-15Re-think cppu::throwException() and the C++/UNO bridge on iOSTor Lillqvist
It seems that on iOS, where we don't have any Java, Python, BASIC, or other scripting, the only thing that would use the C++/UNO bridge functionality that invokes codeSnippet() was cppu::throwException(). codeSnippet() is part of what corresponds to the code that uses run-time-generated machine code on other platforms. We can't generate code at run-time on iOS, that has been known forever. Instead we have used some manually written assembler to handle it instead. We used to have a Perl script to generate a set of code snippets for different cases, different numbers of parameters of the called function and whatnot, but that went away at some stage some year ago. (It is unclear whether that broke the C++/UNO bridge on iOS, or whether the stuff continued to work even after that.) Anyway, this handwritten assembly, or the manual construction of internal data structures for exceptions, or something else, seemed to have bit-rotten. Exceptions thrown with cppu::throwException() were not catchable properly any longer. Instead of digging in and trying to understand what is wrong, I chose another solution. It turns out that the number of types of exception objects thrown by cppu::throwException() is fairly small. During startup of the LibreOffice code, and loading of an .odt document, only one kind of exception is thrown this way... (The lovely css::ucb:InteractiveAugmentedIOException.) So we can simply have code that checks what the type of object being thrown is, and explicitgly throws such an object then with a normal C++ throw statement. Seems to work. Sadly the cppu::getCaughtException() API still needs some inline assembly in the C++/UNO brige. That seems to work though, knock on wood. This commit also adds a small "unit test" for iOS, copied from cppuhelperm to ImplSVMain(). Ideally we should not copy code around of course, but have a separate unit test app for iOS that would somehow include relevant unit tests from source files all over the place. Later. Change-Id: Ib6d9d5b6fb8cc684ec15c97a312ca2f720e87069 Reviewed-on: https://gerrit.libreoffice.org/60506 Tested-by: Jenkins Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-09-14loplugin:constfields in vclNoel Grandin
Change-Id: I1072642be4fdfa720e61f2d7bad3c2701eb81610 Reviewed-on: https://gerrit.libreoffice.org/60430 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-09-13Support buffering SystemDependent GraphicData (II)Armin Le Grand
In this step I have changed all calls that use a B2DPolyPolygon and do filled graphics, added support for providing needed transformation which will -if supported- be used. Added buffering of SystemDependentData at B2DPolyPolygon for that purpose, see comments describing the current possibilities in the Gdiplus implementation. Moved lifetime creation/cleanup of SystemDependentDataManager to ImplSVData due to cleanup problems in the clang build Tried to use a std::unique_ptr to hold the instance of a SystemDependentDataBuffer at ImplSVData and cleanup inside DeInitVCL() right before ::ImplDeInitScheduler. This works in principle, but scheduler shutdown triggers ProcessEventsToIdle which leads to repaints and re-creates the buffer. Will now do exactly as was done with GdiPlusBuffer before, a simple local static incarnation and a call to SetStatic() in constructor Splitted SystemDependentDataBuffer and Timer due to different LifeTimes. Timer needs to be destructed earlier than SystemDependentDataBuffer, before Scheduler::ImplDeInitScheduler() is called from DeInitVCL() Change-Id: I2134e4346a183a4cee1be3428c51541cc8867c11 Reviewed-on: https://gerrit.libreoffice.org/60102 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
2018-09-04loplugin:useuniqueptr in vcl/svdataNoel Grandin
Change-Id: I4e5c50e2dde40b4047020fed2733a3e47ed4208e Reviewed-on: https://gerrit.libreoffice.org/59950 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-30Support buffering SystemDependent GraphicDataArmin Le Grand
This is a first step to allow buffering of system dependent data, especially (but not only) for the system-dependent implementations of graphic output. For example, for B2DPolygon and Win output, it allows buffering the Gdiplus::GraphicsPath instead of re- creating it all the time. To support that, the change includes forwarding the current transformation to the renderers in SalGraphics. The current state in VCL is to transform all and everything to device coordinates at every single paint. I have currently started to do this for ::drawPolyLine implementations. The fallbacks for all systems will at the start of that method just transform the data to device coordinates, so all works as before. This may also be done for FilledPolygon paint in a later step, but most urgent is FatLine painting. An arrangement of shared_ptr/weak_ptr is used so that either the instance buffering (in the example B2DPolygon) or the instance managing it can delete it. The instance managing it currently uses a 1s Timer and a cycle-lifetime management, but that can be extended in the future to e.g. include size hints, too. The mechanism it designed to support multiple Data per buffering element, e.g. for B2DPolygon at the same time system-dependent instances of Gdiplus and Cairo can be buffered, but also PDF-data. This is achieved semi-automatic by using typeid(class).hash_code() as key for organization. The mechanism will be used for now at B2DPolygon, but is not limited to. There is already a similar but less general buffer (see GdiPlusBuffer) that can and will be converted to use this new mechanism. Added vcl/headless Cairo renderer to support given ObjectToDevice transformation (not to transform given B2DPolygon) Added support for CairoPath buffered at B2DPolygon, seems to work well. Need to do more tests Moved usage to templates suggested by Noel Grandin (Noel Grandin <noelgrandin@gmail.com>), thanks for these suggestions. Adapted Win usage to that, too. Converted Win-specific GdiPlus BitmapBuffer to new mechanism, works well. Checked, the manager holds now a mix of bitmap and path data under Win Added a cleanup mechanism to flush all buffered data at DeInitVCL() using flushAll() at SystemDependentDataBuffer Adapted Linux-versions of ::drawPolyLine to support PixelSnapHairline, for now in a simplified version that still allows buffering. This will also be used (and use buffering) for the Cairo-fallback in X11SalGraphics Change-Id: I88d7e438a20b96ddab7707050893bdd590c098c7 Reviewed-on: https://gerrit.libreoffice.org/59555 Tested-by: Armin Le Grand <Armin.Le.Grand@cib.de> Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
2018-08-20TODO: refcount ImplFontListCaolán McNamara
Change-Id: Ie125f1ac9c14a41e25c3e54beafca2f9e34e4c6f Reviewed-on: https://gerrit.libreoffice.org/59310 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-08-20TODO: refcount ImplFontCacheCaolán McNamara
Change-Id: Ia4499c2a1515aebaff9edf0e843fc66c7fb1414e Reviewed-on: https://gerrit.libreoffice.org/59309 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-08-17fix crash on Windows on assert enabled buildsNoel Grandin
regression from commit 9cceba9a928cf3b3447f293020be2fe76c035ed5 make DBG_TESTSOLARMUTEX available in assert builds Change-Id: Ifbedc3c16f341a12ba026fc598fb5386da91c50c Reviewed-on: https://gerrit.libreoffice.org/59245 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-07-31Add missing sal/log.hxx headersGabor Kelemen
rtl/string.hxx and rtl/ustring.hxx both unnecessarily #include <sal/log.hxx> (and don't make use of it themselves), but many other files happen to depend on it. This is a continuation of commit 6ff2d84ade299cb3d14d4110e4cf1a4b8070c030 to be able to remove those unneeded includes. This commit adds missing headers to every file found by: grep -FwL sal/log.hxx $(git grep -Elw 'SAL_INFO|SAL_INFO_IF|SAL_WARN|SAL_WARN_IF|SAL_DETAIL_LOG_STREAM|SAL_WHERE|SAL_STREAM|SAL_DEBUG') to directory vcl Change-Id: I205fe0f4e80a66cd9c3b19f7e9716411da1d1cf5 Reviewed-on: https://gerrit.libreoffice.org/58221 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-07-30make DBG_TESTSOLARMUTEX available in assert buildsNoel Grandin
where our QA people are more likely to trigger it Change-Id: I4ce7c8c72e7e21f2296c0f9cc9f019aaef32ed0b Reviewed-on: https://gerrit.libreoffice.org/58170 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-06-09hold and return SalI18NImeStatus using std::unique_ptrNoel Grandin
Change-Id: I3657980045290a4d65b2944afac04d610c0a94fd Reviewed-on: https://gerrit.libreoffice.org/55496 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-06-03avoid a deadlock when the crash handler can't acquire SolarMutexLuboš Luňák
Change-Id: Iea2d9b993dcf08fe022f97a2ac8e15fba9a8568c Reviewed-on: https://gerrit.libreoffice.org/55090 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2018-03-16rhbz#1392145 ensure titlebar close button matches 'outside' directionCaolán McNamara
Change-Id: I20e925c58adb56acd4d1a63720d330c8b6613441 Reviewed-on: https://gerrit.libreoffice.org/51433 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-02-24forcepoint #6 release virtual devices before releasing font cacheCaolán McNamara
Change-Id: Iacfbe7da788235c96519ecd106d09ab534c83849 Reviewed-on: https://gerrit.libreoffice.org/50281 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-02-22tdf#103690: Set up notifications only after VCL has been initialisedTor Lillqvist
On some Macs, it seems that LibreOffice (or any app?) gets an NSApplicationDidChangeScreenParametersNotification as soon as it has started and asked for such a notification. Our handler for that notification assumes that VCL is initialised. Thus we should not ask for such notifications before VCL has been initialised. I could not reproduce the reported crash with an unmodified LibreOffice, only after inserting a sleep after the notifications had been set up. But I am fairly sure this change fixes the problem. Change-Id: I18d342eb7dc0c77cb7fc8623756bead65a1bd329 Reviewed-on: https://gerrit.libreoffice.org/50164 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2018-01-15vcl: No need for a double-linked list of dialogs in Execute().Jan Holesovsky
Instead use a simple vector. Change-Id: I50652468cf06ba681d5caccb74a52b32c6c507a0 Reviewed-on: https://gerrit.libreoffice.org/47910 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2017-12-14Move call to Scheduler::ImplDeInitScheduler in DeInitVCL back to orig. placeStephan Bergmann
Dec 13 16:18:27 <sberg> jmux, any reason fd0fff67798fea87217e65bb1561aa0d0e741c51 moved the call to Scheduler::ImplDeInitScheduler() in DeInitVCL (vcl/source/app/svmain.cxx) past the call to the pSVData->maDeInitHook? Dec 13 16:18:30 <IZBot> core - Assert active Tasks on scheduler de-init - http://cgit.freedesktop.org/libreoffice/core/commit/?id=fd0fff67798fea87217e65bb1561aa0d0e741c51 Dec 13 16:20:06 <sberg> jmux, observing a crash in CppunitTest_dbaccess_firebird_test here when comphelper::geProcessServiceFactory wants to be used after it has been cleared, <https://paste.fedoraproject.org/paste/H8bVCcpNjSipm59Ih952nw> Dec 13 16:22:41 <jmux> sberg: no. That was still during the analysis with all those static tasks and cleanup problems. Dec 13 16:23:17 <sberg> jmux, I'll see what breaks if I move the call back to its original place, then The relevant backtraces from <https://paste.fedoraproject.org/paste/H8bVCcpNjSipm59Ih952nw>: > #0 0x00007fffee08c160 in comphelper::setProcessServiceFactory(com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> const&) (xSMgr=...) at comphelper/source/processfactory/processfactory.cxx:55 > #1 0x00007fffe8b120eb in (anonymous namespace)::Hook::deinitHook((anonymous namespace)::Hook*, LinkParamNone*) () at test/source/setupvcl.cxx:54 > #2 0x00007fffe8b11f8d in (anonymous namespace)::Hook::LinkStubdeinitHook(void*, LinkParamNone*) (instance=0x0, data=0x0) at test/source/setupvcl.cxx:37 > #3 0x00007fffe76a9cb1 in Link<LinkParamNone*, void>::Call(LinkParamNone*) const (this=0x7fffe8374418 <rtl::Static<ImplSVData, (anonymous namespace)::private_aImplSVData>::get()::instance+984>, data=0x0) at include/tools/link.hxx:84 > #4 0x00007fffe79c5baf in DeInitVCL() () at vcl/source/app/svmain.cxx:517 > #5 0x00007fffe8d1cc0a in (anonymous namespace)::Protector::~Protector() (this=0x6f6b50, __in_chrg=<optimized out>) at test/source/vclbootstrapprotector.cxx:34 > #6 0x00007fffe8d1cc5e in (anonymous namespace)::Protector::~Protector() (this=0x6f6b50, __in_chrg=<optimized out>) at test/source/vclbootstrapprotector.cxx:43 > #7 0x00007ffff7b962f3 in CppUnit::ProtectorChain::pop() (this=0x630e00) at ProtectorChain.cpp:56 > #8 0x00007ffff7ba65d4 in CppUnit::TestResult::popProtector() (this=0x7fffffff2870) at TestResult.cpp:196 > #9 0x0000000000408998 in (anonymous namespace)::ProtectedFixtureFunctor::run() const (this=0x7fffffff2840) at sal/cppunittester/cppunittester.cxx:328 > #10 0x0000000000409484 in sal_main() () at sal/cppunittester/cppunittester.cxx:469 > #11 0x000000000040900b in main(int, char**) (argc=23, argv=0x7fffffff2be8) at sal/cppunittester/cppunittester.cxx:376 and > #0 0x00007fffee08c213 in comphelper::getProcessServiceFactory() () at comphelper/source/processfactory/processfactory.cxx:64 > #1 0x00007fffee08c651 in comphelper::getProcessComponentContext() () at comphelper/source/processfactory/processfactory.cxx:96 > #2 0x00007fffe79a7281 in setupPersonaHeaderFooter(WhichPersona, rtl::OUString&, BitmapEx&, boost::optional<Color>&) (eWhich=PERSONA_HEADER, rHeaderFooter=..., rHeaderFooterBitmap=..., rMenuBarTextColor=...) at vcl/source/app/settings.cxx:2135 > #3 0x00007fffe79a7c96 in StyleSettings::GetPersonaHeader() const (this=0x15d7130) at vcl/source/app/settings.cxx:2214 > #4 0x00007fffe757285f in MenuBarWindow::ApplySettings(OutputDevice&) (this=0x1644ee0, rRenderContext=...) at vcl/source/window/menubarwindow.cxx:1022 > #5 0x00007fffe7488fdb in PaintHelper::DoPaint(vcl::Region const*) (this=0x7fffffff1720, pRegion=0x0) at vcl/source/window/paint.cxx:298 > #6 0x00007fffe748a74e in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) (this=0x1644ee0, pRegion=0x0, nPaintFlags=(ImplPaintFlags::PaintAll | ImplPaintFlags::PaintAllChildren | ImplPaintFlags::PaintChildren | ImplPaintFlags::Erase)) at vcl/source/window/paint.cxx:606 > #7 0x00007fffe748a0e5 in PaintHelper::~PaintHelper() (this=0x7fffffff1890, __in_chrg=<optimized out>) at vcl/source/window/paint.cxx:540 > #8 0x00007fffe748a7a7 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) (this=0x1510d40, pRegion=0x0, nPaintFlags=ImplPaintFlags::PaintChildren) at vcl/source/window/paint.cxx:603 > #9 0x00007fffe748a8ea in vcl::Window::ImplCallOverlapPaint() (this=0x1510d40) at vcl/source/window/paint.cxx:630 > #10 0x00007fffe748aa34 in vcl::Window::ImplHandlePaintHdl(Timer*) (this=0x1510d40) at vcl/source/window/paint.cxx:651 > #11 0x00007fffe748a929 in vcl::Window::LinkStubImplHandlePaintHdl(void*, Timer*) (instance=0x1510d40, data=0x1511940) at vcl/source/window/paint.cxx:634 > #12 0x00007fffe79c7f33 in Link<Timer*, void>::Call(Timer*) const (this=0x1511960, data=0x1511940) at include/tools/link.hxx:84 > #13 0x00007fffe79c7d97 in Timer::Invoke() (this=0x1511940) at vcl/source/app/timer.cxx:76 > #14 0x00007fffe799a873 in Scheduler::ProcessTaskScheduling() () at vcl/source/app/scheduler.cxx:440 > #15 0x00007fffe7999d95 in Scheduler::CallbackTaskScheduling() () at vcl/source/app/scheduler.cxx:263 > #16 0x00007fffe7ad3bbb in SalTimer::CallCallback() (this=0x156fbc0) at vcl/inc/saltimer.hxx:55 > #17 0x00007fffe7ad3209 in SvpSalInstance::CheckTimeout(bool) (this=0x730900, bExecuteTimers=true) at vcl/headless/svpinst.cxx:188 > #18 0x00007fffe7ad35b8 in SvpSalInstance::DoYield(bool, bool) (this=0x730900, bWait=false, bHandleAllCurrentEvents=true) at vcl/headless/svpinst.cxx:272 > #19 0x00007fffe79be4a1 in ImplYield(bool, bool) (i_bWait=false, i_bAllEvents=true) at vcl/source/app/svapp.cxx:469 > #20 0x00007fffe79ba4c7 in Application::Reschedule(bool) (i_bAllEvents=true) at vcl/source/app/svapp.cxx:486 > #21 0x00007fffe79ba4f9 in Scheduler::ProcessEventsToIdle() () at vcl/source/app/svapp.cxx:492 > #22 0x00007fffe79991a9 in Scheduler::ImplDeInitScheduler() () at vcl/source/app/scheduler.cxx:114 > #23 0x00007fffe79c5f80 in DeInitVCL() () at vcl/source/app/svmain.cxx:579 > #24 0x00007fffe8d1cc0a in (anonymous namespace)::Protector::~Protector() (this=0x6f6b50, __in_chrg=<optimized out>) at test/source/vclbootstrapprotector.cxx:34 > #25 0x00007fffe8d1cc5e in (anonymous namespace)::Protector::~Protector() (this=0x6f6b50, __in_chrg=<optimized out>) at test/source/vclbootstrapprotector.cxx:43 > #26 0x00007ffff7b962f3 in CppUnit::ProtectorChain::pop() (this=0x630e00) at ProtectorChain.cpp:56 > #27 0x00007ffff7ba65d4 in CppUnit::TestResult::popProtector() (this=0x7fffffff2870) at TestResult.cpp:196 > #28 0x0000000000408998 in (anonymous namespace)::ProtectedFixtureFunctor::run() const (this=0x7fffffff2840) at sal/cppunittester/cppunittester.cxx:328 > #29 0x0000000000409484 in sal_main() () at sal/cppunittester/cppunittester.cxx:469 > #30 0x000000000040900b in main(int, char**) (argc=23, argv=0x7fffffff2be8) at sal/cppunittester/cppunittester.cxx:376 Change-Id: I75ee6a7b663f6117f004877fc9ba5a3ed79d66e4 Reviewed-on: https://gerrit.libreoffice.org/46415 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-12-11loplugin:salcall fix functionsNoel Grandin
since cdecl is the default calling convention on Windows for such functions, the annotation is redundant. Change-Id: I1a85fa27e5ac65ce0e04a19bde74c90800ffaa2d Reviewed-on: https://gerrit.libreoffice.org/46164 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-23loplugin:includeform: vclStephan Bergmann
Change-Id: Id7dea3917740aaf4db8dada5e2bea6e117d714ea
2017-10-04add << operator for css::uno::ExceptionNoel Grandin
Change-Id: Ia23dafd07133779144965682df3b7125a3214235 Reviewed-on: https://gerrit.libreoffice.org/43046 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins <ci@libreoffice.org>
2017-09-19Assert active Tasks on scheduler de-initJan-Marek Glogowski
This shuts down the VCL scheduler later in the DeInitVCL call and asserts active pending tasks, as these will never be processed after shutdown. There is currently a TODO whitelist, so the unit tests still pass but probably most of these should be fixed. No task in the list looks critical - all seem to do some idle / cleanup work. This also processes all the Idles before shutdown. All seem to be of type sfx::SfxItemDisruptor_Impl. Change-Id: I9cc484a525cc2bacd54c4f271f86997517393e92 Reviewed-on: https://gerrit.libreoffice.org/40533 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2017-08-25coverity#1416668 Uncaught exceptionCaolán McNamara
Change-Id: Ibc2be8fe44295a8ea08105549448609e00262740 Reviewed-on: https://gerrit.libreoffice.org/41560 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2017-08-06set LANGUAGE from SvtSysLocale().GetUILanguageTag()Caolán McNamara
Change-Id: I466576660bdc281c3332fa25f0fe0756cd356ab7 Reviewed-on: https://gerrit.libreoffice.org/40788 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2017-08-01move resmgr to unotoolsCaolán McNamara
and the vast majority of translations is to the ui language so default ctor with that arg and now drop OModuleResourceClient Change-Id: I3b85a560ffdfe5f019c2271ac56a5fe4a361522b
2017-07-21migrate to boost::gettextCaolán McNamara
* all .ui files go from <interface> to <interface domain="MODULE"> e.g. vcl * all .src files go away and the english source strings folded into the .hrc as NC_("context", "source string") * ResMgr is dropped in favour of std::locale imbued by boost::locale::generator pointed at matching MODULE .mo files * UIConfig translations are folded into the module .mo, so e.g. UIConfig_cui goes from l10n target to normal one, so the res/lang.zips of UI files go away * translation via Translation::get(hrc-define-key, imbued-std::locale) * python can now be translated with its inbuilt gettext support (we keep the name strings.hrc there to keep finding the .hrc file uniform) so magic numbers can go away there * java and starbasic components can be translated via the pre-existing css.resource.StringResourceWithLocation mechanism * en-US res files go away, their strings are now the .hrc keys in the source code * remaining .res files are replaced by .mo files * in .res/.ui-lang-zip files, the old scheme missing translations of strings results in inserting the english original so something can be found, now the standard fallback of using the english original from the source key is used, so partial translations shrink dramatically in size * extract .hrc strings with hrcex which backs onto xgettext -C --add-comments --keyword=NC_:1c,2 --from-code=UTF-8 --no-wrap * extract .ui strings with uiex which backs onto xgettext --add-comments --no-wrap * qtz for gettext translations is generated at runtime as ascii-ified crc32 of content + "|" + msgid * [API CHANGE] remove deprecated binary .res resouce loader related uno apis com::sun::star::resource::OfficeResourceLoader com::sun::star::resource::XResourceBundleLoader com::sun::star::resource::XResourceBundle when translating strings via uno apis com.sun.star.resource.StringResourceWithLocation can continue to be used Change-Id: Ia2594a2672b7301d9c3421fdf31b6cfe7f3f8d0a
2017-07-20loplugin:unusedfields in vclNoel Grandin
Change-Id: I207866df495ec81bb9288e6d0f664b96d90251d6 Reviewed-on: https://gerrit.libreoffice.org/40217 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-07-18tdf#109194 cleanse startup notification foo from envThorsten Behrens
So when the desktop environment does startup notification, this DESKTOP_STARTUP_ID gets passed on to the launched application. Problem is, XDG spec says app should read it from the env, then discard - which LibreOffice never does. When passed on to child processes, funny effects might ensue, so let's just erase this at the end of VCL init, when I'm reasonably sure every gtk/kde/whatnot backend did read it. Change-Id: I1f758c7a02455028d2b520c144ffe32538621f19 Reviewed-on: https://gerrit.libreoffice.org/40153 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2017-07-13Refactor Scheduler global dataJan-Marek Glogowski
Move all Scheduler members of ImplSVData into ImplSchedulerContext and make ImplSchedulerContext a member of ImplSVData. Change-Id: I186bebdfb5701543595848968235b5a56b6598e9
2017-06-15make LANGUAGE setting universal, not just gtk specificCaolán McNamara
Change-Id: I845e808be27e2fad959a73d0d34a204b4bdcdd1f Reviewed-on: https://gerrit.libreoffice.org/38211 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2017-05-30Revert "make LANGUAGE setting universal, not just gtk specific"Caolán McNamara
poxy cppunit tests can't use config here This reverts commit f55eeb7a45998d16eb0fe49088e172ce45ac4f2b.