diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2019-01-03 13:45:16 +0100 |
---|---|---|
committer | Jan-Marek Glogowski <glogow@fbihome.de> | 2019-01-11 05:20:11 +0100 |
commit | 284a7f60fff72c4d8c011ff60ea2e40163cd25c3 (patch) | |
tree | 00e3e3988132d501ab22b32989fe08b5cd1782f4 /vcl/inc/salinst.hxx | |
parent | 8d4a7b17e60aa889d1a78da47630aae2d1c1513c (diff) |
OSX Re-Introduce NSApplicationMain usage
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>
Diffstat (limited to 'vcl/inc/salinst.hxx')
-rw-r--r-- | vcl/inc/salinst.hxx | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/vcl/inc/salinst.hxx b/vcl/inc/salinst.hxx index f48cca4136e2..e35cd78df4fb 100644 --- a/vcl/inc/salinst.hxx +++ b/vcl/inc/salinst.hxx @@ -89,6 +89,7 @@ public: //called directly after Application::Init virtual void AfterAppInit() {} + virtual bool SVMainHook(int*) { return false; } // Frame // DisplayName for Unix ??? |