Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_lazy_wait_condition.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
3
*
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#ifndef __KIS_LAZY_WAIT_CONDITION_H
8
#define __KIS_LAZY_WAIT_CONDITION_H
9
10
#include <QMutex>
11
#include <QMutexLocker>
12
#include <QWaitCondition>
13
50
class
KisLazyWaitCondition
51
{
52
public
:
53
KisLazyWaitCondition
()
54
:
m_waitCounter
(0),
55
m_wakeupCounter
(0)
56
{
57
}
58
59
void
initWaiting
() {
60
QMutexLocker locker(&
m_mutex
);
61
if
(!
m_waitCounter
) {
62
m_wakeupCounter
= 0;
63
}
64
65
m_waitCounter
++;
66
}
67
68
void
endWaiting
() {
69
QMutexLocker locker(&
m_mutex
);
70
m_waitCounter
--;
71
}
72
73
bool
wait
(
unsigned
long
time = ULONG_MAX) {
74
QMutexLocker locker(&
m_mutex
);
75
bool
result =
true
;
76
if
(!
m_wakeupCounter
) {
77
result =
m_condition
.wait(&
m_mutex
, time);
78
}
79
if
(result) {
80
m_wakeupCounter
--;
81
}
82
return
result;
83
}
84
85
void
wakeAll
() {
86
if
(!
m_waitCounter
)
return
;
87
88
QMutexLocker locker(&
m_mutex
);
89
if
(
m_waitCounter
) {
90
m_wakeupCounter
+=
m_waitCounter
;
91
m_condition
.wakeAll();
92
}
93
}
94
95
bool
isSomeoneWaiting
() {
96
return
m_waitCounter
;
97
}
98
99
private
:
100
QMutex
m_mutex
;
101
QWaitCondition
m_condition
;
102
volatile
int
m_waitCounter
;
103
int
m_wakeupCounter
;
104
};
105
106
#endif
/* __KIS_LAZY_WAIT_CONDITION_H */
KisLazyWaitCondition
Definition
kis_lazy_wait_condition.h:51
KisLazyWaitCondition::endWaiting
void endWaiting()
Definition
kis_lazy_wait_condition.h:68
KisLazyWaitCondition::m_condition
QWaitCondition m_condition
Definition
kis_lazy_wait_condition.h:101
KisLazyWaitCondition::initWaiting
void initWaiting()
Definition
kis_lazy_wait_condition.h:59
KisLazyWaitCondition::wait
bool wait(unsigned long time=ULONG_MAX)
Definition
kis_lazy_wait_condition.h:73
KisLazyWaitCondition::m_mutex
QMutex m_mutex
Definition
kis_lazy_wait_condition.h:100
KisLazyWaitCondition::KisLazyWaitCondition
KisLazyWaitCondition()
Definition
kis_lazy_wait_condition.h:53
KisLazyWaitCondition::isSomeoneWaiting
bool isSomeoneWaiting()
Definition
kis_lazy_wait_condition.h:95
KisLazyWaitCondition::wakeAll
void wakeAll()
Definition
kis_lazy_wait_condition.h:85
KisLazyWaitCondition::m_waitCounter
volatile int m_waitCounter
Definition
kis_lazy_wait_condition.h:102
KisLazyWaitCondition::m_wakeupCounter
int m_wakeupCounter
Definition
kis_lazy_wait_condition.h:103
libs
image
kis_lazy_wait_condition.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52