-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbatch_queueobj.H
More file actions
61 lines (42 loc) · 1.3 KB
/
batch_queueobj.H
File metadata and controls
61 lines (42 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
** Copyright 2017-2021 S. Varshavchik
** See COPYING for distribution information.
*/
#ifndef batch_queueobj_h
#define batch_queueobj_h
#include "x/w/batch_queuefwd.H"
#include "x/w/layoutmanagerobj.H"
#include "x/w/elementobj.H"
#include "x/w/connection_threadfwd.H"
#include <x/mpobj.H>
#include <x/ptrfwd.H>
#include <x/logger.H>
#include <x/obj.H>
LIBCXXW_NAMESPACE_START
//! An element that has a parent element.
class LIBCXX_HIDDEN batch_queueObj : virtual public obj {
//! My logger
LOG_CLASS_SCOPE;
//! Batched
public:
//! My connection thread.
const connection_thread my_thread;
//! Constructor
batch_queueObj(const connection_thread &my_thread);
//! The destructor schedules all the jobs.
~batch_queueObj();
//! Schedule an element to have its visibility update.
void schedule_for_visibility(const ref<elementObj::implObj> &e,
bool visibility);
//! Execute the functor in the connection thread.
//! The execution gets delayed until this batch_queue object goes out
//! of scope and gets destroyed.
//!
//! Invokes my_thread->run_as_batched, which queues up the message
//! on the batch_queue. The destructor sends the execute_batched_jobs()
//! message, that processes the batch_queue.
template<typename functor>
void run_as(functor &&f);
};
LIBCXXW_NAMESPACE_END
#endif