blob: c1fde629bfb67a6106c55cee5b01a9bc38f8baf4 (
plain)
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
%% options
copyright owner = Dirk Krause
copyright year = 2013-xxxx
SPDX-License-Identifier: BSD-3-Clause
%% header
#ifndef DK3CONF_H_INCLUDED
#include "dk3conf.h"
#endif
#ifndef DKWXPROCESSINGCONTROLLER_H_INCLUDED
#include <DkWxProcessingController.h>
#endif
/** Protect idle event handler from concurrent execution.
In contrast to a critical section which delays execution of
code this class skips the code execution.
*/
class DkWxProcessingIdleController : public DkWxProcessingController
{
protected:
/** Avoid concurrent access to bWantMore.
*/
wxMutex mxProtectWantMore;
/** Flag: More idle events wanted.
*/
bool bWantMore;
public:
/** Constructor.
*/
DkWxProcessingIdleController();
/** Indicate interest in more idle events (thread-safe).
@param value New flag value.
*/
void setWantMore(bool value = true);
/** Indicate no more interest in further idle events (thread-safe).
*/
void resetWantMore(void);
/** Check for interest in further idle events (thread-safe).
@return true to ask for further events, false otherwise.
*/
bool wantMore(void);
};
%% module
#include "dk3conf.h"
#include "DkWxProcessingIdleController.h"
$!trace-include
DkWxProcessingIdleController::DkWxProcessingIdleController()
: DkWxProcessingController()
{
bWantMore = false;
}
void
DkWxProcessingIdleController::setWantMore(bool value)
{
wxMutexLocker lock(mxProtectWantMore);
bWantMore = value;
}
void
DkWxProcessingIdleController::resetWantMore(void)
{
wxMutexLocker lock(mxProtectWantMore);
bWantMore = false;
}
bool
DkWxProcessingIdleController::wantMore(void)
{
bool back = false;
{
wxMutexLocker lock(mxProtectWantMore);
back = bWantMore;
}
return back;
}
|