desktop/source/app/officeipcthread.cxx | 15 +++++++------- desktop/source/lib/init.cxx | 4 ++- include/osl/lok.hxx | 34 +++++++++++++++++++++++++++++++++ sal/osl/all/utility.cxx | 20 ++++++++++++++++++- sal/util/sal.map | 5 ++++ 5 files changed, 69 insertions(+), 9 deletions(-)
New commits: commit 4dde5a623d563f9007dd3539b835489a27128d65 Author: Tor Lillqvist <t...@collabora.com> Date: Tue Mar 31 17:48:08 2015 +0300 Check osl::LibreOfficeKit::isActive(), not Application::IsConsoleOnly() Console-only is really orthogonal to other things; it has one specific meaning that is relevant on OS X only, see svapp.hxx. Let's not overload it for LibreOfficeKit things. Change-Id: I8b94c3a4e6f938ad70f1555a12dac8596819e031 diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx index aec9b3c..8c0ac21 100644 --- a/desktop/source/app/officeipcthread.cxx +++ b/desktop/source/app/officeipcthread.cxx @@ -26,6 +26,7 @@ #include "dispatchwatcher.hxx" #include <boost/scoped_ptr.hpp> #include <stdio.h> +#include <osl/lok.hxx> #include <osl/process.h> #include <unotools/bootstrap.hxx> #include <vcl/svapp.hxx> @@ -460,13 +461,13 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread() #ifndef ANDROID // On Android it might be that we still for some reason need the pipe? - // When console-only (which includes in LibreOfficeKit-based programs) we want to be totally - // independent from any other LibreOffice instance or LOKit-using program. Certainly no need for - // any IPC pipes by definition, as we don't have any reason to do any IPC. Why we even call this - // EnableOfficeIPCThread function from LibreOfficeKit's lo_initialize() I am not completely - // sure, but that code, and this, is such horrible crack that I don't want to change it too much. + // In LibreOfficeKit-based programs we want to be totally independent from any other LibreOffice + // instance or LOKit-using program. Certainly no need for any IPC pipes by definition, as we + // don't have any reason to do any IPC. Why we even call this EnableOfficeIPCThread function + // from LibreOfficeKit's lo_initialize() I am not completely sure, but that code, and this, is + // such horrible crack that I don't want to change it too much. - if (Application::IsConsoleOnly()) + if (osl::LibreOfficeKit::isActive()) { // Setting nPipeMode to PIPEMODE_CREATED causes the trivial path to be taken below, starting // the listeing thread. (Which will immediately finish, see the execute() function, but what @@ -706,7 +707,7 @@ void OfficeIPCThread::execute() #if HAVE_FEATURE_DESKTOP || defined(ANDROID) #ifndef ANDROID - if (Application::IsConsoleOnly()) + if (osl::LibreOfficeKit::isActive()) return; #endif diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index f6aa90f..339e3fd 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -891,7 +891,6 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath) desktop::Desktop::GetCommandLineArgs().setHeadless(); Application::EnableHeadlessMode(true); - Application::EnableConsoleOnly(); // This is horrible crack. I really would want to go back to simply just call // InitVCL() here. The OfficeIPCThread thing is just horrible. commit 8955af9b2b3d29118d314c77092c5c4c0f8e456c Author: Tor Lillqvist <t...@collabora.com> Date: Sun Mar 29 22:59:22 2015 +0300 Add API to check whether being used through LibreOfficeKit LibreOffice code, when used in a program through LibreOfficeKit, needs to be aware of that in certain crucial spots, to avoid behaviour and functionality that makes no sense in a LibreOfficeKit scenario. As LibreOfficeKit uses a normal LibreOffice installation to perform its job, this can't be a compile-time choice. Also, none of the existing run-time "headlessness" modes fully match what is needed. Change-Id: Iaccf7f958c549f019b508854800519f54dcadb11 diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index bdab485..f6aa90f 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -22,6 +22,7 @@ #include <tools/errinf.hxx> #include <osl/file.hxx> +#include <osl/lok.hxx> #include <osl/process.h> #include <osl/thread.h> #include <rtl/strbuf.hxx> @@ -852,6 +853,8 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath) if (bInitialized) return 1; + osl::LibreOfficeKit::setActive(); + OUString aAppPath; if (pAppPath) { diff --git a/include/osl/lok.hxx b/include/osl/lok.hxx new file mode 100644 index 0000000..3b241ef --- /dev/null +++ b/include/osl/lok.hxx @@ -0,0 +1,34 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_OSL_LOK_HXX +#define INCLUDED_OSL_LOK_HXX + +#ifdef LIBO_INTERNAL_ONLY + +#include <sal/saldllapi.h> + +namespace osl +{ + +namespace LibreOfficeKit +{ + +SAL_DLLPUBLIC void setActive(); + +SAL_DLLPUBLIC bool isActive(); + +} +} + +#endif // LIBO_INTERNAL_ONLY + +#endif // INCLUDED_OSL_LOK_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/osl/all/utility.cxx b/sal/osl/all/utility.cxx index 98bc12f..a84111c 100644 --- a/sal/osl/all/utility.cxx +++ b/sal/osl/all/utility.cxx @@ -17,7 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include "osl/time.h" +#include <osl/lok.hxx> +#include <osl/time.h> /* * mfe : maybe it would be wishful to include initialization @@ -45,5 +46,22 @@ public: static OGlobalTimer aGlobalTimer; +namespace LibreOfficeKit +{ + +static bool bActive(false); + +void setActive() +{ + bActive = true; } + +bool isActive() +{ + return bActive; +} + +} // namespace LibreOfficeKit +} // namespace osl + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/util/sal.map b/sal/util/sal.map index 2a87243..c8bcdba 100644 --- a/sal/util/sal.map +++ b/sal/util/sal.map @@ -713,6 +713,11 @@ PRIVATE_textenc.1 { # LibreOffice 3.6 _ZN3sal6detail7textenc37handleBadInputUnicodeToTextConversion*; }; +PRIVATE_4.5 { # LibreOffice 4.5 + _ZN3osl14LibreOfficeKit8isActive*; + _ZN3osl14LibreOfficeKit9setActive*; +}; + # Unique libstdc++ symbols: GLIBCXX_3.4 { global: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits