comparison Deprecated/Applications/Generic/NativeStoneApplicationContext.cpp @ 1399:ff8d2e46ac63

moved Applications into Deprecated
author Alain Mazy <alain@mazy.be>
date Wed, 29 Apr 2020 20:44:31 +0200
parents Applications/Generic/NativeStoneApplicationContext.cpp@7ec8fea061b9
children
comparison
equal deleted inserted replaced
1398:c5403d52078c 1399:ff8d2e46ac63
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21
22 #include "NativeStoneApplicationContext.h"
23 #include "../../Platforms/Generic/OracleWebService.h"
24
25 namespace OrthancStone
26 {
27 void NativeStoneApplicationContext::GlobalMutexLocker::SetCentralWidget(
28 boost::shared_ptr<Deprecated::IWidget> widget)
29 {
30 that_.centralViewport_.SetCentralWidget(widget);
31 }
32
33
34 void NativeStoneApplicationContext::UpdateThread(NativeStoneApplicationContext* that)
35 {
36 while (!that->stopped_)
37 {
38 {
39 GlobalMutexLocker locker(*that);
40 locker.GetCentralViewport().DoAnimation();
41 }
42
43 boost::this_thread::sleep(boost::posix_time::milliseconds(that->updateDelayInMs_));
44 }
45 }
46
47
48 NativeStoneApplicationContext::NativeStoneApplicationContext() :
49 stopped_(true),
50 updateDelayInMs_(100) // By default, 100ms between each refresh of the content
51 {
52 srand(static_cast<unsigned int>(time(NULL)));
53 }
54
55
56 void NativeStoneApplicationContext::Start()
57 {
58 boost::recursive_mutex::scoped_lock lock(globalMutex_);
59
60 if (stopped_ &&
61 centralViewport_.HasAnimation())
62 {
63 stopped_ = false;
64 updateThread_ = boost::thread(UpdateThread, this);
65 }
66 }
67
68
69 void NativeStoneApplicationContext::Stop()
70 {
71 stopped_ = true;
72
73 if (updateThread_.joinable())
74 {
75 updateThread_.join();
76 }
77 }
78 }