HAL
layout_locker.cpp
Go to the documentation of this file.
1
#include "
gui/graph_widget/layout_locker.h
"
2
#include "
gui/gui_globals.h
"
3
#include "
gui/graph_widget/contexts/graph_context.h
"
4
5
namespace
hal
{
6
7
LayoutLockerManager* LayoutLockerManager::inst =
nullptr
;
8
9
LayoutLockerManager::LayoutLockerManager()
10
: mLockCount(0) {;}
11
12
LayoutLockerManager
* LayoutLockerManager::instance()
13
{
14
if
(!inst) inst =
new
LayoutLockerManager
;
15
return
inst;
16
}
17
18
void
LayoutLockerManager::addLock()
19
{
20
++mLockCount;
21
}
22
23
void
LayoutLockerManager::removeLock()
24
{
25
--mLockCount;
26
27
if
(mLockCount <= 0 && !mWaitingRoom.isEmpty())
28
{
29
for
(
u32
ctxId : mWaitingRoom)
30
{
31
GraphContext
* ctx =
gGraphContextManager
->
getContextById
(ctxId);
32
if
(ctx) ctx->startSceneUpdate();
33
}
34
mWaitingRoom.clear();
35
}
36
}
37
38
bool
LayoutLockerManager::canUpdate(
GraphContext
* ctx)
39
{
40
if
(!ctx)
return
false
;
41
if
(mLockCount <= 0)
return
true
;
42
mWaitingRoom.insert(ctx->
id
());
43
return
false
;
44
}
45
46
void
LayoutLockerManager::removeWaitingContext(
GraphContext
* ctx)
47
{
48
auto
it = mWaitingRoom.find(ctx->
id
());
49
if
(it != mWaitingRoom.end())
50
mWaitingRoom.erase(it);
51
}
52
53
LayoutLocker::LayoutLocker()
54
{
55
LayoutLockerManager::instance()->addLock();
56
}
57
58
LayoutLocker::~LayoutLocker()
59
{
60
LayoutLockerManager::instance()->removeLock();
61
}
62
}
hal::GraphContext
Logical container for modules, gates, and nets.
Definition:
graph_context.h:55
hal::GraphContext::id
u32 id() const
Definition:
graph_context.cpp:451
hal::GraphContextManager::getContextById
GraphContext * getContextById(u32 id) const
Definition:
graph_context_manager.cpp:246
hal::LayoutLockerManager
Definition:
layout_locker.h:36
graph_context.h
gui_globals.h
layout_locker.h
hal
Definition:
parser_liberty.cpp:10
hal::gGraphContextManager
GraphContextManager * gGraphContextManager
Definition:
plugin_gui.cpp:85
u32
quint32 u32
Definition:
net_layout_point.h:40
plugins
gui
src
graph_widget
layout_locker.cpp
Generated on Fri Feb 14 2025 14:22:43 for HAL by
1.9.1