mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-02-20 15:14:26 +01:00
Added the ability to request a write lock on the tree.
This commit is contained in:
parent
a7b8d0621c
commit
26d161fd26
@ -18,6 +18,8 @@ public:
|
||||
NOTIFICATION_CHILD_ADDED = 4,
|
||||
NOTIFICATION_CHILD_REMOVED = 5,
|
||||
NOTIFICATION_CHILD_MOVED = 6,
|
||||
NOTIFICATION_UPDATE = 7,
|
||||
NOTIFICATION_TREE_WRITE_LOCKED = 8,
|
||||
};
|
||||
|
||||
bool is_in_tree() const;
|
||||
|
@ -19,8 +19,24 @@ void NodeTree::set_root(Node *root) {
|
||||
}
|
||||
}
|
||||
|
||||
void NodeTree::send_update(float delta) {
|
||||
// todo
|
||||
void NodeTree::update() {
|
||||
if (!_root_node) {
|
||||
return;
|
||||
}
|
||||
|
||||
_root_node->notification(Node::NOTIFICATION_UPDATE);
|
||||
|
||||
if (_write_lock_requested) {
|
||||
_rw_lock.write_lock();
|
||||
_root_node->notification(Node::NOTIFICATION_TREE_WRITE_LOCKED);
|
||||
_rw_lock.write_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
void NodeTree::_send_update() {
|
||||
if (_root_node) {
|
||||
_root_node->notification(Node::NOTIFICATION_UPDATE);
|
||||
}
|
||||
}
|
||||
|
||||
NodeTree::NodeTree() :
|
||||
|
@ -13,7 +13,7 @@ public:
|
||||
Node *get_root();
|
||||
virtual void set_root(Node *root);
|
||||
|
||||
virtual void send_update(float delta);
|
||||
virtual void update();
|
||||
|
||||
void request_write_lock();
|
||||
|
||||
@ -21,8 +21,11 @@ public:
|
||||
~NodeTree();
|
||||
|
||||
protected:
|
||||
virtual void _send_update();
|
||||
|
||||
Node *_root_node;
|
||||
float _update_interval;
|
||||
|
||||
bool _write_lock_requested;
|
||||
RWLock _rw_lock;
|
||||
};
|
||||
|
@ -20,7 +20,9 @@ void WebServer::set_root(Node *root) {
|
||||
void WebServer::handle_request(Request *request) {
|
||||
ERR_FAIL_COND(!_web_root);
|
||||
|
||||
_rw_lock.read_lock();
|
||||
_web_root->handle_request_main(request);
|
||||
_rw_lock.read_unlock();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user