diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-08-20 10:14:19 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-08-20 11:13:46 +0200 |
commit | d3b03032b7140a98946bfe8fc475a322e6eb6f9a (patch) | |
tree | 3a0ce8015c31df0c8bc0c5b33bf9b3c36b2a203c /framework/inc | |
parent | 1618a3cee763fe9c3393e0511244547674bdd264 (diff) |
tdf#125869 LibreOffice UI freezes (shows not responding) while exporting a pdf
Revert "use vcl::Timer in StatusIndicatorFactory"
This reverts commit 848058625c7fad21e2469c95c2a2078678925a5a,
which seems to have been a bad idea
Change-Id: I68be1757717352f164ce27c300a4a0487680891c
Reviewed-on: https://gerrit.libreoffice.org/77779
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'framework/inc')
-rw-r--r-- | framework/inc/helper/statusindicatorfactory.hxx | 7 | ||||
-rw-r--r-- | framework/inc/helper/wakeupthread.hxx | 57 |
2 files changed, 59 insertions, 5 deletions
diff --git a/framework/inc/helper/statusindicatorfactory.hxx b/framework/inc/helper/statusindicatorfactory.hxx index a2a073821d8e..4f6e183e8a54 100644 --- a/framework/inc/helper/statusindicatorfactory.hxx +++ b/framework/inc/helper/statusindicatorfactory.hxx @@ -25,6 +25,7 @@ #include <vector> // include files of own module +#include <helper/wakeupthread.hxx> #include <general.h> // include uno interfaces @@ -44,9 +45,7 @@ #include <com/sun/star/uno/XComponentContext.hpp> #include <cppuhelper/supportsservice.hxx> -#include <cppuhelper/weakref.hxx> #include <vcl/status.hxx> -#include <vcl/timer.hxx> #include <cppuhelper/implbase.hxx> #include <osl/thread.hxx> @@ -166,7 +165,7 @@ class StatusIndicatorFactory : public ::cppu::WeakImplHelper< /** Notify us if a fix time is over. We use it to implement an intelligent "Reschedule" ... */ - boost::optional<Timer> m_xWakeUpTimer; + rtl::Reference<WakeUpThread> m_pWakeUp; /** Our WakeUpThread calls us in our interface method "XUpdatable::update(). There we set this member m_bAllowReschedule to sal_True. Next time if our impl_reschedule() @@ -183,8 +182,6 @@ class StatusIndicatorFactory : public ::cppu::WeakImplHelper< /** prevent recursive calling of Application::Reschedule(). */ static sal_Int32 m_nInReschedule; - DECL_LINK( WakeupTimerHdl, Timer*, void ); - // interface public: diff --git a/framework/inc/helper/wakeupthread.hxx b/framework/inc/helper/wakeupthread.hxx new file mode 100644 index 000000000000..50e234f23713 --- /dev/null +++ b/framework/inc/helper/wakeupthread.hxx @@ -0,0 +1,57 @@ +/* -*- 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/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#ifndef INCLUDED_FRAMEWORK_INC_HELPER_WAKEUPTHREAD_HXX +#define INCLUDED_FRAMEWORK_INC_HELPER_WAKEUPTHREAD_HXX + +#include <sal/config.h> + +#include <com/sun/star/uno/Reference.hxx> +#include <cppuhelper/weakref.hxx> +#include <osl/conditn.hxx> +#include <osl/mutex.hxx> +#include <sal/types.h> +#include <salhelper/thread.hxx> + +namespace com { namespace sun { namespace star { namespace util { + class XUpdatable; +} } } } + +namespace framework{ + +class WakeUpThread: public salhelper::Thread { + css::uno::WeakReference<css::util::XUpdatable> updatable_; + osl::Condition condition_; + + osl::Mutex mutex_; + bool terminate_; + + void execute() override; + +public: + WakeUpThread(css::uno::Reference<css::util::XUpdatable> const & updatable); + + void stop(); +}; + +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |