summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Endrodi <ext-adam.endrodi@nokia.com>2011-01-06 16:31:11 +0200
committerAdam Endrodi <ext-adam.endrodi@nokia.com>2011-01-06 16:31:11 +0200
commit399d06021b90ee2f5137ab6ae0fb23f20fad7d86 (patch)
tree1ffb449e5da1f7b723e37893bbc792ddbebe4d1a
parentadd8172fe73aef7d2daa9f80850d61de7fa992f2 (diff)
MCompositorWindow timer handling simplification
Not altering semantics, just substituting things with shorter constructs. * src/mcompositewindow.h (MCompositeWindow): Removed MCompositeWindow::pinging_enabled, which true if and only if t_ping->isActive(). * src/mcompositewindow.cpp: -- MCompositeWindow::MCompositeWindow(): setInterval() and recurrency of the timers in the constructor once; they are not reset. -- MCompositeWindow::~MCompositeWindow(): it isn't necessary to check for the existence of the timers since they always exist; also it isn't necessary to delete them because we are their parent and QObject's destructor will delete them anyway. -- MCompositeWindow::startPing(), MCompositeWindow::stopPing(): It isn't necessary to check if a timer isActive() before stopping it, neither it is to stop() a timer before re-start()ing because QTimer does it anyway.
-rw-r--r--src/mcompositewindow.cpp41
-rw-r--r--src/mcompositewindow.h1
2 files changed, 14 insertions, 28 deletions
diff --git a/src/mcompositewindow.cpp b/src/mcompositewindow.cpp
index 0ae1e07..8a0e4d1 100644
--- a/src/mcompositewindow.cpp
+++ b/src/mcompositewindow.cpp
@@ -55,7 +55,6 @@ MCompositeWindow::MCompositeWindow(Qt::HANDLE window,
need_decor(false),
window_obscured(-1),
is_transitioning(false),
- pinging_enabled(false),
dimmed_effect(false),
waiting_for_damage(0),
win_id(window)
@@ -76,13 +75,18 @@ MCompositeWindow::MCompositeWindow(Qt::HANDLE window,
connect(mpc, SIGNAL(iconGeometryUpdated()), SLOT(updateIconGeometry()));
setAcceptHoverEvents(true);
+ // this could be configurable. But will do for now. Most WMs use 5s delay
t_ping = new QTimer(this);
+ t_ping->setInterval(5000);
connect(t_ping, SIGNAL(timeout()), SLOT(pingTimeout()));
t_reappear = new QTimer(this);
+ t_reappear->setSingleShot(true);
+ t_reappear->setInterval(30 * 1000);
connect(t_reappear, SIGNAL(timeout()), SLOT(reappearTimeout()));
damage_timer = new QTimer(this);
damage_timer->setSingleShot(true);
+ damage_timer->setInterval(500);
connect(damage_timer, SIGNAL(timeout()), SLOT(damageTimeout()));
MCompAtoms* atoms = MCompAtoms::instance();
@@ -120,16 +124,13 @@ MCompositeWindow::~MCompositeWindow()
{
MCompositeManager *p = (MCompositeManager *) qApp;
- if (window() && (t_ping || t_reappear)) {
+ if (window()) {
stopPing();
- delete t_ping;
- delete t_reappear;
t_ping = t_reappear = 0;
}
endAnimation();
anim = 0;
- delete damage_timer;
if (pc) {
pc->damageTracking(false);
@@ -355,7 +356,7 @@ bool MCompositeWindow::showWindow()
// waiting for two damage events seems to work for Meegotouch apps
// at least, for the rest, there is a timeout
waiting_for_damage = 2;
- damage_timer->start(500);
+ damage_timer->start();
} else
q_fadeIn();
return true;
@@ -547,37 +548,24 @@ void MCompositeWindow::setVisible(bool visible)
void MCompositeWindow::startPing()
{
- if (pinging_enabled || !t_ping)
+ if (t_ping->isActive())
// this function can be called repeatedly without extending the timeout
return;
// startup: send ping now, otherwise it is sent after timeout
- pinging_enabled = true;
pingWindow();
- if (t_ping->isActive())
- t_ping->stop();
- // this could be configurable. But will do for now. Most WMs use 5s delay
- t_ping->setSingleShot(false);
- t_ping->setInterval(5000);
t_ping->start();
}
void MCompositeWindow::stopPing()
{
- pinging_enabled = false;
- if (t_ping)
- t_ping->stop();
- if (t_reappear)
- t_reappear->stop();
+ t_ping->stop();
+ t_reappear->stop();
}
void MCompositeWindow::startDialogReappearTimer()
{
- if (!t_reappear || window_status != Hung)
+ if (window_status != Hung)
return;
- if (t_reappear->isActive())
- t_reappear->stop();
- t_reappear->setSingleShot(true);
- t_reappear->setInterval(30 * 1000);
t_reappear->start();
}
@@ -598,19 +586,18 @@ void MCompositeWindow::receivedPing(ulong serverTimeStamp)
}
if (blurred())
setBlurred(false);
- if (t_reappear->isActive())
- t_reappear->stop();
+ t_reappear->stop();
}
void MCompositeWindow::pingTimeout()
{
- if (pinging_enabled && received_ping_timestamp < sent_ping_timestamp
+ if (received_ping_timestamp < sent_ping_timestamp
&& pc && pc->isMapped() && window_status != Hung
&& window_status != Minimizing && window_status != Closing) {
window_status = Hung;
emit windowHung(this, true);
}
- if (pinging_enabled)
+ if (t_ping->isActive())
// interval timer is still active
pingWindow();
}
diff --git a/src/mcompositewindow.h b/src/mcompositewindow.h
index 3c4c191..7541b66 100644
--- a/src/mcompositewindow.h
+++ b/src/mcompositewindow.h
@@ -416,7 +416,6 @@ private:
bool is_valid;
bool newly_mapped;
bool is_transitioning;
- bool pinging_enabled;
bool dimmed_effect;
char waiting_for_damage;