diff options
-rw-r--r-- | framework/inc/helper/wakeupthread.hxx | 9 | ||||
-rw-r--r-- | framework/source/helper/wakeupthread.cxx | 12 |
2 files changed, 11 insertions, 10 deletions
diff --git a/framework/inc/helper/wakeupthread.hxx b/framework/inc/helper/wakeupthread.hxx index f9099180d03f..cdc8700a5266 100644 --- a/framework/inc/helper/wakeupthread.hxx +++ b/framework/inc/helper/wakeupthread.hxx @@ -23,8 +23,8 @@ #include <com/sun/star/uno/Reference.hxx> #include <cppuhelper/weakref.hxx> -#include <osl/conditn.hxx> -#include <osl/mutex.hxx> +#include <condition_variable> +#include <mutex> #include <salhelper/thread.hxx> namespace com::sun::star::util @@ -37,9 +37,8 @@ namespace framework class WakeUpThread final : public salhelper::Thread { css::uno::WeakReference<css::util::XUpdatable> updatable_; - osl::Condition condition_; - - osl::Mutex mutex_; + std::condition_variable condition_; + std::mutex mutex_; bool terminate_; void execute() override; diff --git a/framework/source/helper/wakeupthread.cxx b/framework/source/helper/wakeupthread.cxx index 503f6707a010..556d59dbb581 100644 --- a/framework/source/helper/wakeupthread.cxx +++ b/framework/source/helper/wakeupthread.cxx @@ -25,13 +25,15 @@ #include <osl/time.h> #include <helper/wakeupthread.hxx> +#include <chrono> + +using namespace std::chrono_literals; void framework::WakeUpThread::execute() { for (;;) { - TimeValue t{0, 25000000}; // 25 msec - condition_.wait(&t); { - osl::MutexGuard g(mutex_); + std::unique_lock g(mutex_); + condition_.wait_for(g, 25ms, [this] { return terminate_; }); if (terminate_) { break; } @@ -50,10 +52,10 @@ framework::WakeUpThread::WakeUpThread( void framework::WakeUpThread::stop() { { - osl::MutexGuard g(mutex_); + std::unique_lock g(mutex_); terminate_ = true; } - condition_.set(); + condition_.notify_one(); join(); } |