2011-08-10 02:12:48 +09:00
|
|
|
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
2010-04-17 12:41:17 +02:00
|
|
|
#
|
2012-11-12 17:21:24 +00:00
|
|
|
# This file is part of the LibreOffice project.
|
2010-04-17 12:41:17 +02:00
|
|
|
#
|
2012-11-12 17:21:24 +00:00
|
|
|
# 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/.
|
2010-04-17 12:41:17 +02:00
|
|
|
#
|
2012-11-12 17:21:24 +00:00
|
|
|
# This file incorporates work covered by the following license notice:
|
2010-04-17 12:41:17 +02:00
|
|
|
#
|
2012-11-12 17:21:24 +00:00
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
# contributor license agreements. See the NOTICE file distributed
|
|
|
|
# with this work for additional information regarding copyright
|
|
|
|
# ownership. The ASF licenses this file to you under the Apache
|
|
|
|
# License, Version 2.0 (the "License"); you may not use this file
|
|
|
|
# except in compliance with the License. You may obtain a copy of
|
|
|
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
2010-04-17 12:41:17 +02:00
|
|
|
#
|
|
|
|
|
2010-06-26 01:29:37 +02:00
|
|
|
$(eval $(call gb_Module_Module,framework))
|
|
|
|
|
|
|
|
$(eval $(call gb_Module_add_targets,framework,\
|
|
|
|
Library_fwk \
|
|
|
|
Package_dtd \
|
2017-06-11 20:56:30 +01:00
|
|
|
UIConfig_startmodule \
|
2010-06-26 01:29:37 +02:00
|
|
|
))
|
|
|
|
|
2016-06-02 20:31:46 +02:00
|
|
|
$(eval $(call gb_Module_add_slowcheck_targets,framework,\
|
|
|
|
CppunitTest_framework_dispatch \
|
tdf#137356 framework: fix opening the same document twice for long loads
If the document loading is long enough that the statusbar is updated,
then we can have this situation that we start loading the document, then
spin the main loop during load and do a second load of the same document
as part of the main loop spinning:
#0 SwDoc::SwDoc() (this=0x1c6a180) at sw/source/core/doc/docnew.cxx:194
...
#6 0x00007ffff359a6dd in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x1c5c260, seqArguments=uno::Sequence of length 15 = {...})
...
#33 0x00007fffeeb81ecd in Application::Reschedule(bool) (i_bAllEvents=true) at vcl/source/app/svapp.cxx:460
...
#36 0x00007ffff4265251 in framework::StatusIndicator::start(rtl::OUString const&, int) (this=0x1aace80, sText="Loading document...", nRange=1000000) at framework/source/helper/statusindicator.cxx:51
#37 0x00007fffd026dfd3 in XMLReader::Read(SwDoc&, rtl::OUString const&, SwPaM&, rtl::OUString const&) (this=0x1bb7d20, rDoc=..., rBaseURL="file:///.../test.odt", rPaM=SwPaM = {...}, rName="") at sw/source/filter/xml/swxml.cxx:630
...
#42 0x00007ffff359a6dd in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x1bce4d0, seqArguments=uno::Sequence of length 15 = {...}) at sfx2/source/doc/sfxbasemodel.cxx:1883
The reason for this is is that by the time
LoadEnv::impl_searchAlreadyLoaded() searches for frames which already
have this doc open, the first load is still in progress, and we
assiciate the frame with its controller (which has the URL) only once
the load finishes.
Fix the problem by setting the URL on the frame directly for the
duration of the load: this way an in-progress load also counts as a
duplicate and we'll have just one document open at the end.
Regression from commit 74ac65c49cc1d53b1aa93c2b7c720255867aace2
(#i114963# Enable IPC before OpenClients to allow client connections
when printing., 2016-09-06), we just didn't process incoming requests on
the socket before, so the problem was less visible.
Change-Id: Ib138c4c264e2508c20104ab268501bcca31e2790
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104310
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
2020-10-14 17:16:22 +02:00
|
|
|
CppunitTest_framework_loadenv \
|
2016-06-02 20:31:46 +02:00
|
|
|
))
|
|
|
|
|
framework: lock the solar mutex in loadComponentFromURL() with OnMainThread
Regression from commit 2dc3a6c273cb82506842864481d78df7294debbf
(framework: allow loading a component on the main thread, 2018-12-19),
which was a forward-port from a 5.4-based vendor branch, where this was
(it turns out) just working by accident, but never on master.
It can happen that loadComponentFromURL() is invoked on a thread, which
does not own the solar mutex. Then once
vcl::SolarThreadExecutor::execute() is called, it'll try to release the
solar mutex. But SolarMutexReleaser is unsafe: it'll release the mutex
even if it is owned by an other thread.
To make this a bit more safer, it'll abort in
comphelper::SolarMutex::doRelease(), in case the current thread doesn't
have the mutex already.
Fix the problem by taking the solar mutex in loadComponentFromURL():
this is meant to cause no performance problems, since the actual
importers typically start with taking the solar mutex anyway. Taking it
earlier would be problematic, since this can be invoked by UNO clients
directly. Taking it later in vcl/ would be also unusual: typically vcl
just asserts that the solar mutex is locked, doesn't take it itself.
Change-Id: I752006a91f16a02254d1b5ac6301100ab282630b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103264
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
2020-09-24 13:58:44 +02:00
|
|
|
# Not sure why this is not stable on macOS.
|
|
|
|
ifneq ($(OS),MACOSX)
|
|
|
|
$(eval $(call gb_Module_add_slowcheck_targets,framework,\
|
|
|
|
CppunitTest_framework_services \
|
|
|
|
))
|
|
|
|
endif
|
|
|
|
|
2013-11-13 02:12:48 +01:00
|
|
|
$(eval $(call gb_Module_add_l10n_targets,framework,\
|
2017-06-11 20:56:30 +01:00
|
|
|
AllLangMoTarget_fwk \
|
2013-11-13 02:12:48 +01:00
|
|
|
))
|
|
|
|
|
2011-01-11 21:16:21 +01:00
|
|
|
$(eval $(call gb_Module_add_subsequentcheck_targets,framework,\
|
|
|
|
JunitTest_framework_complex \
|
|
|
|
JunitTest_framework_unoapi \
|
|
|
|
))
|
2012-11-12 17:21:24 +00:00
|
|
|
|
2011-07-30 23:02:30 +03:00
|
|
|
# vim: set noet sw=4 ts=4:
|