[Libreoffice-commits] core.git: vcl/inc vcl/osx vcl/source
Tor Lillqvist
tml at collabora.com
Thu Feb 22 18:20:53 UTC 2018
vcl/inc/salinst.hxx | 4 ++++
vcl/osx/salinst.cxx | 3 +++
vcl/source/app/svmain.cxx | 4 ++++
3 files changed, 11 insertions(+)
New commits:
commit 8bd289c43c34ab9258f4b08a0f3f6143dc710e4e
Author: Tor Lillqvist <tml at collabora.com>
Date: Thu Feb 22 12:40:26 2018 +0200
tdf#103690: Set up notifications only after VCL has been initialised
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 at libreoffice.org>
Reviewed-by: Tor Lillqvist <tml at collabora.com>
diff --git a/vcl/inc/salinst.hxx b/vcl/inc/salinst.hxx
index 1eadc7ac382f..600f8ddfb8b3 100644
--- a/vcl/inc/salinst.hxx
+++ b/vcl/inc/salinst.hxx
@@ -205,6 +205,10 @@ void DeInitSalData(); // called from Application-Dtor
void InitSalMain();
+#ifdef MACOSX
+void postInitVCLinitNSApp();
+#endif
+
#endif // INCLUDED_VCL_INC_SALINST_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index 48eafa5eac1a..e008357b3641 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -157,7 +157,10 @@ static void initNSApp()
// activate our delegate methods
[NSApp setDelegate: NSApp];
+}
+void postInitVCLinitNSApp()
+{
[[NSNotificationCenter defaultCenter] addObserver: NSApp
selector: @selector(systemColorsChanged:)
name: NSSystemColorsDidChangeNotification
diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx
index 500eb3060c19..f44fd566aabc 100644
--- a/vcl/source/app/svmain.cxx
+++ b/vcl/source/app/svmain.cxx
@@ -187,6 +187,10 @@ int ImplSVMain()
bool bInit = isInitVCL() || InitVCL();
+#ifdef MACOSX
+ postInitVCLinitNSApp();
+#endif
+
if( bInit )
{
// call application main
More information about the Libreoffice-commits
mailing list